From bd69e1c567cc4fc1bf30d321d888dd2567d82e7a Mon Sep 17 00:00:00 2001
From: Bill Hoffman <bill.hoffman@kitware.com>
Date: Fri, 16 Dec 2011 17:01:19 -0500
Subject: VSGNUFortran: Add special case for SunPro Fortran runtime library

The SunPro compiler does not add the fortran runtime library when
creating a shared fortran library.  Link to the SunPro Fortran runtime
libraries explicitly.
---
 Tests/VSGNUFortran/fortran/CMakeLists.txt | 36 ++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/Tests/VSGNUFortran/fortran/CMakeLists.txt b/Tests/VSGNUFortran/fortran/CMakeLists.txt
index ff22993..3ee1855 100644
--- a/Tests/VSGNUFortran/fortran/CMakeLists.txt
+++ b/Tests/VSGNUFortran/fortran/CMakeLists.txt
@@ -1,12 +1,46 @@
 cmake_minimum_required(VERSION 2.8)
 project(FortranHello Fortran C)
 
+# add a function to test for -lsunquad on sunpro sun systems.
+function(test_sunquad result)
+  set( TEST_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/sunq")
+  file(WRITE "${TEST_DIR}/testsunq.f" "
+      PROGRAM TEST
+      END
+  ")
+  file(WRITE ${TEST_DIR}/CMakeLists.txt "
+project(sunq Fortran)
+add_library(sunq SHARED testsunq.f)
+target_link_libraries(sunq sunquad)
+")
+  message(STATUS "looking for -lsunquad")
+  try_compile(RESULT "${TEST_DIR}" "${TEST_DIR}" sunq OUTPUT_VARIABLE OUT)
+  if("${RESULT}")
+    message(STATUS "-lsunquad found")
+  else()
+    message(STATUS "-lsunquad not found")
+  endif()
+  message(STATUS
+    "looking for sunquad:\nRESULT=[${RESULT}]\nOUTPUT=[\n${OUT}\n]")
+  set(${result} "${RESULT}" PARENT_SCOPE)
+endfunction()
+
+# check for the fortran c interface mangling
 include(FortranCInterface)
 FortranCInterface_HEADER(HelloWorldFCMangle.h
                          MACRO_NAMESPACE "FC_"
                          SYMBOL_NAMESPACE "FC_"
                          SYMBOLS hello world)
-
 add_library(hello SHARED hello.f)
 add_library(world SHARED world.f)
 target_link_libraries(hello world)
+if(CMAKE_Fortran_COMPILER_ID MATCHES SunPro)
+  target_link_libraries(hello fsu)
+  if(CMAKE_Fortran_PLATFORM_ID MATCHES SunOS)
+    target_link_libraries(hello sunmath m)
+    test_sunquad(CMAKE_HAS_SUNQUAD)
+    if(CMAKE_HAS_SUNQUAD)
+      target_link_libraries(hello sunquad)
+    endif()
+  endif()
+endif()
-- 
cgit v0.12