Browse Source

Merge topic 'try_compile-linker-language'

7170b9cf45 Tests: Fix RunCMake.try_run case on gfortran < 4.3
30ab0f576f Tests: Add inspection step to RunCMake.try_run
a5de5da9ca Tests: Remove unused code from RunCMake.try_run

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !9048
Brad King 2 years ago
parent
commit
6e7a1b5b8c

+ 4 - 4
Tests/RunCMake/CMakeLists.txt

@@ -585,10 +585,10 @@ function(add_RunCMake_test_try_compile)
 endfunction()
 add_RunCMake_test_try_compile()
 
-add_RunCMake_test(try_run -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
-                          -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
-                          -DCMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}
-                          -DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
+if(CMAKE_Fortran_COMPILER)
+  list(APPEND try_run_ARGS -DCMake_TEST_Fortran=1)
+endif()
+add_RunCMake_test(try_run)
 add_RunCMake_test(set)
 add_RunCMake_test(variable_watch)
 add_RunCMake_test(while)

+ 22 - 0
Tests/RunCMake/try_run/Inspect.cmake

@@ -0,0 +1,22 @@
+enable_language(C)
+enable_language(CXX)
+if(CMake_TEST_Fortran)
+  enable_language(Fortran)
+endif()
+
+set(info "")
+foreach(var
+    CMAKE_SYSTEM_NAME
+    CMAKE_C_COMPILER_ID
+    CMAKE_C_COMPILER_VERSION
+    CMAKE_CXX_COMPILER_ID
+    CMAKE_CXX_COMPILER_VERSION
+    CMAKE_Fortran_COMPILER_ID
+    CMAKE_Fortran_COMPILER_VERSION
+    )
+  if(DEFINED ${var})
+    string(APPEND info "set(${var} \"${${var}}\")\n")
+  endif()
+endforeach()
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")

+ 12 - 5
Tests/RunCMake/try_run/RunCMakeTest.cmake

@@ -1,5 +1,16 @@
 include(RunCMake)
 
+# Detect information from the toolchain:
+# - CMAKE_SYSTEM_NAME
+# - CMAKE_C_COMPILER_ID
+# - CMAKE_C_COMPILER_VERSION
+# - CMAKE_CXX_COMPILER_ID
+# - CMAKE_CXX_COMPILER_VERSION
+run_cmake_with_options(Inspect
+  -DCMake_TEST_Fortran=${CMake_TEST_Fortran}
+  )
+include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
+
 run_cmake(BinDirEmpty)
 run_cmake(BinDirRelative)
 run_cmake(NoOutputVariable)
@@ -22,10 +33,6 @@ endif()
 
 if (CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows)$" AND
     CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$" AND
-    CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$")
-  set (RunCMake_TEST_OPTIONS
-    -DRunCMake_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}
-    -DRunCMake_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
+    (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 4.3))
   run_cmake(LinkerLanguage)
-  unset (RunCMake_TEST_OPTIONS)
 endif()