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.
This commit is contained in:
Brad King 2009-10-26 11:32:19 -04:00
parent 707d05e936
commit 7b10ec686f
1 changed files with 15 additions and 1 deletions

View File

@ -8,8 +8,22 @@ message("CMAKE_Fortran_COMPILER_FULLPATH = ${CMAKE_Fortran_COMPILER_FULLPATH}")
message("CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}") message("CMAKE_Fortran_COMPILER = ${CMAKE_Fortran_COMPILER}")
message("CMAKE_Fortran_FLAGS = ${CMAKE_Fortran_FLAGS}") 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(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) add_executable(testf testf.f)
target_link_libraries(testf hello world) target_link_libraries(testf hello world)