diff options
author | Ken Martin <ken.martin@kitware.com> | 2007-05-11 13:02:17 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2007-05-11 13:02:17 (GMT) |
commit | 0f0a83a51f8f05636fe33d17d4f21c92e42a06d8 (patch) | |
tree | 719769a0daaa53f7d8307ca086beda7eb237c13b /CMakeLists.txt | |
parent | cd0cd47416ef05f1d447885e960062ac8cbc83c1 (diff) | |
download | CMake-0f0a83a51f8f05636fe33d17d4f21c92e42a06d8.zip CMake-0f0a83a51f8f05636fe33d17d4f21c92e42a06d8.tar.gz CMake-0f0a83a51f8f05636fe33d17d4f21c92e42a06d8.tar.bz2 |
ENH: more cleanup of some CMakeLists files
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 675 |
1 files changed, 368 insertions, 307 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d1a3d43..4c027b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,341 @@ PROJECT(CMake) CMAKE_MINIMUM_REQUIRED(VERSION 2.0) MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY) + + +#----------------------------------------------------------------------- +# a macro to deal with system libraries, implemented as a macro +# simply to improve readability of the main script +#----------------------------------------------------------------------- +MACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES) + # Third party libraries must be something that can be found. + IF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) + SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 1) + ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) + SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 0) + ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) + + IF(CMAKE_ALLOW_SYSTEM_LIBRARIES) + # Options have dependencies. + INCLUDE(CMakeDependentOption) + + # Allow the user to enable/disable all system utility library options + # by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line. + IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1) + ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) + IF(CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES ON) + ELSE(CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES OFF) + ENDIF(CMAKE_USE_SYSTEM_LIBRARIES) + IF(CMAKE_USE_SYSTEM_LIBRARIES_USER) + SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed curl" FORCE) + SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed expat" FORCE) + SET(CMAKE_USE_SYSTEM_XMLRPC "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed xmlrpc" FORCE) + SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed zlib" FORCE) + ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER) + + # Optionally use system utility libraries. + OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" + ${CMAKE_USE_SYSTEM_LIBRARIES}) + OPTION(CMAKE_USE_SYSTEM_XMLRPC "Use system-installed xmlrpc" + ${CMAKE_USE_SYSTEM_LIBRARIES}) + CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" + ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_XMLRPC" ON) + CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib" + ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_CURL" ON) + + # There is currently no option for system tar because the upstream + # libtar does not have our modifications to allow reentrant + # object-oriented use of the library. + # OPTION(CMAKE_USE_SYSTEM_TAR "Use system-installed tar" OFF) + ELSE(CMAKE_ALLOW_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_CURL 0) + SET(CMAKE_USE_SYSTEM_EXPAT 0) + SET(CMAKE_USE_SYSTEM_XMLRPC 0) + SET(CMAKE_USE_SYSTEM_ZLIB 0) + ENDIF(CMAKE_ALLOW_SYSTEM_LIBRARIES) + + + # Mention to the user what system libraries are being used. + FOREACH(util CURL EXPAT XMLRPC ZLIB) + IF(CMAKE_USE_SYSTEM_${util}) + MESSAGE(STATUS "Using system-installed ${util}") + ENDIF(CMAKE_USE_SYSTEM_${util}) + ENDFOREACH(util) + + # Inform utility library header wrappers whether to use system versions. + CONFIGURE_FILE(${CMake_SOURCE_DIR}/Utilities/cmThirdParty.h.in + ${CMake_BINARY_DIR}/Utilities/cmThirdParty.h + @ONLY) + +ENDMACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES) + + + +#----------------------------------------------------------------------- +# a macro to check for MFC and setup to build the MFC Dialog +# simply to improve readability of the main script +#----------------------------------------------------------------------- +MACRO(CMAKE_TEST_FOR_MFC) + SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0) + IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) + SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1) + ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) + + IF(CMAKE_BUILD_ON_VISUAL_STUDIO) + IF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") + SET(CHECK_INCLUDE_FILE_VAR "afxwin.h") + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx) + MESSAGE(STATUS "Looking for MFC") + TRY_COMPILE(CMake_HAVE_MFC + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx + CMAKE_FLAGS + -DCMAKE_MFC_FLAG:STRING=2 + -DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL + OUTPUT_VARIABLE OUTPUT) + IF(CMake_HAVE_MFC) + MESSAGE(STATUS "Looking for MFC - found") + SET(CMake_HAVE_MFC 1 CACHE INTERNAL "Have MFC?") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if MFC exists passed with the following output:\n" + "${OUTPUT}\n\n") + ELSE(CMake_HAVE_MFC) + MESSAGE(STATUS "Looking for MFC - not found") + SET(CMake_HAVE_MFC 0 CACHE INTERNAL "Have MFC?") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if MFC exists failed with the following output:\n" + "${OUTPUT}\n\n") + ENDIF(CMake_HAVE_MFC) + ENDIF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") + + IF(CMake_HAVE_MFC) + OPTION(BUILD_MFCDialog "Whether to build the CMakeSetup MFC dialog." ON) + ELSE(CMake_HAVE_MFC) + SET(BUILD_MFCDialog 0) + ENDIF(CMake_HAVE_MFC) + ELSE(CMAKE_BUILD_ON_VISUAL_STUDIO) + SET(BUILD_MFCDialog 0) + ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) +ENDMACRO(CMAKE_TEST_FOR_MFC) + + + +#----------------------------------------------------------------------- +# a macro to determine the generator and ctest executable to use +# for testing. Simply to improve readability of the main script. +#----------------------------------------------------------------------- +MACRO(CMAKE_SETUP_TESTING) + IF (NOT DART_ROOT) + SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM}) + ENDIF (NOT DART_ROOT) + + IF(BUILD_TESTING) + SET(CMAKE_TEST_GENERATOR "" CACHE STRING + "Generator used when running tests") + SET(CMAKE_TEST_MAKEPROGRAM "" CACHE FILEPATH + "Generator used when running tests") + IF(NOT CMAKE_TEST_GENERATOR) + SET(CMAKE_TEST_GENERATOR "${CMAKE_GENERATOR}") + SET(CMAKE_TEST_MAKEPROGRAM "${MAKEPROGRAM}") + ELSE(NOT CMAKE_TEST_GENERATOR) + SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE) + ENDIF(NOT CMAKE_TEST_GENERATOR) + + # Are we testing with the MSVC compiler? + SET(CMAKE_TEST_MSVC 0) + IF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) + SET(CMAKE_TEST_MSVC 1) + ELSE(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) + IF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR + "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio") + SET(CMAKE_TEST_MSVC 1) + ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR + "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio") + ENDIF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) + + SET(CMAKE_TEST_SYSTEM_LIBRARIES 0) + FOREACH(util CURL EXPAT XMLRPC ZLIB) + IF(CMAKE_USE_SYSTEM_${util}) + SET(CMAKE_TEST_SYSTEM_LIBRARIES 1) + ENDIF(CMAKE_USE_SYSTEM_${util}) + ENDFOREACH(util) + + # This variable is set by cmake, however to + # test cmake we want to make sure that + # the ctest from this cmake is used for testing + # and not the ctest from the cmake building and testing + # cmake. + SET(CMAKE_CTEST_COMMAND "${EXECUTABLE_OUTPUT_PATH}/ctest") + SET(CMAKE_CMAKE_COMMAND "${EXECUTABLE_OUTPUT_PATH}/cmake") + ENDIF(BUILD_TESTING) + + # configure some files for testing + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/Templates/CTestScript.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/CTestScript.cmake" + @ONLY) + CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/.NoDartCoverage + ${CMake_BINARY_DIR}/Tests/.NoDartCoverage) + CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/.NoDartCoverage + ${CMake_BINARY_DIR}/Modules/.NoDartCoverage) + CONFIGURE_FILE(${CMake_SOURCE_DIR}/CTestCustom.ctest.in + ${CMake_BINARY_DIR}/CTestCustom.ctest @ONLY) + IF(BUILD_TESTING AND DART_ROOT) + CONFIGURE_FILE(${CMake_SOURCE_DIR}/CMakeLogo.gif + ${CMake_BINARY_DIR}/Testing/HTML/TestingResults/Icons/Logo.gif COPYONLY) + ENDIF(BUILD_TESTING AND DART_ROOT) + MARK_AS_ADVANCED(DART_ROOT) + MARK_AS_ADVANCED(CURL_TESTING) +ENDMACRO(CMAKE_SETUP_TESTING) + + + +#----------------------------------------------------------------------- +# a macro to build the utilities used by CMake +# Simply to improve readability of the main script. +#----------------------------------------------------------------------- +MACRO (CMAKE_BUILD_UTILITIES) + #--------------------------------------------------------------------- + # Create the kwsys library for CMake. + SET(KWSYS_NAMESPACE cmsys) + SET(KWSYS_USE_SystemTools 1) + SET(KWSYS_USE_Directory 1) + SET(KWSYS_USE_RegularExpression 1) + SET(KWSYS_USE_Base64 1) + SET(KWSYS_USE_MD5 1) + SET(KWSYS_USE_Process 1) + SET(KWSYS_USE_CommandLineArguments 1) + SET(KWSYS_HEADER_ROOT ${CMake_BINARY_DIR}/Source) + ADD_SUBDIRECTORY(Source/kwsys) + + #--------------------------------------------------------------------- + # Setup third-party libraries. + # Everything in the tree should be able to include files from the + # Utilities directory. + INCLUDE_DIRECTORIES( + ${CMake_SOURCE_DIR}/Utilities + ${CMake_BINARY_DIR}/Utilities + ) + + # check for the use of system libraries versus builtin ones + CMAKE_HANDLE_SYSTEM_LIBRARIES() + + #--------------------------------------------------------------------- + # Build zlib library for Curl, CMake, and CTest. + SET(CMAKE_ZLIB_HEADER "cm_zlib.h") + IF(CMAKE_USE_SYSTEM_ZLIB) + FIND_PACKAGE(ZLIB) + IF(NOT ZLIB_FOUND) + MESSAGE(FATAL_ERROR + "CMAKE_USE_SYSTEM_ZLIB is ON but a zlib is not found!") + ENDIF(NOT ZLIB_FOUND) + SET(CMAKE_ZLIB_INCLUDES ${ZLIB_INCLUDE_DIR}) + SET(CMAKE_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) + ELSE(CMAKE_USE_SYSTEM_ZLIB) + SET(CMAKE_ZLIB_INCLUDES) + SET(CMAKE_ZLIB_LIBRARIES cmzlib) + ADD_SUBDIRECTORY(Utilities/cmzlib) + ENDIF(CMAKE_USE_SYSTEM_ZLIB) + + #--------------------------------------------------------------------- + # Build Curl library for CTest. + IF(CMAKE_USE_SYSTEM_CURL) + FIND_PACKAGE(CURL) + IF(NOT CURL_FOUND) + MESSAGE(FATAL_ERROR + "CMAKE_USE_SYSTEM_CURL is ON but a curl is not found!") + ENDIF(NOT CURL_FOUND) + SET(CMAKE_CURL_INCLUDES ${CURL_INCLUDE_DIRS}) + SET(CMAKE_CURL_LIBRARIES ${CURL_LIBRARIES}) + ELSE(CMAKE_USE_SYSTEM_CURL) + SET(CURL_SPECIAL_ZLIB_H ${CMAKE_ZLIB_HEADER}) + SET(CURL_SPECIAL_LIBZ_INCLUDES ${CMAKE_ZLIB_INCLUDES}) + SET(CURL_SPECIAL_LIBZ ${CMAKE_ZLIB_LIBRARIES}) + ADD_DEFINITIONS(-DCURL_STATICLIB) + SET(CMAKE_CURL_INCLUDES) + SET(CMAKE_CURL_LIBRARIES cmcurl) + ADD_SUBDIRECTORY(Utilities/cmcurl) + ENDIF(CMAKE_USE_SYSTEM_CURL) + + #--------------------------------------------------------------------- + # Build Tar library for CTest. + SET(CMTAR_ZLIB_HEADER ${CMAKE_ZLIB_HEADER}) + SET(CMTAR_ZLIB_LIBRARIES ${CMAKE_ZLIB_LIBRARIES}) + SET(CMTAR_ZLIB_INCLUDE_DIRS ${CMAKE_ZLIB_INCLUDES}) + SET(CMAKE_TAR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmtar) + SET(CMAKE_TAR_LIBRARIES cmtar) + ADD_SUBDIRECTORY(Utilities/cmtar) + + #--------------------------------------------------------------------- + # Build Compress library for CTest. + SET(CMAKE_COMPRESS_INCLUDES + "${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmcompress") + SET(CMAKE_COMPRESS_LIBRARIES "cmcompress") + ADD_SUBDIRECTORY(Utilities/cmcompress) + + #--------------------------------------------------------------------- + # Build expat library for CMake and CTest. + IF(CMAKE_USE_SYSTEM_EXPAT) + FIND_PACKAGE(EXPAT) + IF(NOT EXPAT_FOUND) + MESSAGE(FATAL_ERROR + "CMAKE_USE_SYSTEM_EXPAT is ON but a expat is not found!") + ENDIF(NOT EXPAT_FOUND) + SET(CMAKE_EXPAT_INCLUDES ${EXPAT_INCLUDE_DIRS}) + SET(CMAKE_EXPAT_LIBRARIES ${EXPAT_LIBRARIES}) + ELSE(CMAKE_USE_SYSTEM_EXPAT) + SET(CMAKE_EXPAT_INCLUDES) + SET(CMAKE_EXPAT_LIBRARIES cmexpat) + ADD_SUBDIRECTORY(Utilities/cmexpat) + ENDIF(CMAKE_USE_SYSTEM_EXPAT) + + #--------------------------------------------------------------------- + # Build XMLRPC library for CMake and CTest. + IF(CMAKE_USE_SYSTEM_XMLRPC) + FIND_PACKAGE(XMLRPC QUIET REQUIRED libwww-client) + IF(NOT XMLRPC_FOUND) + MESSAGE(FATAL_ERROR + "CMAKE_USE_SYSTEM_XMLRPC is ON but a xmlrpc is not found!") + ENDIF(NOT XMLRPC_FOUND) + SET(CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS}) + SET(CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES}) + ELSE(CMAKE_USE_SYSTEM_XMLRPC) + SET(CMAKE_XMLRPC_INCLUDES) + SET(CMAKE_XMLRPC_LIBRARIES cmXMLRPC) + ADD_SUBDIRECTORY(Utilities/cmxmlrpc) + ENDIF(CMAKE_USE_SYSTEM_XMLRPC) + + #--------------------------------------------------------------------- + # Use curses? + IF (UNIX) + FIND_PACKAGE(Curses QUIET) + IF (CURSES_LIBRARY) + OPTION(BUILD_CursesDialog "Build the CMake Curses Dialog ccmake" ON) + ELSE (CURSES_LIBRARY) + MESSAGE("Curses libraries were not found. Curses GUI for CMake will not be built.") + SET(BUILD_CursesDialog 0) + ENDIF (CURSES_LIBRARY) + ELSE (UNIX) + SET(BUILD_CursesDialog 0) + ENDIF (UNIX) + IF(BUILD_CursesDialog) + ADD_SUBDIRECTORY(Source/CursesDialog/form) + ENDIF(BUILD_CursesDialog) +ENDMACRO (CMAKE_BUILD_UTILITIES) + + + +#----------------------------------------------------------------------- +# The main section of the CMakeLists file +# +#----------------------------------------------------------------------- # The CMake version number. SET(CMake_VERSION_MAJOR 2) SET(CMake_VERSION_MINOR 5) @@ -9,7 +344,17 @@ SET(CMake_VERSION_PATCH 0) SET(CMake_VERSION "${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") SET(CMake_VERSION_FULL "${CMake_VERSION}.${CMake_VERSION_PATCH}") +# Include the standard Dart testing module +ENABLE_TESTING() +INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake) + +# where to write the resulting executables and libraries SET(BUILD_SHARED_LIBS OFF) +SET(EXECUTABLE_OUTPUT_PATH ${CMake_BINARY_DIR}/bin CACHE INTERNAL + "Where to put the executables for CMake") +SET(LIBRARY_OUTPUT_PATH "" CACHE INTERNAL + "Where to put the libraries for CMake") +INCLUDE_REGULAR_EXPRESSION("^.*$") # The CMake executables do not need any rpath to run in the build or # install tree. @@ -23,331 +368,47 @@ SET(CMAKE_MAN_DIR "/man" CACHE STRING "Install location for man pages (relative to prefix).") MARK_AS_ADVANCED(CMAKE_DATA_DIR CMAKE_DOC_DIR CMAKE_MAN_DIR) -# include special compile flags for osme compilers +# include special compile flags for some compilers INCLUDE(CompileFlags.cmake) -#----------------------------------------------------------------------------- -# Create the kwsys library for CMake. -SET(KWSYS_NAMESPACE cmsys) -SET(KWSYS_USE_SystemTools 1) -SET(KWSYS_USE_Directory 1) -SET(KWSYS_USE_RegularExpression 1) -SET(KWSYS_USE_Base64 1) -SET(KWSYS_USE_MD5 1) -SET(KWSYS_USE_Process 1) -SET(KWSYS_USE_CommandLineArguments 1) -SET(KWSYS_HEADER_ROOT ${CMake_BINARY_DIR}/Source) -SUBDIRS(Source/kwsys) - -#----------------------------------------------------------------------------- -# Setup third-party libraries. - -# Everything in the tree should be able to include files from the -# Utilities directory. -INCLUDE_DIRECTORIES( - ${CMake_SOURCE_DIR}/Utilities - ${CMake_BINARY_DIR}/Utilities - ) - -# Third party libraries must be something that can be found. -IF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 1) -ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 0) -ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - -IF(CMAKE_ALLOW_SYSTEM_LIBRARIES) - # Options have dependencies. - INCLUDE(CMakeDependentOption) - - # Allow the user to enable/disable all system utility library options - # by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line. - IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1) - ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES ON) - ELSE(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES OFF) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES_USER) - SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed curl" FORCE) - SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed expat" FORCE) - SET(CMAKE_USE_SYSTEM_XMLRPC "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed xmlrpc" FORCE) - SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed zlib" FORCE) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER) - - # Optionally use system utility libraries. - OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" ${CMAKE_USE_SYSTEM_LIBRARIES}) - OPTION(CMAKE_USE_SYSTEM_XMLRPC "Use system-installed xmlrpc" ${CMAKE_USE_SYSTEM_LIBRARIES}) - CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_XMLRPC" ON) - CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_CURL" ON) - - # There is currently no option for system tar because the upstream - # libtar does not have our modifications to allow reentrant - # object-oriented use of the library. - # OPTION(CMAKE_USE_SYSTEM_TAR "Use system-installed tar" OFF) -ELSE(CMAKE_ALLOW_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_CURL 0) - SET(CMAKE_USE_SYSTEM_EXPAT 0) - SET(CMAKE_USE_SYSTEM_XMLRPC 0) - SET(CMAKE_USE_SYSTEM_ZLIB 0) -ENDIF(CMAKE_ALLOW_SYSTEM_LIBRARIES) - -# Inform utility library header wrappers whether to use system versions. -CONFIGURE_FILE(${CMake_SOURCE_DIR}/Utilities/cmThirdParty.h.in - ${CMake_BINARY_DIR}/Utilities/cmThirdParty.h - @ONLY IMMEDIATE) - -# Mention to the user what system libraries are being used. -FOREACH(util CURL EXPAT XMLRPC ZLIB) - IF(CMAKE_USE_SYSTEM_${util}) - MESSAGE(STATUS "Using system-installed ${util}") - ENDIF(CMAKE_USE_SYSTEM_${util}) -ENDFOREACH(util) - -#----------------------------------------------------------------------------- -# Build zlib library for Curl, CMake, and CTest. -SET(CMAKE_ZLIB_HEADER "cm_zlib.h") -IF(CMAKE_USE_SYSTEM_ZLIB) - FIND_PACKAGE(ZLIB) - IF(NOT ZLIB_FOUND) - MESSAGE(FATAL_ERROR "CMAKE_USE_SYSTEM_ZLIB is ON but a zlib is not found!") - ENDIF(NOT ZLIB_FOUND) - SET(CMAKE_ZLIB_INCLUDES ${ZLIB_INCLUDE_DIR}) - SET(CMAKE_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) -ELSE(CMAKE_USE_SYSTEM_ZLIB) - SUBDIRS(Utilities/cmzlib) - SET(CMAKE_ZLIB_INCLUDES) - SET(CMAKE_ZLIB_LIBRARIES cmzlib) -ENDIF(CMAKE_USE_SYSTEM_ZLIB) - -#----------------------------------------------------------------------------- -# Build Curl library for CTest. -IF(CMAKE_USE_SYSTEM_CURL) - FIND_PACKAGE(CURL) - IF(NOT CURL_FOUND) - MESSAGE(FATAL_ERROR "CMAKE_USE_SYSTEM_CURL is ON but a curl is not found!") - ENDIF(NOT CURL_FOUND) - SET(CMAKE_CURL_INCLUDES ${CURL_INCLUDE_DIRS}) - SET(CMAKE_CURL_LIBRARIES ${CURL_LIBRARIES}) -ELSE(CMAKE_USE_SYSTEM_CURL) - SET(CURL_SPECIAL_ZLIB_H ${CMAKE_ZLIB_HEADER}) - SET(CURL_SPECIAL_LIBZ_INCLUDES ${CMAKE_ZLIB_INCLUDES}) - SET(CURL_SPECIAL_LIBZ ${CMAKE_ZLIB_LIBRARIES}) - ADD_DEFINITIONS(-DCURL_STATICLIB) - SUBDIRS(Utilities/cmcurl) - SET(CMAKE_CURL_INCLUDES) - SET(CMAKE_CURL_LIBRARIES cmcurl) -ENDIF(CMAKE_USE_SYSTEM_CURL) - -#----------------------------------------------------------------------------- -# Build Tar library for CTest. -SET(CMTAR_ZLIB_HEADER ${CMAKE_ZLIB_HEADER}) -SET(CMTAR_ZLIB_LIBRARIES ${CMAKE_ZLIB_LIBRARIES}) -SET(CMTAR_ZLIB_INCLUDE_DIRS ${CMAKE_ZLIB_INCLUDES}) -SUBDIRS(Utilities/cmtar) -SET(CMAKE_TAR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmtar) -SET(CMAKE_TAR_LIBRARIES cmtar) - -#----------------------------------------------------------------------------- -# Build Compress library for CTest. -SUBDIRS(Utilities/cmcompress) -SET(CMAKE_COMPRESS_INCLUDES "${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmcompress") -SET(CMAKE_COMPRESS_LIBRARIES "cmcompress") - -#----------------------------------------------------------------------------- -# Build expat library for CMake and CTest. -IF(CMAKE_USE_SYSTEM_EXPAT) - FIND_PACKAGE(EXPAT) - IF(NOT EXPAT_FOUND) - MESSAGE(FATAL_ERROR - "CMAKE_USE_SYSTEM_EXPAT is ON but a expat is not found!") - ENDIF(NOT EXPAT_FOUND) - SET(CMAKE_EXPAT_INCLUDES ${EXPAT_INCLUDE_DIRS}) - SET(CMAKE_EXPAT_LIBRARIES ${EXPAT_LIBRARIES}) -ELSE(CMAKE_USE_SYSTEM_EXPAT) - SUBDIRS(Utilities/cmexpat) - SET(CMAKE_EXPAT_INCLUDES) - SET(CMAKE_EXPAT_LIBRARIES cmexpat) -ENDIF(CMAKE_USE_SYSTEM_EXPAT) - -#----------------------------------------------------------------------------- -# Build XMLRPC library for CMake and CTest. -IF(CMAKE_USE_SYSTEM_XMLRPC) - FIND_PACKAGE(XMLRPC QUIET REQUIRED libwww-client) - IF(NOT XMLRPC_FOUND) - MESSAGE(FATAL_ERROR - "CMAKE_USE_SYSTEM_XMLRPC is ON but a xmlrpc is not found!") - ENDIF(NOT XMLRPC_FOUND) - SET(CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS}) - SET(CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES}) -ELSE(CMAKE_USE_SYSTEM_XMLRPC) - SUBDIRS(Utilities/cmxmlrpc) - SET(CMAKE_XMLRPC_INCLUDES) - SET(CMAKE_XMLRPC_LIBRARIES cmXMLRPC) -ENDIF(CMAKE_USE_SYSTEM_XMLRPC) - -IF (UNIX) - FIND_PACKAGE(Curses QUIET) - IF (CURSES_LIBRARY) - OPTION(BUILD_CursesDialog "Build the CMake Curses Dialog ccmake" ON) - ELSE (CURSES_LIBRARY) - MESSAGE("Curses libraries were not found. Curses GUI for CMake will not be build.") - SET(BUILD_CursesDialog 0) - ENDIF (CURSES_LIBRARY) -ELSE (UNIX) - SET(BUILD_CursesDialog 0) -ENDIF (UNIX) - -IF(BUILD_CursesDialog) - SUBDIRS(Source/CursesDialog/form) -ENDIF(BUILD_CursesDialog) - +# no clue why we are testing for this here INCLUDE(CheckSymbolExists) CHECK_SYMBOL_EXISTS(unsetenv "stdlib.h" HAVE_UNSETENV) CHECK_SYMBOL_EXISTS(environ "stdlib.h" HAVE_ENVIRON_NOT_REQUIRE_PROTOTYPE) -SUBDIRS(Source Modules Templates Utilities Tests/CMakeTests) -ENABLE_TESTING() +# build the utilities (a macro defined in this file) +CMAKE_BUILD_UTILITIES() -# Include the standard Dart testing module -INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake) - -# add some testing dependencies -IF(BUILD_TESTING) - IF (DART_ROOT) - CONFIGURE_FILE(${CMake_SOURCE_DIR}/CMakeLogo.gif ${CMake_BINARY_DIR}/Testing/HTML/TestingResults/Icons/Logo.gif COPYONLY) - ENDIF (DART_ROOT) -ENDIF(BUILD_TESTING) -MARK_AS_ADVANCED(DART_ROOT) -MARK_AS_ADVANCED(CURL_TESTING) - -SET(EXECUTABLE_OUTPUT_PATH ${CMake_BINARY_DIR}/bin CACHE INTERNAL - "Where to put the executables for CMake" - ) -SET(LIBRARY_OUTPUT_PATH "" CACHE INTERNAL - "Where to put the libraries for CMake" - ) - -INCLUDE_REGULAR_EXPRESSION("^.*$") - -# configure some files for testing -CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/.NoDartCoverage - ${CMake_BINARY_DIR}/Tests/.NoDartCoverage) -CONFIGURE_FILE(${CMake_SOURCE_DIR}/Tests/.NoDartCoverage - ${CMake_BINARY_DIR}/Modules/.NoDartCoverage) -CONFIGURE_FILE(${CMake_SOURCE_DIR}/CTestCustom.ctest.in - ${CMake_BINARY_DIR}/CTestCustom.ctest @ONLY) - -SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0) -IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) - SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1) -ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) - -IF(CMAKE_BUILD_ON_VISUAL_STUDIO) - IF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") - SET(CHECK_INCLUDE_FILE_VAR "afxwin.h") - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx IMMEDIATE) - MESSAGE(STATUS "Looking for MFC") - TRY_COMPILE(CMake_HAVE_MFC - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx - CMAKE_FLAGS - -DCMAKE_MFC_FLAG:STRING=2 - -DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL - OUTPUT_VARIABLE OUTPUT) - IF(CMake_HAVE_MFC) - MESSAGE(STATUS "Looking for MFC - found") - SET(CMake_HAVE_MFC 1 CACHE INTERNAL "Have MFC?") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if MFC exists passed with the following output:\n" - "${OUTPUT}\n\n") - ELSE(CMake_HAVE_MFC) - MESSAGE(STATUS "Looking for MFC - not found") - SET(CMake_HAVE_MFC 0 CACHE INTERNAL "Have MFC?") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if MFC exists failed with the following output:\n" - "${OUTPUT}\n\n") - ENDIF(CMake_HAVE_MFC) - ENDIF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") - - IF(CMake_HAVE_MFC) - OPTION(BUILD_MFCDialog "Whether to build the CMakeSetup MFC dialog." ON) - ELSE(CMake_HAVE_MFC) - SET(BUILD_MFCDialog 0) - ENDIF(CMake_HAVE_MFC) -ELSE(CMAKE_BUILD_ON_VISUAL_STUDIO) - SET(BUILD_MFCDialog 0) -ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) +# should we build the MFC dialog? (a macro defined in this file) +CMAKE_TEST_FOR_MFC() +# add the uninstall support CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - + @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") # include support for making the release INCLUDE (${CMake_SOURCE_DIR}/Utilities/Release/Release.cmake) - -# include CPack Support INCLUDE (CMakeCPack.cmake) -# configure the CTestScript.cmake file into the binary directory -CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/Templates/CTestScript.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/CTestScript.cmake" - @ONLY IMMEDIATE) - -# Testing -IF (NOT DART_ROOT) - SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM}) -ENDIF (NOT DART_ROOT) - -IF(BUILD_TESTING) - SET(CMAKE_TEST_GENERATOR "" CACHE STRING "Generator used when running tests") - SET(CMAKE_TEST_MAKEPROGRAM "" CACHE FILEPATH "Generator used when running tests") - IF(NOT CMAKE_TEST_GENERATOR) - SET(CMAKE_TEST_GENERATOR "${CMAKE_GENERATOR}") - SET(CMAKE_TEST_MAKEPROGRAM "${MAKEPROGRAM}") - ELSE(NOT CMAKE_TEST_GENERATOR) - SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE) - ENDIF(NOT CMAKE_TEST_GENERATOR) - - # Are we testing with the MSVC compiler? - SET(CMAKE_TEST_MSVC 0) - IF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) - SET(CMAKE_TEST_MSVC 1) - ELSE(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) - IF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR - "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio") - SET(CMAKE_TEST_MSVC 1) - ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR - "${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio") - ENDIF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR) - - SET(CMAKE_TEST_SYSTEM_LIBRARIES 0) - FOREACH(util CURL EXPAT XMLRPC ZLIB) - IF(CMAKE_USE_SYSTEM_${util}) - SET(CMAKE_TEST_SYSTEM_LIBRARIES 1) - ENDIF(CMAKE_USE_SYSTEM_${util}) - ENDFOREACH(util) +# setup some Testing support (a macro defined in this file) +CMAKE_SETUP_TESTING() - # This variable is set by cmake, however to - # test cmake we want to make sure that - # the ctest from this cmake is used for testing - # and not the ctest from the cmake building and testing - # cmake. - SET(CMAKE_CTEST_COMMAND "${EXECUTABLE_OUTPUT_PATH}/ctest") - SET(CMAKE_CMAKE_COMMAND "${EXECUTABLE_OUTPUT_PATH}/cmake") -ENDIF(BUILD_TESTING) +# build the remaining subdirectories +ADD_SUBDIRECTORY(Source) +ADD_SUBDIRECTORY(Modules) +ADD_SUBDIRECTORY(Templates) +ADD_SUBDIRECTORY(Utilities) +ADD_SUBDIRECTORY(Tests) +ADD_SUBDIRECTORY(Tests/CMakeTests) -ADD_TEST(SystemInformationNew - "${CMAKE_CMAKE_COMMAND}" --system-information - -G "${CMAKE_TEST_GENERATOR}" - ) +# add a test +ADD_TEST(SystemInformationNew "${CMAKE_CMAKE_COMMAND}" + --system-information -G "${CMAKE_TEST_GENERATOR}" ) +#----------------------------------------------------------------------- +# End of the main section of the CMakeLists file +#----------------------------------------------------------------------- |