11# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
22# file Copyright.txt or https://cmake.org/licensing for details.
33
4- cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
4+ cmake_minimum_required (VERSION 3.1...3.12 FATAL_ERROR)
55set (CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR} /Source /Modules/OverrideC.cmake)
66set (CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR} /Source /Modules/OverrideCXX.cmake)
77project (CMake)
@@ -117,6 +117,18 @@ option(CMake_BUILD_DEVELOPER_REFERENCE
117117 "Build CMake Developer Reference" OFF )
118118mark_as_advanced (CMake_BUILD_DEVELOPER_REFERENCE)
119119
120+ # option to build using interprocedural optimizations (IPO/LTO)
121+ if (NOT CMAKE_VERSION VERSION_LESS 3.12.2)
122+ option (CMake_BUILD_LTO "Compile CMake with link-time optimization if supported" OFF )
123+ if (CMake_BUILD_LTO)
124+ include (CheckIPOSupported)
125+ check_ipo_supported(RESULT HAVE_IPO)
126+ if (HAVE_IPO)
127+ set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE )
128+ endif ()
129+ endif ()
130+ endif ()
131+
120132#-----------------------------------------------------------------------
121133# a macro to deal with system libraries, implemented as a macro
122134# simply to improve readability of the main script
@@ -125,10 +137,6 @@ macro(CMAKE_HANDLE_SYSTEM_LIBRARIES)
125137 # Options have dependencies.
126138 include (CMakeDependentOption)
127139
128- # Optionally use system xmlrpc. We no longer build or use it by default.
129- option (CTEST_USE_XMLRPC "Enable xmlrpc submission method in CTest." OFF )
130- mark_as_advanced (CTEST_USE_XMLRPC)
131-
132140 # Allow the user to enable/disable all system utility library options by
133141 # defining CMAKE_USE_SYSTEM_LIBRARIES or CMAKE_USE_SYSTEM_LIBRARY_${util}.
134142 set (UTILITIES BZIP2 CURL EXPAT FORM JSONCPP LIBARCHIVE LIBLZMA LIBRHASH LIBUV ZLIB)
@@ -159,10 +167,8 @@ macro(CMAKE_HANDLE_SYSTEM_LIBRARIES)
159167
160168 # Optionally use system utility libraries.
161169 option (CMAKE_USE_SYSTEM_LIBARCHIVE "Use system-installed libarchive" "${CMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE} " )
162- CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl"
163- "${CMAKE_USE_SYSTEM_LIBRARY_CURL} " "NOT CTEST_USE_XMLRPC" ON )
164- CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat"
165- "${CMAKE_USE_SYSTEM_LIBRARY_EXPAT} " "NOT CTEST_USE_XMLRPC" ON )
170+ option (CMAKE_USE_SYSTEM_CURL "Use system-installed curl" "${CMAKE_USE_SYSTEM_LIBRARY_CURL} " )
171+ option (CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" "${CMAKE_USE_SYSTEM_LIBRARY_EXPAT} " )
166172 CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib"
167173 "${CMAKE_USE_SYSTEM_LIBRARY_ZLIB} " "NOT CMAKE_USE_SYSTEM_LIBARCHIVE;NOT CMAKE_USE_SYSTEM_CURL" ON )
168174 CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_BZIP2 "Use system-installed bzip2"
@@ -200,7 +206,7 @@ endmacro()
200206macro (CMAKE_SETUP_TESTING)
201207 if (BUILD_TESTING)
202208 set (CMAKE_TEST_SYSTEM_LIBRARIES 0)
203- foreach (util CURL EXPAT XMLRPC ZLIB)
209+ foreach (util CURL EXPAT ZLIB)
204210 if (CMAKE_USE_SYSTEM_${util} )
205211 set (CMAKE_TEST_SYSTEM_LIBRARIES 1)
206212 endif ()
@@ -326,6 +332,9 @@ macro (CMAKE_BUILD_UTILITIES)
326332 set (KWSYS_USE_ConsoleBuf 1)
327333 set (KWSYS_HEADER_ROOT ${CMake_BINARY_DIR} /Source )
328334 set (KWSYS_INSTALL_DOC_DIR "${CMAKE_DOC_DIR} " )
335+ if (CMake_NO_CXX_STANDARD)
336+ set (KWSYS_CXX_STANDARD "" )
337+ endif ()
329338 add_subdirectory (Source /kwsys)
330339 set (kwsys_folder "Utilities/KWSys" )
331340 CMAKE_SET_TARGET_FOLDER(${KWSYS_NAMESPACE} "${kwsys_folder} " )
@@ -532,7 +541,7 @@ macro (CMAKE_BUILD_UTILITIES)
532541 #---------------------------------------------------------------------
533542 # Build jsoncpp library.
534543 if (CMAKE_USE_SYSTEM_JSONCPP)
535- find_package (JsonCpp)
544+ find_package (JsonCpp 1.4.1 )
536545 if (NOT JsonCpp_FOUND)
537546 message (FATAL_ERROR
538547 "CMAKE_USE_SYSTEM_JSONCPP is ON but a JsonCpp is not found!" )
@@ -559,18 +568,6 @@ macro (CMAKE_BUILD_UTILITIES)
559568 CMAKE_SET_TARGET_FOLDER(cmlibuv "Utilities/3rdParty" )
560569 endif ()
561570
562- #---------------------------------------------------------------------
563- # Build XMLRPC library for CMake and CTest.
564- if (CTEST_USE_XMLRPC)
565- find_package (XMLRPC QUIET REQUIRED libwww-client)
566- if (NOT XMLRPC_FOUND)
567- message (FATAL_ERROR
568- "CTEST_USE_XMLRPC is ON but xmlrpc is not found!" )
569- endif ()
570- set (CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS} )
571- set (CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES} )
572- endif ()
573-
574571 #---------------------------------------------------------------------
575572 # Use curses?
576573 if (UNIX )
@@ -724,7 +721,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
724721 # the build tree, which is both the build and the install RPATH.
725722 if (UNIX )
726723 if ( CMAKE_USE_SYSTEM_CURL OR CMAKE_USE_SYSTEM_ZLIB
727- OR CMAKE_USE_SYSTEM_EXPAT OR CTEST_USE_XMLRPC OR CURSES_NEED_RPATH OR QT_NEED_RPATH)
724+ OR CMAKE_USE_SYSTEM_EXPAT OR CURSES_NEED_RPATH OR QT_NEED_RPATH)
728725 set (CMAKE_SKIP_RPATH OFF CACHE INTERNAL "CMake built with RPATH." )
729726 set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
730727 set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE )
0 commit comments