diff options
author | Brad King <brad.king@kitware.com> | 2009-08-24 12:49:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-08-24 12:49:35 (GMT) |
commit | a9be85da2ecd7677d3ba72dc2e279541a32907c2 (patch) | |
tree | 10608b982a38df84f665be5bbea49e5a56921c55 /Modules/FortranCInterface | |
parent | 14f7a043e3686a6a2b821e759e391c54f3239479 (diff) | |
download | CMake-a9be85da2ecd7677d3ba72dc2e279541a32907c2.zip CMake-a9be85da2ecd7677d3ba72dc2e279541a32907c2.tar.gz CMake-a9be85da2ecd7677d3ba72dc2e279541a32907c2.tar.bz2 |
Create FortranCInterface_VERIFY function
This function builds a simple test project using a combination of
Fortran and C (and optionally C++) to verify that the compilers are
compatible. The idea is to help projects report very early to users
that the compilers specified cannot mix languages.
Diffstat (limited to 'Modules/FortranCInterface')
-rw-r--r-- | Modules/FortranCInterface/Detect.cmake | 4 | ||||
-rw-r--r-- | Modules/FortranCInterface/Verify/CMakeLists.txt | 16 | ||||
-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 |
6 files changed, 48 insertions, 0 deletions
diff --git a/Modules/FortranCInterface/Detect.cmake b/Modules/FortranCInterface/Detect.cmake index b848d33..abc012e 100644 --- a/Modules/FortranCInterface/Detect.cmake +++ b/Modules/FortranCInterface/Detect.cmake @@ -17,6 +17,10 @@ else() return() endif() +# Invalidate verification results. +unset(FortranCInterface_VERIFIED_C CACHE) +unset(FortranCInterface_VERIFIED_CXX CACHE) + set(_result) # Build a sample project which reports symbols. diff --git a/Modules/FortranCInterface/Verify/CMakeLists.txt b/Modules/FortranCInterface/Verify/CMakeLists.txt new file mode 100644 index 0000000..69fde2d --- /dev/null +++ b/Modules/FortranCInterface/Verify/CMakeLists.txt @@ -0,0 +1,16 @@ +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_executable(VerifyFortranC main.c VerifyC.c VerifyFortran.f ${VerifyCXX}) diff --git a/Modules/FortranCInterface/Verify/VerifyC.c b/Modules/FortranCInterface/Verify/VerifyC.c new file mode 100644 index 0000000..7f847ef --- /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 0000000..689fac5 --- /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 0000000..a17e48d --- /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 0000000..582ef1d --- /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; +} |