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