Jelajahi Sumber

FortranCInterface: Support '=' in language flags

The commit "FortranCInterface: Honor language flags in checks" taught
the FortranCInterface module to pass C and Fortran flags into its
detection and verification checks.  We improve on the change to allow
the '=' character in the language flags.  This requires passing the
cache entry type with the -D options.
Brad King 16 tahun lalu
induk
melakukan
0306080e6e

+ 3 - 3
Modules/FortranCInterface.cmake

@@ -248,9 +248,9 @@ function(FortranCInterface_VERIFY)
       VerifyFortranC
       CMAKE_FLAGS -DVERIFY_CXX=${verify_cxx}
                   -DCMAKE_VERBOSE_MAKEFILE=ON
-                 "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}"
-                 "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
-                 "-DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}"
+                 "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
+                 "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}"
+                 "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
       OUTPUT_VARIABLE _output)
     file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}")
 

+ 2 - 2
Modules/FortranCInterface/Detect.cmake

@@ -40,8 +40,8 @@ try_compile(FortranCInterface_COMPILED
   ${FortranCInterface_SOURCE_DIR}
   FortranCInterface
   CMAKE_FLAGS
-    "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}"
-    "-DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}"
+    "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
+    "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
   OUTPUT_VARIABLE FortranCInterface_OUTPUT)
 set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
 unset(FortranCInterface_COMPILED CACHE)

+ 2 - 2
Tests/FortranC/CMakeLists.txt

@@ -13,11 +13,11 @@ file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterface)
 
 if(FortranC_TEST_FLAGS)
   # Test whether FortranCInterface checks see C flags.
-  set(ENV{TEST_OPT_CC} "--test-opt-cc")
+  set(ENV{TEST_OPT_CC} "--test-opt-cc=1")
   set(CMAKE_C_FLAGS "$ENV{TEST_OPT_CC}")
 
   # Test whether FortranCInterface checks see Fortran flags.
-  set(ENV{TEST_OPT_FC} "--test-opt-fc")
+  set(ENV{TEST_OPT_FC} "--test-opt-fc=1")
   set(CMAKE_Fortran_FLAGS "$ENV{TEST_OPT_FC}")
 endif()