1# @HEADER 2# ************************************************************************ 3# 4# TriBITS: Tribal Build, Integrate, and Test System 5# Copyright 2013 Sandia Corporation 6# 7# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 8# the U.S. Government retains certain rights in this software. 9# 10# Redistribution and use in source and binary forms, with or without 11# modification, are permitted provided that the following conditions are 12# met: 13# 14# 1. Redistributions of source code must retain the above copyright 15# notice, this list of conditions and the following disclaimer. 16# 17# 2. Redistributions in binary form must reproduce the above copyright 18# notice, this list of conditions and the following disclaimer in the 19# documentation and/or other materials provided with the distribution. 20# 21# 3. Neither the name of the Corporation nor the names of the 22# contributors may be used to endorse or promote products derived from 23# this software without specific prior written permission. 24# 25# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 26# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 29# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 33# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36# 37# ************************************************************************ 38# @HEADER 39 40# This file gets included in the base-level CMakeLists.txt file to define 41# Fortran name mangling. 42 43IF (${PROJECT_NAME}_ENABLE_CXX AND ${PROJECT_NAME}_ENABLE_Fortran) 44 INCLUDE(FortranMangling) 45 FORTRAN_MANGLING() 46 47 # Verify the selected combination of Fortran and C++ compilers. 48 IF(NOT ${PROJECT_NAME}_SKIP_FORTRANCINTERFACE_VERIFY_TEST) 49 INCLUDE(FortranCInterface) 50 FortranCInterface_VERIFY(CXX) 51 ENDIF() 52ENDIF() 53 54IF (FC_FUNC_DEFAULT) 55 56 SET(F77_FUNC_DEFAULT ${FC_FUNC_DEFAULT}) 57 SET(F77_FUNC__DEFAULT ${FC_FUNC__DEFAULT}) 58 # 2008/10/26: rabartl: ToDo: Above, we need to write 59 # a different function to find out the right BLAS 60 # name mangling automatically. Given what the above 61 # FORTRAN_MANGLING() function does, this should not 62 # be too hard. 63 64ELSE() 65 66 IF(CYGWIN) 67 SET(F77_FUNC_DEFAULT "(name,NAME) name ## _" ) 68 SET(F77_FUNC__DEFAULT "(name,NAME) name ## __" ) 69 ELSEIF(WIN32) 70 SET(F77_FUNC_DEFAULT "(name,NAME) name ## _" ) 71 SET(F77_FUNC__DEFAULT "(name,NAME) NAME") 72 ELSEIF(UNIX AND NOT APPLE) 73 SET(F77_FUNC_DEFAULT "(name,NAME) name ## _" ) 74 #SET(F77_FUNC__DEFAULT "(name,NAME) name ## __" ) 75 SET(F77_FUNC__DEFAULT "(name,NAME) name ## _" ) 76 ELSEIF(APPLE) 77 SET(F77_FUNC_DEFAULT "(name,NAME) name ## _" ) 78 SET(F77_FUNC__DEFAULT "(name,NAME) name ## __" ) 79 ELSE() 80 MESSAGE(FATAL_ERROR "Error, could not determine fortran name mangling!") 81 ENDIF() 82 83ENDIF() 84 85# Set options so that users can change these! 86 87SET(F77_FUNC ${F77_FUNC_DEFAULT} CACHE STRING 88 "Name mangling used to call Fortran 77 functions with no underscores in the name") 89SET(F77_FUNC_ ${F77_FUNC__DEFAULT} CACHE STRING 90 "Name mangling used to call Fortran 77 functions with at least one underscore in the name") 91 92MARK_AS_ADVANCED(F77_FUNC) 93MARK_AS_ADVANCED(F77_FUNC_) 94