Browse Source

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

Brad King 18 years ago
parent
commit
f4fb1a4f91

+ 29 - 0
Tests/Fortran/CMakeLists.txt

@@ -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)

+ 8 - 0
Tests/Fortran/Executable/CMakeLists.txt

@@ -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)

+ 6 - 0
Tests/Fortran/Executable/main.f90

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

+ 4 - 0
Tests/Fortran/External/CMakeLists.txt

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

+ 7 - 0
Tests/Fortran/External/a.f90

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