Browse Source

Fix and simplify Fortran test compiler compatibility check

Since commit 38aab379 (Set CMAKE_<lang>_COMPILER_ID for VS generators,
2011-09-02) the VS IDE generators set the C and C++ compiler id to MSVC
and the Fortran compiler id to Intel.  This caused the Fortran test to
fail compatible compiler detection because the if() test

  "${CMAKE_C_COMPILER_ID}" MATCHES "MSVC"

is evaluated as the "var MATCHES regex" signature which evaluates the
compiler id "MSVC" as a variable which is defined to 1 which does not
match "MSVC".

Combine tests for non-identical but compatible compiler vendors into a
single regex match whose left hand side will not be defined as a
variable.
Brad King 14 years ago
parent
commit
fcb2a27982
1 changed files with 2 additions and 10 deletions
  1. 2 10
      Tests/Fortran/CMakeLists.txt

+ 2 - 10
Tests/Fortran/CMakeLists.txt

@@ -113,16 +113,8 @@ endfunction()
 
 # if the id's match or the compilers are compatible, then
 # call the test_fortran_c_interface_module function
-if(("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
-    AND 
-    ("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC")
-    )
-  set(COMPATABLE_COMPILERS TRUE)
-endif()
-if("${CMAKE_Fortran_COMPILER_ID}:${CMAKE_C_COMPILER_ID}" MATCHES "Absoft:GNU")
-  set(COMPATABLE_COMPILERS TRUE)
-endif()
-if(COMPATABLE_COMPILERS
+if("${CMAKE_Fortran_COMPILER_ID}:${CMAKE_C_COMPILER_ID}" MATCHES
+    "(Intel:MSVC|Absoft:GNU)"
     OR ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "${CMAKE_C_COMPILER_ID}" ))
   test_fortran_c_interface_module()
 else()