hdf5/config/nvidia-cxxflags
2023-10-18 12:44:42 -07:00

102 lines
2.8 KiB
Bash

# -*- 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
# help@hdfgroup.org.
# This file should be sourced into configure if the compiler is the
# NVIDIA nvc++ compiler or a derivative. It is careful not to do anything
# if the compiler is not NVIDIA; otherwise `cxx_flags_set' is set to `yes'
#
# Get the compiler version in a way that works for NVIDIA nvc++
# unless a compiler version is already known
#
# cxx_vendor: The compiler name: nvc++
# 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 '^nvc++ '`"
if test X != "X$cxx_version"; then
cxx_vendor=`echo $cxx_version |sed 's/\([a-z]*++\).*/\1/'`
cxx_version=`echo $cxx_version |sed 's/nvc++ \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$CXX' is NVIDIA $cxx_vendor-$cxx_version"
# Some version numbers
# NVIDIA 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-nvc++" = "X-$cxx_vendor"; then
###########
# General #
###########
# Default to C++11 standard
H5_CXXFLAGS="$H5_CXXFLAGS -std=c++11 -Minform=warn"
##############
# Production #
##############
PROD_CXXFLAGS=
#########
# Debug #
#########
# NDEBUG is handled explicitly in configure
# -g is handled by the symbols flags
DEBUG_CXXFLAGS="-Mbounds"
###########
# Symbols #
###########
NO_SYMBOLS_CXXFLAGS="-s"
SYMBOLS_CXXFLAGS="-g"
#############
# 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