# -*- 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