Browse Source

Skip SHARED lib Fortran test with XL and old GNU

The commit "Test all target types in Fortran" enabled a SHARED library
in the Fortran test.  However, we do not yet implement support for
shared libraries with XL Fortran (it seems this requires using the C
compiler to link).  Furthermore, the old g77 2.97 from Red Hat does not
support shared libs on Itanium because the g2c lib is not -fPIC.

For now we just disable SHARED libs in the test for these tools.
Brad King 16 years ago
parent
commit
7b10ec686f
1 changed files with 15 additions and 1 deletions
  1. 15 1
      Tests/Fortran/CMakeLists.txt

+ 15 - 1
Tests/Fortran/CMakeLists.txt

@@ -8,8 +8,22 @@ message("CMAKE_Fortran_COMPILER_FULLPATH = ${CMAKE_Fortran_COMPILER_FULLPATH}")
 message("CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}")
 message("CMAKE_Fortran_FLAGS = ${CMAKE_Fortran_FLAGS}")
 
+set(_SHARED SHARED)
+if("${CMAKE_Fortran_COMPILER_ID}" MATCHES "^(XL|VisualAge)$")
+  # We do not implement SHARED Fortran libs on AIX yet!
+  # Workaround: Set LINKER_LANGUAGE to C, which uses 'xlc' and Fortran implicits.
+  set(_SHARED STATIC)
+elseif("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU")
+  # g77 2.96 does not support shared libs on Itanium because g2c is not -fPIC
+  execute_process(COMMAND ${CMAKE_Fortran_COMPILER} --version
+                  OUTPUT_VARIABLE output ERROR_VARIABLE output)
+  if("${output}" MATCHES "Red Hat .* 2\\.96")
+    set(_SHARED STATIC)
+  endif()
+endif()
+
 add_library(hello STATIC hello.f)
-add_library(world SHARED world.f world.def)
+add_library(world ${_SHARED} world.f world.def)
 add_executable(testf testf.f)
 target_link_libraries(testf hello world)