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.
This commit is contained in:
Dana Robinson 2019-07-17 01:23:44 -07:00
parent bdd54d0147
commit 8bd2c81cd5
10 changed files with 82 additions and 76 deletions

View File

@ -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

View File

@ -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

View File

@ -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
H5_FCFLAGS="$H5_FCFLAGS $arch"
##############
# Production #
##############
PROD_FCFLAGS=
#########
# 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_FCFLAGS="-g"
NO_SYMBOLS_FCFLAGS="-s"
#############
# Profiling #
#############
PROFILE_FCFLAGS="-pg"
################
# Optimization #
################
HIGH_OPT_FCFLAGS="-O2"
DEBUG_OPT_FCFLAGS="-O0"
NO_OPT_FCFLAGS="-O0"
############
# Warnings #
############
###########
# General #
###########
# General
FC_BASENAME=gfortran
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
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"
# Production
PROD_FCFLAGS=
#############################
# Version-specific warnings #
#############################
# Debug
DEBUG_FCFLAGS="-fbounds-check"
# 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
# Symbols
SYMBOLS_FCFLAGS="-g"
NO_SYMBOLS_FCFLAGS="-s"
# Profiling
PROFILE_FCFLAGS="-pg"
# Optimization
HIGH_OPT_FCFLAGS="-O2"
DEBUG_OPT_FCFLAGS="-O0"
NO_OPT_FCFLAGS="-O0"
# Flags are set
#################
# Flags are set #
#################
f9x_flags_set=yes
fi

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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