From 8bd2c81cd58f3346de7d4e216ffb854835ac741e Mon Sep 17 00:00:00 2001 From: Dana Robinson 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 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 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 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