summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2007-05-11 09:02:17 -0400
committerKen Martin <ken.martin@kitware.com>2007-05-11 09:02:17 -0400
commit0f0a83a51f8f05636fe33d17d4f21c92e42a06d8 (patch)
tree719769a0daaa53f7d8307ca086beda7eb237c13b /CMakeLists.txt
parentcd0cd47416ef05f1d447885e960062ac8cbc83c1 (diff)
downloadcmake-0f0a83a51f8f05636fe33d17d4f21c92e42a06d8.tar.gz
ENH: more cleanup of some CMakeLists files
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt675
1 files changed, 368 insertions, 307 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d1a3d43842..4c027b6090 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
+#-----------------------------------------------------------------------