summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2019-07-29 21:13:24 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2019-07-29 21:13:24 (GMT)
commitd169391529f253a9903b8e6cacf38c59ceefab07 (patch)
treef8cb20ad68db5a9c8448bf6d0442e5ad4766a71d
parentf97e11e7635a0cd8728d4604ca5dceb3925ba44c (diff)
parent7d291d059da6287f769951c4854c566da0b93ce8 (diff)
downloadhdf5-d169391529f253a9903b8e6cacf38c59ceefab07.zip
hdf5-d169391529f253a9903b8e6cacf38c59ceefab07.tar.gz
hdf5-d169391529f253a9903b8e6cacf38c59ceefab07.tar.bz2
Merge pull request #1808 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:gnu-flags-work to develop
* commit '7d291d059da6287f769951c4854c566da0b93ce8': Parallel Fortran tests now use the MPI module instead of including mpif.h. First stab at gfortran versions. Tested on gfortran 7-9 so far. Moved the -std=f2008 option to gfortran 9 for now. 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.
-rw-r--r--MANIFEST1
-rw-r--r--config/conclude_fc.am31
-rw-r--r--config/gnu-fflags151
-rw-r--r--fortran/examples/Makefile.am2
-rw-r--r--fortran/src/Makefile.am2
-rw-r--r--fortran/test/Makefile.am2
-rw-r--r--fortran/testpar/Makefile.am2
-rw-r--r--fortran/testpar/hyper.f903
-rw-r--r--fortran/testpar/mdset.f903
-rw-r--r--fortran/testpar/ptest.f902
-rw-r--r--hl/fortran/examples/Makefile.am2
-rw-r--r--hl/fortran/src/Makefile.am3
-rw-r--r--hl/fortran/test/Makefile.am2
13 files changed, 130 insertions, 76 deletions
diff --git a/MANIFEST b/MANIFEST
index 02feb72..f5e718e 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..90a3656 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,38 @@ 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=""
+
+ # 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
+
+
+ ###############################
+ # 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 +75,113 @@ 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
+ H5_FCFLAGS="$H5_FCFLAGS $arch"
- # General
- FC_BASENAME=gfortran
- F9XSUFFIXFLAG=""
- FSEARCH_DIRS=""
- H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"
+ ##############
+ # Production #
+ ##############
- # 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
PROD_FCFLAGS=
- # Debug
- DEBUG_FCFLAGS="-fbounds-check"
+ #########
+ # Debug #
+ #########
+
+ 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"
+ fi
+
+ ###########
+ # Symbols #
+ ###########
- # Symbols
SYMBOLS_FCFLAGS="-g"
NO_SYMBOLS_FCFLAGS="-s"
- # Profiling
+ #############
+ # Profiling #
+ #############
+
PROFILE_FCFLAGS="-pg"
- # Optimization
- HIGH_OPT_FCFLAGS="-O2"
- DEBUG_OPT_FCFLAGS="-O0"
+ ################
+ # Optimization #
+ ################
+
+ 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"
- # Flags are set
+ ############
+ # Warnings #
+ ############
+
+ ###########
+ # General #
+ ###########
+
+ H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"
+ H5_FCFLAGS="$H5_FCFLAGS -Waliasing -Wcharacter-truncation -Wimplicit-procedure"
+
+ #############################
+ # Version-specific warnings #
+ #############################
+
+ # 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 #
+ #################
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/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
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