2019-07-17 16:23:44 +08:00
|
|
|
# -*- shell-script -*-
|
2004-12-17 10:27:41 +08:00
|
|
|
#
|
2007-02-15 06:29:52 +08:00
|
|
|
# Copyright by The HDF Group.
|
2005-10-21 22:54:41 +08:00
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# This file is part of HDF5. The full HDF5 copyright notice, including
|
|
|
|
# terms governing use, modification, and redistribution, is contained in
|
2024-10-19 12:13:04 +08:00
|
|
|
# the LICENSE file, which can be found at the root of the source code
|
2021-02-17 22:52:36 +08:00
|
|
|
# distribution tree, or in https://www.hdfgroup.org/licenses.
|
2017-04-18 03:32:16 +08:00
|
|
|
# If you do not have access to either file, you may request a copy from
|
|
|
|
# help@hdfgroup.org.
|
2005-10-21 22:54:41 +08:00
|
|
|
|
|
|
|
|
2004-12-17 10:27:41 +08:00
|
|
|
# This file should be sourced into configure if the compiler is the
|
|
|
|
# GNU g95/gfortran compiler or a derivative. It is careful not to do anything
|
|
|
|
# if the compiler is not GNU; otherwise `f9x_flags_set' is set to `yes'
|
|
|
|
#
|
|
|
|
|
2020-04-05 23:50:08 +08:00
|
|
|
#
|
|
|
|
# Prepend `$srcdir/config/gnu-warnings/` to the filename suffix(es) given as
|
|
|
|
# subroutine argument(s), remove comments starting with # and ending
|
|
|
|
# at EOL, replace spans of whitespace (including newlines) with spaces,
|
|
|
|
# and re-emit the file(s) thus filtered on the standard output stream.
|
|
|
|
#
|
|
|
|
load_gnu_arguments()
|
|
|
|
{
|
|
|
|
set -- $(for arg; do
|
2020-04-24 03:32:29 +08:00
|
|
|
sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg}
|
2020-04-05 23:50:08 +08:00
|
|
|
done)
|
|
|
|
IFS=' ' echo "$*"
|
|
|
|
}
|
|
|
|
|
2004-12-17 10:27:41 +08:00
|
|
|
# Get the compiler version in a way that works for GNU fortran
|
|
|
|
# gfortran unless a compiler version is already known
|
|
|
|
#
|
|
|
|
# f9x_vendor: The compiler name: gfortran
|
|
|
|
# f9x_version: Version number: 5.0-2, 5.2-2
|
|
|
|
#
|
|
|
|
if test X = "X$f9x_flags_set"; then
|
2006-04-26 05:19:14 +08:00
|
|
|
f9x_version="`$FC $FCFLAGS $H5_FCFLAGS -v 2>&1 |grep 'gcc version' |\
|
2019-07-17 16:23:44 +08:00
|
|
|
sed 's/.*gcc version \([-a-z0-9\.]*\).*/\1/'`"
|
2004-12-17 10:27:41 +08:00
|
|
|
if test X != "X$f9x_version"; then
|
|
|
|
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
|
|
|
|
f9x_vendor=gfortran
|
|
|
|
fi
|
|
|
|
if test "-" != "$f9x_vendor-$f9x_version"; then
|
[svn-r10158] Purpose:
Automake version upgrade
Description:
Upgraded automake version from 1.6.2 to 1.9.5.
Changed bin/reconfigure script to use automake 1.9.5.
Changed configure.in and Makefiles to use new FCFLAGS and FC variables
instead of FFLAGS and F9X.
Automake and configure should now do the lion's share of the work
supporting Fortran 9X; macros in acsite.m4 are now mostly unused (will
be cleaned later).
Altered how configure handles pmake; now root-level Makefile.in is
processed by bin/reconfigure to have a .MAKEFLAGS target, since
automake no longer allows us to define unused variables.
Configure now always checks for C++ compiler even if it is not
used, since automake thinks this is the Right Thing To Do and
will break otherwise.
Platforms tested:
Sol, copper, heping, mir, sleipnir, eirene, pommier, kelgia, modi4.
2005-03-08 01:57:27 +08:00
|
|
|
echo "compiler '$FC' is GNU $f9x_vendor-$f9x_version"
|
2004-12-17 10:27:41 +08:00
|
|
|
fi
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
# Get the compiler version numbers
|
2004-12-17 10:27:41 +08:00
|
|
|
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
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "X-gfortran" = "X-$f9x_vendor"; then
|
2019-07-17 16:23:44 +08:00
|
|
|
|
|
|
|
FC_BASENAME=gfortran
|
|
|
|
F9XSUFFIXFLAG=""
|
|
|
|
FSEARCH_DIRS=""
|
|
|
|
|
2019-07-19 14:40:52 +08:00
|
|
|
# Need Fortran 2008 support for storage_size() in gcc 4.6 on
|
|
|
|
# (2008ts in some versions)
|
|
|
|
if test $f9x_vers_major -ge 8; then
|
2019-07-18 14:48:16 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS -std=f2008"
|
2019-07-19 14:40:52 +08:00
|
|
|
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"
|
2019-07-18 14:48:16 +08:00
|
|
|
fi
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
|
|
|
|
###############################
|
|
|
|
# Architecture-specific flags #
|
|
|
|
###############################
|
2004-12-17 10:27:41 +08:00
|
|
|
|
|
|
|
arch=
|
|
|
|
# Nothing currently. (Uncomment code below and modify to add any)
|
|
|
|
#case "$host_os-$host_cpu" in
|
|
|
|
# *-i686)
|
|
|
|
# arch="-march=i686"
|
|
|
|
# ;;
|
|
|
|
#esac
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS $arch"
|
2004-12-17 10:27:41 +08:00
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
##############
|
|
|
|
# Production #
|
|
|
|
##############
|
2016-01-28 03:12:38 +08:00
|
|
|
|
2016-02-17 09:09:04 +08:00
|
|
|
PROD_FCFLAGS=
|
2004-12-17 10:27:41 +08:00
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
#########
|
|
|
|
# Debug #
|
|
|
|
#########
|
|
|
|
|
2019-07-19 14:40:52 +08:00
|
|
|
if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 5; then
|
2019-07-17 16:23:44 +08:00
|
|
|
DEBUG_FCFLAGS="-fcheck=all"
|
|
|
|
else
|
|
|
|
DEBUG_FCFLAGS="-fbounds-check"
|
|
|
|
fi
|
|
|
|
|
2021-02-09 07:23:09 +08:00
|
|
|
########################
|
|
|
|
# Enhanced Diagnostics #
|
|
|
|
########################
|
|
|
|
|
2021-03-04 20:29:10 +08:00
|
|
|
if test $f9x_vers_major -ge 10; then
|
2021-02-09 07:23:09 +08:00
|
|
|
NO_DIAGS_FCFLAGS="-fdiagnostics-urls=never -fno-diagnostics-color"
|
|
|
|
fi
|
|
|
|
DIAGS_FCFLAGS=
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
###########
|
|
|
|
# Symbols #
|
|
|
|
###########
|
2004-12-17 10:27:41 +08:00
|
|
|
|
2016-02-17 09:09:04 +08:00
|
|
|
NO_SYMBOLS_FCFLAGS="-s"
|
2020-04-05 23:50:08 +08:00
|
|
|
SYMBOLS_FCFLAGS="-g"
|
2016-01-28 05:45:23 +08:00
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
#############
|
|
|
|
# Profiling #
|
|
|
|
#############
|
|
|
|
|
2016-01-28 05:45:23 +08:00
|
|
|
PROFILE_FCFLAGS="-pg"
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
################
|
|
|
|
# Optimization #
|
|
|
|
################
|
|
|
|
|
2019-07-19 14:40:52 +08:00
|
|
|
if test $f9x_vers_major -le 4; then
|
2019-08-01 00:08:16 +08:00
|
|
|
HIGH_OPT_FCFLAGS="-O3"
|
|
|
|
DEBUG_OPT_FCFLAGS=
|
2019-07-19 14:40:52 +08:00
|
|
|
else
|
2019-08-01 00:08:16 +08:00
|
|
|
HIGH_OPT_FCFLAGS="-O3"
|
|
|
|
DEBUG_OPT_FCFLAGS="-Og"
|
2019-07-19 14:40:52 +08:00
|
|
|
fi
|
2016-01-28 05:45:23 +08:00
|
|
|
NO_OPT_FCFLAGS="-O0"
|
2004-12-17 10:27:41 +08:00
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
############
|
|
|
|
# Warnings #
|
|
|
|
############
|
|
|
|
|
|
|
|
###########
|
|
|
|
# General #
|
|
|
|
###########
|
|
|
|
|
2020-04-09 06:02:34 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS $(load_gnu_arguments gfort-general)"
|
2019-07-17 16:23:44 +08:00
|
|
|
|
2022-08-23 23:48:14 +08:00
|
|
|
NO_DEVELOPER_WARNING_FCFLAGS="$NO_DEVELOPER_WARNING_FCFLAGS $(load_gnu_arguments gfort-no-developer-general)"
|
|
|
|
DEVELOPER_WARNING_FCFLAGS="$DEVELOPER_WARNING_FCFLAGS $(load_gnu_arguments gfort-developer-general)"
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
#############################
|
|
|
|
# Version-specific warnings #
|
|
|
|
#############################
|
|
|
|
|
2020-04-05 23:50:08 +08:00
|
|
|
# gfortran >= 4.8
|
2019-07-19 14:40:52 +08:00
|
|
|
if test $f9x_vers_major -ge 5 -o $f9x_vers_major -eq 4 -a $f9x_vers_minor -ge 8; then
|
2020-04-05 23:50:08 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS $(load_gnu_arguments gfort-4.8)"
|
2023-01-03 22:18:48 +08:00
|
|
|
DEVELOPER_WARNING_FCFLAGS="$DEVELOPER_WARNING_FCFLAGS $(load_gnu_arguments gfort-developer-4.8)"
|
|
|
|
NO_DEVELOPER_WARNING_FCFLAGS="$NO_DEVELOPER_WARNING_FCFLAGS $(load_gnu_arguments gfort-no-developer-4.8)"
|
2019-07-19 14:40:52 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
# gfortran 4.9 (nothing new)
|
|
|
|
|
2021-10-28 05:32:33 +08:00
|
|
|
# gfortran >= 5
|
|
|
|
if test $f9x_vers_major -ge 5; then
|
2022-08-23 23:48:14 +08:00
|
|
|
DEVELOPER_WARNING_FCFLAGS="$DEVELOPER_WARNING_FCFLAGS $(load_gnu_arguments gfort-developer-5)"
|
2021-10-28 05:32:33 +08:00
|
|
|
fi
|
2019-07-19 14:40:52 +08:00
|
|
|
|
2020-04-05 23:50:08 +08:00
|
|
|
# gfortran >= 6
|
2019-07-19 14:40:52 +08:00
|
|
|
if test $f9x_vers_major -ge 6; then
|
2020-04-05 23:50:08 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS $(load_gnu_arguments gfort-6)"
|
2019-07-17 16:23:44 +08:00
|
|
|
fi
|
|
|
|
|
2019-07-19 14:40:52 +08:00
|
|
|
# gfortran 7 (nothing new)
|
|
|
|
|
2020-04-05 23:50:08 +08:00
|
|
|
# gfortran >= 8
|
2019-07-19 14:40:52 +08:00
|
|
|
if test $f9x_vers_major -ge 8; then
|
2020-04-05 23:50:08 +08:00
|
|
|
H5_FCFLAGS="$H5_FCFLAGS $(load_gnu_arguments gfort-8)"
|
2019-07-19 14:40:52 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
# gfortran 9 (nothing new)
|
|
|
|
|
2019-07-17 16:23:44 +08:00
|
|
|
#################
|
|
|
|
# Flags are set #
|
|
|
|
#################
|
2004-12-17 10:27:41 +08:00
|
|
|
f9x_flags_set=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Clear f9x info if no flags set
|
|
|
|
if test "X-$f9x_flags_set" = "X-"; then
|
|
|
|
f9x_vendor=
|
|
|
|
f9x_version=
|
|
|
|
fi
|
|
|
|
|