[Cmake-commits] CMake branch, next, updated. v3.6.2-2430-g9c066f0

Brad King brad.king at kitware.com
Fri Sep 23 10:58:20 EDT 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  9c066f0082a2b4cb35e668cd7262cba6d65d21fc (commit)
       via  b66bc6606e87c79e3adef55aa963570a5b8f78f2 (commit)
      from  18f452c66038a971713e369d6dbc582fef077f1c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c066f0082a2b4cb35e668cd7262cba6d65d21fc
commit 9c066f0082a2b4cb35e668cd7262cba6d65d21fc
Merge: 18f452c b66bc66
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Sep 23 10:58:19 2016 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Sep 23 10:58:19 2016 -0400

    Merge topic 'fortran-submodule-test' into next
    
    b66bc660 Tests: Add Fortran submodule tests


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b66bc6606e87c79e3adef55aa963570a5b8f78f2
commit b66bc6606e87c79e3adef55aa963570a5b8f78f2
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Sep 22 14:46:54 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Sep 23 08:51:06 2016 -0400

    Tests: Add Fortran submodule tests
    
    Co-Author: Damian Rouson <damian at sourceryinstitute.org>
    Issue: #16234

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 235e38a..3681843 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -3109,6 +3109,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
         --build-project FortranModules
         --build-options ${build_options}
           -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
+          -DCMake_TEST_Fortran_SUBMODULES:BOOL=${CMake_TEST_Fortran_SUBMODULES}
         )
       list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranModules")
     endif()
diff --git a/Tests/FortranModules/CMakeLists.txt b/Tests/FortranModules/CMakeLists.txt
index b406df3..ff12771 100644
--- a/Tests/FortranModules/CMakeLists.txt
+++ b/Tests/FortranModules/CMakeLists.txt
@@ -5,6 +5,33 @@ if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "V
   set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
 endif()
 
+if("x${CMake_TEST_Fortran_SUBMODULES}" STREQUAL "x"
+    AND NOT CMAKE_VERSION VERSION_LESS 3.6.20160923 # for CheckFortranSourceCompiles SRC_EXT
+    )
+  include(CheckFortranSourceCompiles)
+  CHECK_Fortran_SOURCE_COMPILES([[
+module parent
+  interface
+    module function id(x)
+       real, intent(in) :: x
+       real :: id
+    end function id
+  end interface
+end module parent
+submodule ( parent ) child
+contains
+  module procedure id
+    f = x
+  end procedure id
+end submodule child
+program main
+end program
+]] HAVE_SUBMODULES SRC_EXT F90)
+  set(CMake_TEST_Fortran_SUBMODULES ${HAVE_SUBMODULES})
+elseif(CMake_TEST_Fortran_SUBMODULES)
+  message(STATUS "Enabling Fortran submodule tests by explicit request.")
+endif()
+
 add_executable(test_module
   test_module_main.f90
   test_module_implementation.f90
@@ -76,3 +103,7 @@ endif()
 add_subdirectory(Library)
 add_subdirectory(Subdir)
 add_subdirectory(Executable)
+
+if(CMake_TEST_Fortran_SUBMODULES)
+  add_subdirectory(Submodules)
+endif()
diff --git a/Tests/FortranModules/Submodules/CMakeLists.txt b/Tests/FortranModules/Submodules/CMakeLists.txt
new file mode 100644
index 0000000..bf0152f
--- /dev/null
+++ b/Tests/FortranModules/Submodules/CMakeLists.txt
@@ -0,0 +1 @@
+add_executable(submod main.f90 provide.f90)
diff --git a/Tests/FortranModules/Submodules/main.f90 b/Tests/FortranModules/Submodules/main.f90
new file mode 100644
index 0000000..3c750ce
--- /dev/null
+++ b/Tests/FortranModules/Submodules/main.f90
@@ -0,0 +1,5 @@
+program main
+  use parent, only : child_function,grandchild_subroutine
+  implicit none
+  if (child_function()) call grandchild_subroutine
+end program
diff --git a/Tests/FortranModules/Submodules/provide.f90 b/Tests/FortranModules/Submodules/provide.f90
new file mode 100644
index 0000000..0ad216a
--- /dev/null
+++ b/Tests/FortranModules/Submodules/provide.f90
@@ -0,0 +1,57 @@
+! The program units in this file consist of a
+! module/submodule tree represented by the following
+! graph:
+!
+!        parent
+!          |
+!         / \
+!        /   \
+!    child   sibling
+!      |
+!  grandchild
+!
+! where the parent node is a module and all other
+! nodes are submodules.
+
+module parent
+  implicit none
+
+  interface
+
+    ! Test Fortran 2008 "module function" syntax
+    module function child_function() result(child_stuff)
+      logical :: child_stuff
+    end function
+
+    ! Test Fortran 2008 "module subroutine" syntax
+    module subroutine grandchild_subroutine()
+    end subroutine
+
+  end interface
+
+end module parent
+
+! Test the notation for a 1st-generation direct
+! descendant of a parent module
+submodule ( parent ) child
+  implicit none
+contains
+  module function child_function() result(child_stuff)
+    logical :: child_stuff
+    child_stuff=.true.
+  end function
+end submodule child
+
+! Empty submodule for checking disambiguation of
+! nodes at the same vertical level in the tree
+submodule ( parent ) sibling
+end submodule sibling
+
+! Test the notation for an Nth-generation descendant
+! for N>1, which necessitates the colon.
+submodule ( parent : child ) grandchild
+contains
+  module subroutine grandchild_subroutine()
+    print *,"Test passed."
+  end subroutine
+end submodule grandchild

-----------------------------------------------------------------------

Summary of changes:
 Tests/CMakeLists.txt                           |    1 +
 Tests/FortranModules/CMakeLists.txt            |   31 +++++++++++++
 Tests/FortranModules/Submodules/CMakeLists.txt |    1 +
 Tests/FortranModules/Submodules/main.f90       |    5 +++
 Tests/FortranModules/Submodules/provide.f90    |   57 ++++++++++++++++++++++++
 5 files changed, 95 insertions(+)
 create mode 100644 Tests/FortranModules/Submodules/CMakeLists.txt
 create mode 100644 Tests/FortranModules/Submodules/main.f90
 create mode 100644 Tests/FortranModules/Submodules/provide.f90


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list