You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
13 years ago
|
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()
|