ENH: Add tests of Fortran module dependencies across directories and on external modules. Tests based on cases provided by Maik in issue #5809.

This commit is contained in:
Brad King 2007-12-28 11:50:29 -05:00
parent 81f6e86f12
commit f4fb1a4f91
5 changed files with 54 additions and 0 deletions

View File

@ -22,5 +22,34 @@ IF(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
in_interface/main.f90
in_interface/module.f90)
# Build the external project separately using a custom target.
# Make sure it uses the same build configuration as this test.
IF(CMAKE_CONFIGURATION_TYPES)
SET(External_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
ELSE(CMAKE_CONFIGURATION_TYPES)
SET(External_CONFIG_TYPE)
ENDIF(CMAKE_CONFIGURATION_TYPES)
ADD_CUSTOM_COMMAND(
OUTPUT ${testf_BINARY_DIR}/ExternalProject
COMMAND ${CMAKE_CTEST_COMMAND}
ARGS ${External_CONFIG_TYPE}
--build-and-test
${testf_SOURCE_DIR}/External
${testf_BINARY_DIR}/External
--build-noclean
--build-two-config
--build-project ExtFort
--build-generator ${CMAKE_GENERATOR}
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
--build-options -DCMAKE_Fortran_COMPILER:STRING=${CMAKE_Fortran_COMPILER}
-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}
-DCMAKE_Fortran_FLAGS_DEBUG:STRING=${CMAKE_Fortran_FLAGS_DEBUG}
-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}
-DCMAKE_Fortran_FLAGS_MINSIZEREL:STRING=${CMAKE_Fortran_FLAGS_MINSIZEREL}
-DCMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_Fortran_FLAGS_RELWITHDEBINFO}
)
ADD_CUSTOM_TARGET(ExternalTarget ALL DEPENDS ${testf_BINARY_DIR}/ExternalProject)
ADD_SUBDIRECTORY(Library)
ADD_SUBDIRECTORY(Executable)
ENDIF(CMAKE_Fortran_COMPILER_SUPPORTS_F90)

View File

@ -0,0 +1,8 @@
include_directories(${testf_BINARY_DIR}/Library)
include_directories(${testf_BINARY_DIR}/External)
link_directories(${testf_BINARY_DIR}/External)
add_executable(subdir_exe2 main.f90)
target_link_libraries(subdir_exe2 subdir_mods)
add_dependencies(subdir_exe2 ExternalTarget)
target_link_libraries(subdir_exe2 myext)

View File

@ -0,0 +1,6 @@
PROGRAM MAINF90
USE libraryModuleA
USE libraryModuleB
USE externalMod
CALL printExtModGreeting
END PROGRAM MAINF90

4
Tests/Fortran/External/CMakeLists.txt vendored Normal file
View File

@ -0,0 +1,4 @@
project(ExtFort Fortran)
add_library(myext a.f90)

7
Tests/Fortran/External/a.f90 vendored Normal file
View File

@ -0,0 +1,7 @@
MODULE externalMod
!
CONTAINS
SUBROUTINE printExtModGreeting
WRITE(*,*) "Greetings from Module externalMod"
END SUBROUTINE
END MODULE