1
0
Эх сурвалжийг харах

Merge topic 'f2c-int-fix'

93f119ed FortranCInterface: Add support for PGI on Windows
2cfea104 FortranCInt: Pass CONFIG flags to try_compile

Acked-by: Kitware Robot <[email protected]>
Merge-request: !802
Brad King 8 жил өмнө
parent
commit
141b8ccf2c

+ 6 - 5
Modules/FortranCInterface/CMakeLists.txt

@@ -15,11 +15,11 @@ int main() { return 0; }
 # List manglings of global symbol names to try.
 # List manglings of global symbol names to try.
 set(global_symbols
 set(global_symbols
   my_sub    # VisualAge
   my_sub    # VisualAge
-  my_sub_   # GNU, Intel, HP, SunPro, MIPSpro
+  my_sub_   # GNU, Intel, HP, SunPro, MIPSpro, PGI
   my_sub__  # GNU g77
   my_sub__  # GNU g77
   MY_SUB    # Intel on Windows
   MY_SUB    # Intel on Windows
   mysub     # VisualAge
   mysub     # VisualAge
-  mysub_    # GNU, Intel, HP, SunPro, MIPSpro
+  mysub_    # GNU, Intel, HP, SunPro, MIPSpro, PGI
   MYSUB     # Intel on Windows
   MYSUB     # Intel on Windows
   ${FortranCInterface_GLOBAL_SYMBOLS}
   ${FortranCInterface_GLOBAL_SYMBOLS}
   )
   )
@@ -71,7 +71,7 @@ if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(PathScale|Cray)$")
   #    use '.in.' so we cannot provide them anyway.
   #    use '.in.' so we cannot provide them anyway.
   #  - Cray Fortran >= 7.3.2 uses module init symbols but module symbols
   #  - Cray Fortran >= 7.3.2 uses module init symbols but module symbols
   #    use 'mysub$mymodule_' so we cannot provide them anyway.
   #    use 'mysub$mymodule_' so we cannot provide them anyway.
-  list(APPEND symbol_sources mymodule_.c my_module_.c)
+  list(APPEND symbol_sources mymodule_.c my_module_.c MY_MODULE.c MYMODULE.c)
 endif()
 endif()
 foreach(symbol IN LISTS global_symbols module_symbols)
 foreach(symbol IN LISTS global_symbols module_symbols)
   # Skip symbols with '$' if C cannot handle them.
   # Skip symbols with '$' if C cannot handle them.
@@ -93,11 +93,12 @@ add_library(myfort STATIC mysub.f my_sub.f ${myfort_modules})
 
 
 # Provide symbols through C but fall back to Fortran.
 # Provide symbols through C but fall back to Fortran.
 add_library(symbols STATIC ${symbol_sources})
 add_library(symbols STATIC ${symbol_sources})
-target_link_libraries(symbols myfort)
+target_link_libraries(symbols PUBLIC myfort)
+
 # In case the Fortran compiler produces PIC by default make sure
 # In case the Fortran compiler produces PIC by default make sure
 # the C compiler produces PIC even if it is not its default.
 # the C compiler produces PIC even if it is not its default.
 set_property(TARGET symbols PROPERTY POSITION_INDEPENDENT_CODE 1)
 set_property(TARGET symbols PROPERTY POSITION_INDEPENDENT_CODE 1)
 
 
 # Require symbols through Fortran.
 # Require symbols through Fortran.
 add_executable(FortranCInterface main.F call_sub.f ${call_mod})
 add_executable(FortranCInterface main.F call_sub.f ${call_mod})
-target_link_libraries(FortranCInterface symbols)
+target_link_libraries(FortranCInterface PUBLIC symbols)

+ 4 - 1
Modules/FortranCInterface/Detect.cmake

@@ -27,6 +27,7 @@ unset(FortranCInterface_VERIFIED_CXX CACHE)
 set(_result)
 set(_result)
 
 
 # Build a sample project which reports symbols.
 # Build a sample project which reports symbols.
+set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
 try_compile(FortranCInterface_COMPILED
 try_compile(FortranCInterface_COMPILED
   ${FortranCInterface_BINARY_DIR}
   ${FortranCInterface_BINARY_DIR}
   ${FortranCInterface_SOURCE_DIR}
   ${FortranCInterface_SOURCE_DIR}
@@ -35,6 +36,8 @@ try_compile(FortranCInterface_COMPILED
   CMAKE_FLAGS
   CMAKE_FLAGS
     "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
     "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
     "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
     "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
+    "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
+    "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
   OUTPUT_VARIABLE FortranCInterface_OUTPUT)
   OUTPUT_VARIABLE FortranCInterface_OUTPUT)
 set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
 set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
 unset(FortranCInterface_COMPILED CACHE)
 unset(FortranCInterface_COMPILED CACHE)
@@ -43,7 +46,7 @@ unset(FortranCInterface_COMPILED CACHE)
 if(FortranCInterface_COMPILED)
 if(FortranCInterface_COMPILED)
   find_program(FortranCInterface_EXE
   find_program(FortranCInterface_EXE
     NAMES FortranCInterface${CMAKE_EXECUTABLE_SUFFIX}
     NAMES FortranCInterface${CMAKE_EXECUTABLE_SUFFIX}
-    PATHS ${FortranCInterface_BINARY_DIR} ${FortranCInterface_BINARY_DIR}/Debug
+    PATHS ${FortranCInterface_BINARY_DIR} ${FortranCInterface_BINARY_DIR}/Release
     NO_DEFAULT_PATH
     NO_DEFAULT_PATH
     )
     )
   set(FortranCInterface_EXE ${FortranCInterface_EXE})
   set(FortranCInterface_EXE ${FortranCInterface_EXE})

+ 3 - 0
Modules/FortranCInterface/MYMODULE.c

@@ -0,0 +1,3 @@
+void MYMODULE(void)
+{
+}

+ 3 - 0
Modules/FortranCInterface/MY_MODULE.c

@@ -0,0 +1,3 @@
+void MY_MODULE(void)
+{
+}