From 8bd2c81cd58f3346de7d4e216ffb854835ac741e Mon Sep 17 00:00:00 2001
From: Dana Robinson <derobins@hdfgroup.org>
Date: Wed, 17 Jul 2019 01:23:44 -0700
Subject: Updated gfortran options. * Removed conclude_fc.am, which was causing
 verbose builds. Need to   investigate more, though. * Added gfortran 9
 warnings and flags. This will need to be separated   into other version
 blocks based on when the options first appeared. * The standard is now
 explicitly set at 2008.

---
 MANIFEST                        |   1 -
 config/conclude_fc.am           |  31 ------------
 config/gnu-fflags               | 101 +++++++++++++++++++++++++++-------------
 fortran/examples/Makefile.am    |   2 +-
 fortran/src/Makefile.am         |   2 +-
 fortran/test/Makefile.am        |   2 +-
 fortran/testpar/Makefile.am     |   2 +-
 hl/fortran/examples/Makefile.am |   2 +-
 hl/fortran/src/Makefile.am      |   3 +-
 hl/fortran/test/Makefile.am     |   2 +-
 10 files changed, 77 insertions(+), 71 deletions(-)
 delete mode 100644 config/conclude_fc.am

diff --git a/MANIFEST b/MANIFEST
index b4ee3b0..9af97ff 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -119,7 +119,6 @@
 ./config/cce-flags
 ./config/commence.am
 ./config/conclude.am
-./config/conclude_fc.am
 ./config/examples.am
 ./config/freebsd
 ./config/gnu-cxxflags
