diff options
Diffstat (limited to 'Modules/FortranCInterface/Verify')
-rw-r--r-- | Modules/FortranCInterface/Verify/CMakeLists.txt | 34 | ||||
-rw-r--r-- | Modules/FortranCInterface/Verify/VerifyC.c | 5 | ||||
-rw-r--r-- | Modules/FortranCInterface/Verify/VerifyCXX.cxx | 4 | ||||
-rw-r--r-- | Modules/FortranCInterface/Verify/VerifyFortran.f | 3 | ||||
-rw-r--r-- | Modules/FortranCInterface/Verify/main.c | 16 |
5 files changed, 62 insertions, 0 deletions
diff --git a/Modules/FortranCInterface/Verify/CMakeLists.txt b/Modules/FortranCInterface/Verify/CMakeLists.txt new file mode 100644 index 000000000..e969f2408 --- /dev/null +++ b/Modules/FortranCInterface/Verify/CMakeLists.txt @@ -0,0 +1,34 @@ +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +cmake_minimum_required(VERSION 2.7) +project(VerifyFortranC C Fortran) + +option(VERIFY_CXX "Whether to verify C++ and Fortran" OFF) +if(VERIFY_CXX) + enable_language(CXX) + set(VerifyCXX VerifyCXX.cxx) + add_definitions(-DVERIFY_CXX) +endif() + +include(FortranCInterface) + +FortranCInterface_HEADER(VerifyFortran.h SYMBOLS VerifyFortran) +include_directories(${VerifyFortranC_BINARY_DIR}) + +add_library(VerifyFortran STATIC VerifyFortran.f) +add_executable(VerifyFortranC main.c VerifyC.c ${VerifyCXX}) +target_link_libraries(VerifyFortranC VerifyFortran) + +if(NOT VERIFY_CXX) + # The entry point (main) is defined in C; link with the C compiler. + set_property(TARGET VerifyFortranC PROPERTY LINKER_LANGUAGE C) +endif() diff --git a/Modules/FortranCInterface/Verify/VerifyC.c b/Modules/FortranCInterface/Verify/VerifyC.c new file mode 100644 index 000000000..7f847ef01 --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyC.c @@ -0,0 +1,5 @@ +#include <stdio.h> +void VerifyC(void) +{ + printf("VerifyC\n"); +} diff --git a/Modules/FortranCInterface/Verify/VerifyCXX.cxx b/Modules/FortranCInterface/Verify/VerifyCXX.cxx new file mode 100644 index 000000000..689fac53d --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyCXX.cxx @@ -0,0 +1,4 @@ +extern "C" void VerifyCXX(void) +{ + delete new int; +} diff --git a/Modules/FortranCInterface/Verify/VerifyFortran.f b/Modules/FortranCInterface/Verify/VerifyFortran.f new file mode 100644 index 000000000..a17e48d1b --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyFortran.f @@ -0,0 +1,3 @@ + subroutine VerifyFortran + print *, 'VerifyFortran' + end diff --git a/Modules/FortranCInterface/Verify/main.c b/Modules/FortranCInterface/Verify/main.c new file mode 100644 index 000000000..582ef1d90 --- /dev/null +++ b/Modules/FortranCInterface/Verify/main.c @@ -0,0 +1,16 @@ +extern void VerifyC(void); +#ifdef VERIFY_CXX +extern void VerifyCXX(void); +#endif +#include "VerifyFortran.h" +extern void VerifyFortran(void); + +int main(void) +{ + VerifyC(); +#ifdef VERIFY_CXX + VerifyCXX(); +#endif + VerifyFortran(); + return 0; +} |