Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates PGI C/C++ configurations #715

Merged
merged 2 commits into from
Jun 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
./config/lt_vers.am
./config/Makefile.am.blank
./config/netbsd
./config/pgi-cxxflags
./config/pgi-fflags
./config/pgi-flags
./config/solaris
Expand Down
10 changes: 6 additions & 4 deletions config/linux-gnulibc1
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ fi
# Figure out GNU CXX compiler flags
. $srcdir/config/gnu-cxxflags

# Figure out PGI CXX compiler flags
. $srcdir/config/pgi-cxxflags

# Figure out Clang CXX compiler flags
. $srcdir/config/clang-cxxflags

Expand Down Expand Up @@ -314,6 +317,9 @@ fi
# check if the compiler_version_info is already set
if test -z "$cxx_version_info"; then
case $CXX in
*pgc++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'pgc++'`
;;
*g++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
grep 'GCC' | sed 's/\(.*(GCC) [-a-z0-9\. ]*\).*/\1/'`
Expand All @@ -322,10 +328,6 @@ case $CXX in
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'Version' |\
sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
;;
*pgCC*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'pgCC'`
;;

*mpicxx*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -v 2>&1 | grep 'version' |\
sed 's/^[a-z0-9]* for //' |\
Expand Down
96 changes: 96 additions & 0 deletions config/pgi-cxxflags
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
# 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://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].


# This file should be sourced into configure if the compiler is the
# PGI pgc++ compiler or a derivative. It is careful not to do anything
# if the compiler is not PGI; otherwise `cxx_flags_set' is set to `yes'
#

# Get the compiler version in a way that works for pgc++
# pgc++ unless a compiler version is already known
#
# cxx_vendor: The compiler name: pgc++
# cxx_version: Version number: 5.0-2, 5.2-2
#
if test X = "X$cxx_flags_set"; then
cxx_version="`$CXX $CXXFLAGS -V 2>&1 |grep '^pgc++ '`"
if test X != "X$cxx_version"; then
cxx_vendor=`echo $cxx_version |sed 's/\([a-z]*++\).*/\1/'`
cxx_version=`echo $cxx_version |sed 's/pgc++ \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$CXX' is PGI $cxx_vendor-$cxx_version"

# Some version numbers
# PGI version numbers are of the form: "major.minor-patch"
cxx_vers_major=`echo $cxx_version | cut -f1 -d.`
cxx_vers_minor=`echo $cxx_version | cut -f2 -d. | cut -f1 -d-`
cxx_vers_patch=`echo $cxx_version | cut -f2 -d. | cut -f2 -d-`
test -n "$cxx_vers_major" || cxx_vers_major=0
test -n "$cxx_vers_minor" || cxx_vers_minor=0
test -n "$cxx_vers_patch" || cxx_vers_patch=0
cxx_vers_all=`expr $cxx_vers_major '*' 1000000 + $cxx_vers_minor '*' 1000 + $cxx_vers_patch`
fi
fi

# Common PGI flags for various situations
if test "X-pgc++" = "X-$cxx_vendor"; then

# C++-specific
H5_CXXFLAGS="$H5_CXXFLAGS -std=c++11 -Minform=warn"

##############
# Production #
##############

# NDEBUG is handled explicitly by the configure script
PROD_CXXFLAGS="-fast"

#########
# Debug #
#########

# NDEBUG is handled explicitly by the configure script
# -g is handled by the symbols flags
DEBUG_CXXFLAGS="-Mbounds"

###########
# Symbols #
###########

SYMBOLS_CXXFLAGS="-g"
NO_SYMBOLS_CXXFLAGS="-s"

#############
# Profiling #
#############

PROFILE_CXXFLAGS="-Mprof=func,line"
# Use this for profiling with gprof
#PROFILE_CXXFLAGS="-pg"

################
# Optimization #
################

HIGH_OPT_CXXFLAGS="-O4"
DEBUG_OPT_CXXFLAGS="-gopt -O2"
NO_OPT_CXXFLAGS="-O0"

# Flags are set
cxx_flags_set=yes
fi

# Clear cxx info if no flags set
if test "X-$cxx_flags_set" = "X-"; then
cxx_vendor=
cxx_version=
fi
63 changes: 29 additions & 34 deletions config/pgi-flags
Original file line number Diff line number Diff line change
Expand Up @@ -66,50 +66,45 @@ if test "X-pgcc" = "X-$cc_vendor"; then
#esac

# General
H5_CFLAGS="$H5_CFLAGS $arch -c99 -Minform=inform"

# Production
case "$cc_vendor-$cc_version" in
pgcc-10.6*)
PROD_CFLAGS=
;;
pgcc-9.*)
PROD_CFLAGS=
;;
*)
PROD_CFLAGS="-fast"
;;
esac

# Debug
H5_CFLAGS="$H5_CFLAGS $arch -c99 -Minform=warn"

##############
# Production #
##############

# NDEBUG is handled explicitly by the configure script
PROD_CFLAGS="-fast"

#########
# Debug #
#########

# NDEBUG is handled explicitly by the configure script
# -g is handled by the symbols flags
DEBUG_CFLAGS="-Mbounds"

# Symbols
###########
# Symbols #
###########

SYMBOLS_CFLAGS="-g"
NO_SYMBOLS_CFLAGS="-s"

# Profiling
#############
# Profiling #
#############

PROFILE_CFLAGS="-Mprof=func,line"
# Use this for profiling with gprof
#PROFILE_CFLAGS="-pg"

# Optimization
case "$cc_vendor-$cc_version" in
# Tweak down compiler optimizations for v10.6, it has a bug
pgcc-10.6*)
HIGH_OPT_CFLAGS="-O1"
;;
# Tweak down compiler optimizations for v9.x
pgcc-9.*)
HIGH_OPT_CFLAGS="-O1"
;;
*)
HIGH_OPT_CFLAGS=
;;
esac
DEBUG_OPT_CFLAGS=
NO_OPT_CFLAGS=
################
# Optimization #
################

HIGH_OPT_CFLAGS="-O4"
DEBUG_OPT_CFLAGS="-gopt -O2"
NO_OPT_CFLAGS="-O0"

# Flags are set
cc_flags_set=yes
Expand Down
19 changes: 18 additions & 1 deletion release_docs/RELEASE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,31 @@ New Features

Configuration:
-------------
- Adds C++ Autotools configuration file for PGI

* Checks for pgc++ as the compiler name (was: pgCC)
* Sets -std=c++11
* Other options basically match new C options (below)

(DER - 2021/06/02)

- Updates PGI C options

* -Minform set to warn (was: inform) to suppress spurious messages
* Sets -gopt -O2 as debug options
* Sets -O4 as 'high optimization' option
* Sets -O0 as 'no optimization' option
* Removes specific settings for PGI 9 and 10

(DER - 2021/06/02)

- A C++11-compliant compiler is now required to build the C++ wrappers

CMAKE_CXX_STANDARD is now set to 11 when building with CMake and
-std=c++11 is added when building with clang/gcc via the Autotools.

(DER - 2021/05/27)


- CMake will now run the shell script tests in test/ by default

The test directory includes several shell script tests that previously
Expand Down