diff --git a/config/conclude_fc.am b/config/conclude_fc.am
deleted file mode 100644
index 15d04a7..0000000
--- a/config/conclude_fc.am
+++ /dev/null
@@ -1,31 +0,0 @@
-## config/conclude_fc.am
-## (Use double hashes for copyright notice so that automake treats it as
-## comments and does not pass it to Makefile.in)
-## Copyright by The HDF Group.
-## Copyright by the Board of Trustees of the University of Illinois.
-## All rights reserved.
-##
-## This file is part of HDF5.  The full HDF5 copyright notice, including
-## terms governing use, modification, and redistribution, is contained in
-## the COPYING file, which can be found at the root of the source code
-## distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
-## If you do not have access to either file, you may request a copy from
-## help@hdfgroup.org.
-
-
-## Textually included at the end of the Fortran HDF5 Makefiles.am.
-
-# Makefile.am include fragment with Fortran helper rules and macros.
-
-# AM_FCCPPFLAGS, FCCPPFLAGS are currently not used.
-
-PPFCCOMPILE = $(FC) $(FCDEFS) $(DEFAULT_INCLUDES)  $(FCINCLUDES) $(AM_FCCPPFLAGS) $(FCCPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
-LTPPFCCOMPILE = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(PPFCCOMPILE)
-
-# Treat all .f90 and .F90 files as preprocessed Fortran.
-.f90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
-.F90.o:
-	$(PPFCCOMPILE) -c -o $@ $<
-
-include $(top_srcdir)/config/conclude.am
diff --git a/config/gnu-fflags b/config/gnu-fflags
index 6b5e6a1..3a47787 100644
--- a/config/gnu-fflags
+++ b/config/gnu-fflags
@@ -1,4 +1,4 @@
-#							-*- shell-script -*-
+#                            -*- shell-script -*-
 #
 # Copyright by The HDF Group.
 # Copyright by the Board of Trustees of the University of Illinois.
@@ -25,9 +25,8 @@
 #
 if test X = "X$f9x_flags_set"; then
     f9x_version="`$FC $FCFLAGS $H5_FCFLAGS -v 2>&1 |grep 'gcc version' |\
-	        sed 's/.*gcc version \([-a-z0-9\.]*\).*/\1/'`"
+            sed 's/.*gcc version \([-a-z0-9\.]*\).*/\1/'`"
     if test X != "X$f9x_version"; then
-#        is_mpi="`$FC $FCFLAGS $H5_FCFLAGS -help 2>&1 |grep 'link MPI'`"
         f9x_vendor=`echo $f9x_version |sed 's/\([a-z]*\).*/\1/'`
         f9x_version=`echo $f9x_version |sed 's/[-a-z]//g'`
         if test X = "X$f9x_vendor" -a X != "X$f9x_version"; then
@@ -37,24 +36,29 @@ if test X = "X$f9x_flags_set"; then
             echo "compiler '$FC' is GNU $f9x_vendor-$f9x_version"
         fi
 
-        # Some version numbers
+        # Get the compiler version numbers
         f9x_vers_major=`echo $f9x_version | cut -f1 -d.`
         f9x_vers_minor=`echo $f9x_version | cut -f2 -d.`
         f9x_vers_patch=`echo $f9x_version | cut -f3 -d.`
         test -n "$f9x_vers_major" || f9x_vers_major=0
         test -n "$f9x_vers_minor" || f9x_vers_minor=0
         test -n "$f9x_vers_patch" || f9x_vers_patch=0
-        f9x_vers_all=`expr $f9x_vers_major '*' 1000000 + $f9x_vers_minor '*' 1000 + $f9x_vers_patch`
     fi
 fi
 
-# Common GNU flags for various situations
 if test "X-gfortran" = "X-$f9x_vendor"; then
-    # Insert section about version specific problems from gnu-flags here, if
-    # necessary.
+
+    FC_BASENAME=gfortran
+    F9XSUFFIXFLAG=""
+    FSEARCH_DIRS=""
+
+    H5_FCFLAGS="$H5_FCFLAGS -std=f2008"
+
+    ###############################
+    # Architecture-specific flags #
+    ###############################
 
     arch=
-    # Architecture-specific flags
     # Nothing currently. (Uncomment code below and modify to add any)
     #case "$host_os-$host_cpu" in
     #    *-i686)
@@ -62,43 +66,76 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     #        ;;
     #esac
 
-    # Host-specific flags
-    # Nothing currently. (Uncomment code below and modify to add any)
-    #case "`hostname`" in
-    #    sleipnir.ncsa.uiuc.edu)
-    #        arch="$arch -pipe"
-    #        ;;
-    #esac
-
-    # General
-    FC_BASENAME=gfortran
-    F9XSUFFIXFLAG=""
-    FSEARCH_DIRS=""
-    H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"
+    H5_FCFLAGS="$H5_FCFLAGS $arch"
 
-    # Turn off warnings for passing non-ANSI types to BIND().
-    # We pass a lot of hid_t, etc. types so this generates a LOT of spurious warnings.
-    H5_FCFLAGS="$H5_FCFLAGS -Wno-c-binding-type"
+    ##############
+    # Production #
+    ##############
 
-    # Production
     PROD_FCFLAGS=
 
-    # Debug
-    DEBUG_FCFLAGS="-fbounds-check"
+    #########
+    # Debug #
+    #########
+
+    # Need to figure out an appropriate version for the switch.
+    if test $f9x_vers_major -ge 9; then
+        DEBUG_FCFLAGS="-fcheck=all"
+    else
+        DEBUG_FCFLAGS="-fbounds-check"
+    fi
+
+    ###########
+    # Symbols #
+    ###########
 
-    # Symbols
     SYMBOLS_FCFLAGS="-g"
     NO_SYMBOLS_FCFLAGS="-s"
 
-    # Profiling
+    #############
+    # Profiling #
+    #############
+
     PROFILE_FCFLAGS="-pg"
 
-    # Optimization
+    ################
+    # Optimization #
+    ################
+
     HIGH_OPT_FCFLAGS="-O2"
     DEBUG_OPT_FCFLAGS="-O0"
     NO_OPT_FCFLAGS="-O0"
 
-    # Flags are set
+    ############
+    # Warnings #
+    ############
+
+    ###########
+    # General #
+    ###########
+
+    H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"
+
+    # Turn off warnings for passing non-ANSI types to BIND().
+    # We pass a lot of hid_t, etc. types so this generates a LOT of spurious warnings.
+    H5_FCFLAGS="$H5_FCFLAGS -Wno-c-binding-type"
+
+    #############################
+    # Version-specific warnings #
+    #############################
+
+    # gcc 9
+    # Move to other versions (9 is just the current version)
+    if test $f9x_vers_major -ge 9; then
+        H5_FCFLAGS="$H5_FCFLAGS -Waliasing -Warray-temporaries -Wcharacter-truncation"
+        H5_FCFLAGS="$H5_FCFLAGS -Wconversion-extra -Wfrontend-loop-interchange -Wimplicit-procedure"
+        H5_FCFLAGS="$H5_FCFLAGS -Winteger-division -Wintrinsics-std -Wreal-q-constant"
+        H5_FCFLAGS="$H5_FCFLAGS -Wuse-without-only -Wrealloc-lhs -Wrealloc-lhs-all"
+    fi
+
+    #################
+    # Flags are set #
+    #################
     f9x_flags_set=yes
 fi
 
diff --git a/fortran/examples/Makefile.am b/fortran/examples/Makefile.am
index 6bf2edb..00afb3a 100644
--- a/fortran/examples/Makefile.am
+++ b/fortran/examples/Makefile.am
@@ -105,4 +105,4 @@ compound_fortran2003: compound_fortran2003.f90
 compound_complex_fortran2003: compound_complex_fortran2003.f90
 
 include $(top_srcdir)/config/examples.am
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am
index 4009439..3489566 100644
--- a/fortran/src/Makefile.am
+++ b/fortran/src/Makefile.am
@@ -165,4 +165,4 @@ HDF5.lo:             $(srcdir)/HDF5.F90 H5f90global.lo H5_ff.lo H5Aff.lo  \
 	             H5Off.lo H5Pff.lo H5Rff.lo \
                      H5Sff.lo H5Tff.lo H5Zff.lo H5_gen.lo
 
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
diff --git a/fortran/test/Makefile.am b/fortran/test/Makefile.am
index f0d7f03..e5fe7d6 100644
--- a/fortran/test/Makefile.am
+++ b/fortran/test/Makefile.am
@@ -100,4 +100,4 @@ H5_test_buildiface_LDADD =
 fflush2.chkexe_: fflush1.chkexe_
 
 
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
diff --git a/fortran/testpar/Makefile.am b/fortran/testpar/Makefile.am
index e597a84..00bc3db 100644
--- a/fortran/testpar/Makefile.am
+++ b/fortran/testpar/Makefile.am
@@ -48,4 +48,4 @@ LDADD=$(LIBH5FTEST) $(LIBH5TEST) $(LIBH5F) $(LIBHDF5)
 # Mark this directory as part of the Fortran API
 FORTRAN_API=yes
 
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
diff --git a/hl/fortran/examples/Makefile.am b/hl/fortran/examples/Makefile.am
index d383f9a..71c2866 100644
--- a/hl/fortran/examples/Makefile.am
+++ b/hl/fortran/examples/Makefile.am
@@ -62,4 +62,4 @@ EXAMPLETOPDIR=${DESTDIR}$(exec_prefix)/share/hdf5_examples/hl
 # and fortran libraries above.
 
 include $(top_srcdir)/config/examples.am
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
diff --git a/hl/fortran/src/Makefile.am b/hl/fortran/src/Makefile.am
index 37e074c..f51d595 100644
--- a/hl/fortran/src/Makefile.am
+++ b/hl/fortran/src/Makefile.am
@@ -114,4 +114,5 @@ H5IMff.lo:          $(srcdir)/H5IMff.F90
 H5TBff.lo:          $(srcdir)/H5TBff.F90
 H5LTff_gen.lo:      H5LTff.lo H5LTff_gen.F90
 H5TBff_gen.lo:      H5TBff.lo H5LTff_gen.F90 H5TBff_gen.F90
-include $(top_srcdir)/config/conclude_fc.am
+
+include $(top_srcdir)/config/conclude.am
diff --git a/hl/fortran/test/Makefile.am b/hl/fortran/test/Makefile.am
index 0552aaa..ef7cd4b 100644
--- a/hl/fortran/test/Makefile.am
+++ b/hl/fortran/test/Makefile.am
@@ -62,4 +62,4 @@ clean-local:
 # from tests in conclude.am)
 FORTRAN_API=yes
 
-include $(top_srcdir)/config/conclude_fc.am
+include $(top_srcdir)/config/conclude.am
-- 
cgit v0.12


From 0f2c1b8126075b2a1652644e5f529f83b771a52c Mon Sep 17 00:00:00 2001
From: Dana Robinson <derobins@hdfgroup.org>
Date: Thu, 18 Jul 2019 01:48:16 -0500
Subject: Moved the -std=f2008 option to gfortran 9 for now.

---
 config/gnu-fflags | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/config/gnu-fflags b/config/gnu-fflags
index 3a47787..d054980 100644
--- a/config/gnu-fflags
+++ b/config/gnu-fflags
@@ -52,7 +52,10 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     F9XSUFFIXFLAG=""
     FSEARCH_DIRS=""
 
-    H5_FCFLAGS="$H5_FCFLAGS -std=f2008"
+    if test $f9x_vers_major -ge 9; then
+        H5_FCFLAGS="$H5_FCFLAGS -std=f2008"
+    fi
+
 
     ###############################
     # Architecture-specific flags #
-- 
cgit v0.12


From 5a3147b660c4e37f6a5cb71f4884e7f7e43a8782 Mon Sep 17 00:00:00 2001
From: Dana Robinson <derobins@hdfgroup.org>
Date: Thu, 18 Jul 2019 23:40:52 -0700
Subject: First stab at gfortran versions. Tested on gfortran 7-9 so far.

---
 config/gnu-fflags | 75 +++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 59 insertions(+), 16 deletions(-)

diff --git a/config/gnu-fflags b/config/gnu-fflags
index d054980..90a3656 100644
--- a/config/gnu-fflags
+++ b/config/gnu-fflags
@@ -52,8 +52,14 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     F9XSUFFIXFLAG=""
     FSEARCH_DIRS=""
 
-    if test $f9x_vers_major -ge 9; then
+    # Need Fortran 2008 support for storage_size() in gcc 4.6 on
+    # (2008ts in some versions)
+    if test $f9x_vers_major -ge 8; then
         H5_FCFLAGS="$H5_FCFLAGS -std=f2008"
+    elif test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 6; then
+        H5_FCFLAGS="$H5_FCFLAGS -std=f2008ts"
+    else
+        H5_FCFLAGS="$H5_FCFLAGS -std=f2003"
     fi
 
 
@@ -81,8 +87,7 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     # Debug #
     #########
 
-    # Need to figure out an appropriate version for the switch.
-    if test $f9x_vers_major -ge 9; then
+    if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 5; then
         DEBUG_FCFLAGS="-fcheck=all"
     else
         DEBUG_FCFLAGS="-fbounds-check"
@@ -105,8 +110,13 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     # Optimization #
     ################
 
-    HIGH_OPT_FCFLAGS="-O2"
-    DEBUG_OPT_FCFLAGS="-O0"
+    if test $f9x_vers_major -le 4; then
+        HIGH_OPT_CFLAGS="-O3"
+        DEBUG_OPT_CFLAGS=
+    else
+        HIGH_OPT_CFLAGS="-O3"
+        DEBUG_OPT_CFLAGS="-Og"
+    fi
     NO_OPT_FCFLAGS="-O0"
 
     ############
@@ -118,24 +128,57 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
     ###########
 
     H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"
-
-    # Turn off warnings for passing non-ANSI types to BIND().
-    # We pass a lot of hid_t, etc. types so this generates a LOT of spurious warnings.
-    H5_FCFLAGS="$H5_FCFLAGS -Wno-c-binding-type"
+    H5_FCFLAGS="$H5_FCFLAGS -Waliasing -Wcharacter-truncation -Wimplicit-procedure"
 
     #############################
     # Version-specific warnings #
     #############################
 
-    # gcc 9
-    # Move to other versions (9 is just the current version)
-    if test $f9x_vers_major -ge 9; then
-        H5_FCFLAGS="$H5_FCFLAGS -Waliasing -Warray-temporaries -Wcharacter-truncation"
-        H5_FCFLAGS="$H5_FCFLAGS -Wconversion-extra -Wfrontend-loop-interchange -Wimplicit-procedure"
-        H5_FCFLAGS="$H5_FCFLAGS -Winteger-division -Wintrinsics-std -Wreal-q-constant"
-        H5_FCFLAGS="$H5_FCFLAGS -Wuse-without-only -Wrealloc-lhs -Wrealloc-lhs-all"
+    # gfortran 4.3 (nothing new)
+
+    # gfortran 4.4
+    if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 4; then
+        H5_FCFLAGS="$H5_FCFLAGS -Warray-temporaries -Wintrinsics-std"
+    fi
+
+    # gfortran 4.5 (nothing new)
+
+    # gfortran 4.6 (nothing new)
+
+    # gfortran 4.7
+    if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 7; then
+        H5_FCFLAGS="$H5_FCFLAGS -Wreal-q-constant -Wfunction-elimination"
+    fi
+
+    # gfortran 4.8
+    if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 8; then
+        H5_FCFLAGS="$H5_FCFLAGS -Wrealloc-lhs -Wrealloc-lhs-all"
+        # Turn off warnings for passing non-ANSI types to BIND().
+        # We pass a lot of hid_t, etc. types so this generates a LOT of spurious warnings.
+        H5_FCFLAGS="$H5_FCFLAGS -Wno-c-binding-type"
+    fi
+
+    # gfortran 4.9 (nothing new)
+
+    # gfortran 5
+    if test $f9x_vers_major -ge 5; then
+        H5_FCFLAGS="$H5_FCFLAGS -Wuse-without-only"
+    fi
+
+    # gfortran 6
+    if test $f9x_vers_major -ge 6; then
+        H5_FCFLAGS="$H5_FCFLAGS -Winteger-division"
     fi
 
+    # gfortran 7 (nothing new)
+
+    # gfortran 8
+    if test $f9x_vers_major -ge 8; then
+        H5_FCFLAGS="$H5_FCFLAGS -Wfrontend-loop-interchange"
+    fi
+
+    # gfortran 9 (nothing new)
+
     #################
     # Flags are set #
     #################
-- 
cgit v0.12


From 7d291d059da6287f769951c4854c566da0b93ce8 Mon Sep 17 00:00:00 2001
From: Dana Robinson <derobins@hdfgroup.org>
Date: Fri, 19 Jul 2019 02:48:00 -0500
Subject: Parallel Fortran tests now use the MPI module instead of including
 mpif.h.

---
 fortran/testpar/hyper.f90 | 3 ++-
 fortran/testpar/mdset.f90 | 3 ++-
 fortran/testpar/ptest.f90 | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/fortran/testpar/hyper.f90 b/fortran/testpar/hyper.f90
index 22f641d..c07636f 100644
--- a/fortran/testpar/hyper.f90
+++ b/fortran/testpar/hyper.f90
@@ -18,9 +18,10 @@
 
 SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
   USE HDF5
+  USE MPI
   USE TH5_MISC
+
   IMPLICIT NONE
-  INCLUDE 'mpif.h'
 
   INTEGER, INTENT(in) :: length                     ! array length
   LOGICAL, INTENT(in) :: do_collective              ! use collective I/O
diff --git a/fortran/testpar/mdset.f90 b/fortran/testpar/mdset.f90
index 70d2939..3de61c3 100644
--- a/fortran/testpar/mdset.f90
+++ b/fortran/testpar/mdset.f90
@@ -18,9 +18,10 @@
 
 SUBROUTINE multiple_dset_write(length, do_collective, do_chunk, mpi_size, mpi_rank, nerrors)
   USE HDF5
+  USE MPI
   USE TH5_MISC
+
   IMPLICIT NONE
-  INCLUDE 'mpif.h'
 
   INTEGER, INTENT(in) :: length                     ! array length
   LOGICAL, INTENT(in) :: do_collective              ! use collective I/O
diff --git a/fortran/testpar/ptest.f90 b/fortran/testpar/ptest.f90
index 14ac3b2..3b07f21 100644
--- a/fortran/testpar/ptest.f90
+++ b/fortran/testpar/ptest.f90
@@ -16,7 +16,7 @@
 !
 
 PROGRAM parallel_test
-  USE hdf5
+  USE HDF5
   USE MPI
   USE TH5_MISC 
   
-- 
cgit v0.12