Explorar el Código

Merge topic 'test-cray-clang'

a5f5a87482 Tests/RunCMake/if: Optionally skip checking write-only directory permissions
2a37015319 Tests/FortranModules: Skip submodules with Cray Fortran compiler
fa4ac78f4a Tests/FortranModules: Simplify check for submodules support
2c28321adb Tests: Combine conditions for BundleUtilities test
6dfd8e19b5 GetPrerequisites: Recognize CrayPE system libraries

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10464
Brad King hace 9 meses
padre
commit
5d1ec25c60

+ 2 - 1
Modules/GetPrerequisites.cmake

@@ -512,7 +512,8 @@ function(gp_resolved_file_type original_file file exepath dirs type_var)
     string(TOLOWER "${resolved_file}" lower)
 
     if(UNIX)
-      if(resolved_file MATCHES "^/*(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
+      if(resolved_file MATCHES "^/*(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)" OR
+         resolved_file MATCHES "/cce/.*/lib/lib[^/]+\.so\\.[0-9][^/]*$")
         set(is_system 1)
       endif()
     endif()

+ 8 - 7
Tests/CMakeLists.txt

@@ -610,11 +610,11 @@ if(BUILD_TESTING)
   endif()
 
   # run test for BundleUtilities on supported platforms/compilers
-  if(MSVC OR
-     MINGW OR
-     CMAKE_SYSTEM_NAME MATCHES "Linux" OR
-     CMAKE_SYSTEM_NAME MATCHES "Darwin")
-  if(NOT "${CMAKE_GENERATOR}" STREQUAL "Watcom WMake")
+  if((MSVC OR
+      MINGW OR
+      CMAKE_SYSTEM_NAME MATCHES "Linux" OR
+      CMAKE_SYSTEM_NAME MATCHES "Darwin")
+    AND NOT CMAKE_GENERATOR STREQUAL "Watcom WMake")
 
     add_test(BundleUtilities ${CMAKE_CTEST_COMMAND}
       --build-and-test
@@ -642,7 +642,6 @@ if(BUILD_TESTING)
     endif()
 
   endif()
-  endif()
 
   set(CMAKE_BUILD_TEST_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/COnly")
   set(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")
@@ -3261,6 +3260,9 @@ if(BUILD_TESTING)
         # FIXME(lfortran): The compiler fails on the test's modules.
         AND NOT CMAKE_Fortran_COMPILER_ID STREQUAL "LFortran"
         )
+      if(DEFINED CMake_TEST_Fortran_SUBMODULES)
+        list(PREPEND CMake_TEST_FortranModules_BUILD_OPTIONS -DCMake_TEST_Fortran_SUBMODULES:BOOL=${CMake_TEST_Fortran_SUBMODULES})
+      endif()
       add_test(FortranModules ${CMAKE_CTEST_COMMAND}
         --build-and-test
         "${CMake_SOURCE_DIR}/Tests/FortranModules"
@@ -3269,7 +3271,6 @@ if(BUILD_TESTING)
         --build-project FortranModules
         --build-options
           -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
-          -DCMake_TEST_Fortran_SUBMODULES:BOOL=${CMake_TEST_Fortran_SUBMODULES}
           ${CMake_TEST_FortranModules_BUILD_OPTIONS}
         )
       list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranModules")

+ 8 - 3
Tests/FortranModules/CMakeLists.txt

@@ -10,9 +10,14 @@ if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "V
   set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
 endif()
 
-if("x${CMake_TEST_Fortran_SUBMODULES}" STREQUAL "x"
-    AND NOT CMAKE_VERSION VERSION_LESS 3.6.20160923 # for CheckFortranSourceCompiles SRC_EXT
-    )
+if(NOT DEFINED CMake_TEST_Fortran_SUBMODULES AND (
+    # FIXME(#18925): We do not support Cray's module file names.
+    CMAKE_Fortran_COMPILER_ID STREQUAL "Cray"
+    ))
+  set(CMake_TEST_Fortran_SUBMODULES 0)
+endif()
+
+if(NOT DEFINED CMake_TEST_Fortran_SUBMODULES)
   include(CheckFortranSourceCompiles)
   CHECK_Fortran_SOURCE_COMPILES([[
 module parent

+ 3 - 0
Tests/RunCMake/CMakeLists.txt

@@ -708,6 +708,9 @@ add_RunCMake_test(function)
 add_RunCMake_test(block)
 add_RunCMake_test(get_filename_component)
 add_RunCMake_test(get_property)
+if(DEFINED CMake_TEST_NO_WRITE_ONLY_DIR)
+  list(APPEND if_ARGS -DCMake_TEST_NO_WRITE_ONLY_DIR=${CMake_TEST_NO_WRITE_ONLY_DIR})
+endif()
 add_RunCMake_test(if -DMSYS=${MSYS})
 add_RunCMake_test(include)
 add_RunCMake_test(include_directories)

+ 14 - 10
Tests/RunCMake/if/FilePermissions.cmake

@@ -81,11 +81,13 @@ else()
     message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/readable-dir\" failed")
   endif()
 
-  if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
-      OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
-      OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir")
-    cleanup()
-    message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/writable-dir\" failed")
+  if(NOT NO_WRITABLE_DIR)
+    if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
+        OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
+        OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir")
+      cleanup()
+      message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/writable-dir\" failed")
+    endif()
   endif()
 
   if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable-dir"
@@ -161,11 +163,13 @@ if(UNIX)
     message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-readable-dir\" failed")
   endif()
 
-  if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
-     OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
-     OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir")
-    cleanup()
-    message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir\" failed")
+  if(NOT NO_WRITABLE_DIR)
+    if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
+       OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
+       OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir")
+      cleanup()
+      message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir\" failed")
+    endif()
   endif()
 
   if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir"

+ 1 - 1
Tests/RunCMake/if/RunCMakeTest.cmake

@@ -7,7 +7,7 @@ if(NOT MSYS)
   # if real user is root, tests are irrelevant
   get_unix_uid(uid)
   if(NOT uid STREQUAL "0")
-    run_cmake(FilePermissions)
+    run_cmake_with_options(FilePermissions -DNO_WRITABLE_DIR=${CMake_TEST_NO_WRITE_ONLY_DIR})
   endif()
 endif()
 run_cmake(IsDirectory)