Browse Source

Require CMake 2.8.4 or greater to build CMake

This allows the use of the $<TARGET_FILE:...> generator expression as a
replacement for the use of the LOCATION target property.  The use of the
LOCATION target property is now deprecated for in-build targets.

Also drop other checks for older CMake versions:

* Simplify cmake_set_target_folder macro.
* Use find_package(LibArchive) unconditionally.
* Simplify condition for running testVisualStudioSlnParser test.
* Convert two macros to functions.
* Unconditionally run the CTestTestRerunFailed test.
Stephen Kelly 12 years ago
parent
commit
920ffbf50f
3 changed files with 15 additions and 44 deletions
  1. 4 16
      CMakeLists.txt
  2. 1 1
      Tests/CMakeLib/CMakeLists.txt
  3. 10 27
      Tests/CMakeLists.txt

+ 4 - 16
CMakeLists.txt

@@ -9,8 +9,7 @@
 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 # See the License for more information.
 #=============================================================================
-cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)
-set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
+cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
 if(POLICY CMP0025)
   cmake_policy(SET CMP0025 NEW)
 endif()
@@ -196,15 +195,8 @@ mark_as_advanced(CMAKE_USE_FOLDERS)
 macro(CMAKE_SET_TARGET_FOLDER tgt folder)
   if(CMAKE_USE_FOLDERS)
     set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-
-    # Really, I just want this to be an "if(TARGET ${tgt})" ...
-    # but I'm not sure that our min req'd., CMake 2.4.5 can handle
-    # that... so I'm just activating this for now, with a version
-    # compare, and only for MSVC builds.
-    if(MSVC)
-      if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8)
-        set_property(TARGET "${tgt}" PROPERTY FOLDER "${folder}")
-      endif()
+    if(MSVC AND TARGET ${tgt})
+      set_property(TARGET "${tgt}" PROPERTY FOLDER "${folder}")
     endif()
   else()
     set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
@@ -326,11 +318,7 @@ macro (CMAKE_BUILD_UTILITIES)
   #---------------------------------------------------------------------
   # Build or use system libarchive for CMake and CTest.
   if(CMAKE_USE_SYSTEM_LIBARCHIVE)
-    if(EXISTS ${CMAKE_ROOT}/Modules/FindLibArchive.cmake) # added in 2.8.3
-      find_package(LibArchive)
-    else()
-      include(${CMake_SOURCE_DIR}/Modules/FindLibArchive.cmake)
-    endif()
+    find_package(LibArchive)
     if(NOT LibArchive_FOUND)
       message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBARCHIVE is ON but LibArchive is not found!")
     endif()

+ 1 - 1
Tests/CMakeLib/CMakeLists.txt

@@ -12,7 +12,7 @@ set(CMakeLib_TESTS
   testXMLSafe
   )
 
-if(WIN32 AND NOT UNIX) # Just if(WIN32) when CMake >= 2.8.4 is required
+if(WIN32)
   list(APPEND CMakeLib_TESTS
     testVisualStudioSlnParser
     )

+ 10 - 27
Tests/CMakeLists.txt

@@ -1985,12 +1985,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
       "Process file.*foo.py.*Total LOC:.*13.*Percentage Coverage: 84.62.*"
       ENVIRONMENT COVFILE=)
 
-  # Use macro, not function so that build can still be driven by CMake 2.4.
-  # After 2.6 is required, this could be a function without the extra 'set'
-  # calls.
-  #
-  macro(add_config_tests cfg)
-    set(cfg "${cfg}")
+  function(add_config_tests cfg)
     set(base "${CMake_BINARY_DIR}/Tests/CTestConfig")
 
     # Test -S script with a -C config arg to ctest:
@@ -2014,7 +2009,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
     add_test(CTestConfig.Dashboard.${cfg} ${CMAKE_CMAKE_COMMAND}
       -P "${base}/${cfg}-dashboard.cmake" -VV
       )
-  endmacro()
+  endfunction()
 
   add_config_tests(Debug)
   add_config_tests(MinSizeRel)
@@ -2165,15 +2160,12 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
   set_tests_properties(CTestTestTimeout PROPERTIES
     PASS_REGULAR_EXPRESSION "TestTimeout *\\.+ *\\*\\*\\*Timeout.*CheckChild *\\.+ *Passed")
 
-  # this test only runs correctly if WORKING_DIRECTORY is honored.
-  if (NOT CMAKE_VERSION VERSION_LESS "2.8.4")
-    add_test(
-      NAME CTestTestRerunFailed
-      COMMAND ${CMAKE_CTEST_COMMAND} --rerun-failed)
-    set_tests_properties(CTestTestRerunFailed PROPERTIES
-      PASS_REGULAR_EXPRESSION "1/1 Test #1: TestTimeout" DEPENDS CTestTestTimeout
-      WORKING_DIRECTORY ${CMake_BINARY_DIR}/Tests/CTestTestTimeout)
-  endif ()
+  add_test(
+    NAME CTestTestRerunFailed
+    COMMAND ${CMAKE_CTEST_COMMAND} --rerun-failed)
+  set_tests_properties(CTestTestRerunFailed PROPERTIES
+    PASS_REGULAR_EXPRESSION "1/1 Test #1: TestTimeout" DEPENDS CTestTestTimeout
+    WORKING_DIRECTORY ${CMake_BINARY_DIR}/Tests/CTestTestTimeout)
 
   configure_file(
     "${CMake_SOURCE_DIR}/Tests/CTestTestZeroTimeout/test.cmake.in"
@@ -2234,20 +2226,11 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
     --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/testOutput.log"
     )
 
-  # Use macro, not function so that build can still be driven by CMake 2.4.
-  # After 2.6 is required, this could be a function without the extra 'set'
-  # calls.
-  #
-  macro(add_failed_submit_test name source build in out log regex)
-    # Have variables named source, build and drop_method because the
-    # configure_file call expects those variables to be defined.
-    #
-    set(source "${source}")
-    set(build "${build}")
+  function(add_failed_submit_test name source build in out log regex)
     configure_file("${in}" "${out}" @ONLY)
     add_test(${name} ${CMAKE_CTEST_COMMAND} -S "${out}" -V --output-log "${log}")
     set_tests_properties(${name} PROPERTIES PASS_REGULAR_EXPRESSION "${regex}")
-  endmacro()
+  endfunction()
 
   set(regex "(Problems when submitting via S*CP")
   set(regex "${regex}|Error message was: ")