hdf5/config/apple
Dana Robinson a6d1bda6d2
Update Autotools to correctly configure oneAPI (#3751)
* Update Autotools to correctly configure oneAPI

Splits the Intel config files under the Autotools into 'classic'
Intel and oneAPI versions, fixing 'unsupported option' messages.

Also turns off `-check uninit` (new in 2023) in Fortran, which kills
the H5_buildiface program due to false positives.

* Enable Fortran in oneAPI CI workflow

* Turn on Fortran in CMake, update LD_LIBRARY_PATH

* Go back to disabling Fortran w/ Intel

For some reason there's a linking problem w/ Fortran

error while loading shared libraries: libifport.so.5: cannot open shared object file: No such file or directory
2023-10-23 12:50:15 -07:00

202 lines
5.4 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 is part of the HDF5 build script. It is processed shortly
# after configure starts and defines, among other things, flags for
# the various compile modes.
#
# See BlankForm in this directory for details.
# The default compiler is `clang'.
# No support for OS older than darwin 10.X.
if test "X-" = "X-$CC"; then
case "$host_os" in
darwin10.*) # Snow Leopard. Use gcc/g++ because clang++ is not available.
CC=gcc
CC_BASENAME=gcc
;;
*)
if test "X-$enable_parallel" = "X-yes"; then
# default to use mpicc which is the defacto MPI compiler name
CC=mpicc
CC_BASENAME=mpicc
else
CC=clang
CC_BASENAME=clang
fi
# Production
PROD_CFLAGS="-O3"
PROD_CPPFLAGS=
# Debug
DEBUG_CFLAGS="-g -O0"
DEBUG_CPPFLAGS=
# Profile
# Use this for profiling with gprof
# Just "-g" for now. More later.
PROFILE_CFLAGS="-g"
PROFILE_CPPFLAGS=
;;
esac
fi
# Figure out C compiler flags
. $srcdir/config/gnu-flags
. $srcdir/config/clang-flags
. $srcdir/config/oneapi-flags
. $srcdir/config/intel-flags
if test "X-" = "X-$FC"; then
case $CC_BASENAME in
gcc*)
FC=gfortran
FC_BASENAME=gfortran
;;
icx*)
FC=ifx
FC_BASENAME=ifx
;;
icc*)
FC=ifort
FC_BASENAME=ifort
;;
mpicc*)
FC=mpif90
FC_BASENAME=mpif90
;;
clang)
# clang has no fortran compiler. Use gfortran.
FC=gfortran
FC_BASENAME=gfortran
;;
esac
fi
# Figure out FORTRAN compiler flags
. $srcdir/config/gnu-fflags
. $srcdir/config/oneapi-fflags
. $srcdir/config/intel-fflags
# The default C++ compiler is `clang++'.
if test "X-" = "X-$CXX"; then
case $CC_BASENAME in
gcc)
CXX=g++
CXX_BASENAME=g++
;;
icx)
CXX=icpx
CXX_BASENAME=icpx
;;
icc)
CXX=icpc
CXX_BASENAME=icpc
;;
mpicc*)
FC=mpif90
FC_BASENAME=mpif90
;;
clang)
CXX=clang++
CXX_BASENAME=clang++
;;
esac
fi
# Figure out C++ compiler flags
. $srcdir/config/oneapi-cxxflags
. $srcdir/config/intel-cxxflags # Do this ahead of GNU to avoid icpc being detected as g++
. $srcdir/config/gnu-cxxflags
. $srcdir/config/clang-cxxflags
# compiler version strings
case $CC in
clang)
cc_version_info=`$CC $CFLAGS $H5_CFLAGS --version 2>&1 |\
grep 'Apple' | sed 's/(.*//'`
;;
*gcc*)
cc_version_info=`$CC $CFLAGS $H5_CFLAGS --version 2>&1 | grep -v 'PathScale' |\
grep 'GCC' | sed 's/.*\((GCC) [-a-z0-9\. ]*.*\)/\1/'`
;;
*icx*)
cc_version_info=`$CC $CCFLAGS $H5_CCFLAGS -V 2>&1 | grep 'Version' |\
sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
;;
*icc*)
cc_version_info=`$CC $CCFLAGS $H5_CCFLAGS -V 2>&1 | grep 'Version' |\
sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
;;
*)
echo "No match to get cc_version_info for $CC"
;;
esac
# Figure out Fortran compiler flags and version strings
case $FC in
*gfortran*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS --version 2>&1 |\
grep 'GCC' | sed 's/\(.*(GCC) [-a-z0-9\. ]*\).*/\1/'`
;;
*ifx*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'Version' |\
sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
;;
*ifc*|*ifort*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'Version' |\
sed 's/\(Intel.* Compiler\).*\( Version [a-z0-9\.]*\).*\( Build [0-9]*\)/\1\2\3/'`
;;
*)
echo "No match to get fc_version_info and flags for $FC"
;;
esac
# get c++ version info
case $CXX in
clang++)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
grep 'Apple' | sed 's/(.*//'`
;;
*g++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
grep 'GCC' | sed 's/.*\((GCC) [-a-z0-9\. ]*.*\)/\1/'`
;;
*icpx*)
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/'`
;;
*icpc*)
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/'`
;;
*)
echo "No match to get cxx_version_info for $CXX"
;;
esac