# Shell script
# Copyright (C) 2004-2006 EDF
# This file is part of the FVM software package. For license
# information, see the LICENSE file in the top level directory of the
# FVM source distribution.
# This file should be sourced by configure, and sets the following
# environment variables corresponding to the recommended settings for a
# given OS/CPU/compiler combination:
#
# cppflags_default # Base CPPFLAGS (default: "")
#
# cflags_default # Base CFLAGS (default: "")
# cflags_default_dbg # Added to $CFLAGS for debugging (default: "-g")
# cflags_default_opt # Added to $CFLAGS for optimization (default: "-O")
# cflags_default_prf # Added to $CFLAGS for profiling (default: "")
#
# ldflags_default # Base LDFLAGS (default: "")
# ldflags_default_dbg # Added to $LDFLAGS for debugging (default: "-g")
# ldflags_default_opt # Added to $LDFLAGS for optimization (default: "-O")
# ldflags_default_prf # Added to $LDFLAGS for profiling (default: "")
#
# fvm_disable_shared # Disable shared librairies (default: "")
# Two other environment variable strings are defined, containing possibly
# more detailed compiler information:
#
# fvm_ac_cc_version # Compiler version string, 1 line max.
# fvm_ac_cc_version_full # Compiler version string, 10 lines max.
# The sourcing approach and some tests are borrowed from the HDF5 configure
# environment.
#
# We choose to source this script rather than use a more classical m4 macro
# for this functionality, so that a user may more easily modify
# default compiler options or port to a new machine without requiring
# any advanced knowledge of autoconf or m4 macros, or installation of
# an autoconf environment on the target machine.
# Initialize local variables
#---------------------------
outfile=fvm_ac_cc_env-tmp
fvm_ac_cc_version=unknown
# Some compilers require a file to compile even for version info.
cat > conftest.c <<\_______EOF
int main()
{
return 0;
}
_______EOF
# Compiler version info may be localization dependent (especially for gcc)
save_LANG=$LANG
unset LANG;
# Default pre-processor flags (not too dependent on compiler)
#----------------------------
case "$host_os" in
*)
cppflags_default=""
;;
esac
# Are we using gcc ?
#-------------------
if test "x$GCC" = "xyes"; then
# Version strings for logging purposes and known compiler flag
$CC -v > $outfile 2>&1
fvm_ac_cc_version=`grep -i version $outfile`
fvm_compiler_known=yes
# Practical version info for option setting
fvm_cc_version="`$CC -v 2>&1 |grep 'gcc version' |\
sed 's/.*gcc version \([-a-z0-9\.]*\).*/\1/'`"
fvm_cc_vendor=`echo $fvm_cc_version |sed 's/\([a-z]*\).*/\1/'`
fvm_cc_version=`echo $fvm_cc_version |sed 's/[-a-z]//g'`
if test "x" = "x$fvm_cc_vendor" -a "x" != "x$fvm_cc_version"; then
fvm_cc_vendor=gcc
fi
if test "-" != "$fvm_cc_vendor-$fvm_cc_version"; then
echo "compiler '$CC' is GNU $fvm_cc_vendor-$fvm_cc_version"
fi
# Some version numbers
fvm_cc_vers_major=`echo $fvm_cc_version | cut -f1 -d.`
fvm_cc_vers_minor=`echo $fvm_cc_version | cut -f2 -d.`
fvm_cc_vers_patch=`echo $fvm_cc_version | cut -f3 -d.`
test -n "$fvm_cc_vers_major" || fvm_cc_vers_major=0
test -n "$fvm_cc_vers_minor" || fvm_cc_vers_minor=0
test -n "$fvm_cc_vers_patch" || fvm_cc_vers_patch=0
# Default compiler flags
cflags_default="-ansi -funsigned-char -pedantic -W -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wunused"
cflags_default_dbg="-g"
cflags_default_opt="-O2"
cflags_default_prf="-pg"
# Modify default flags on certain systems
case "$host-os-$host_cpu" in
*i?86|*x86_64)
cflags_default_opt="-funroll-loops -O2 -Wuninitialized"
case "$host_cpu" in
i686)
case "$fvm_cc_vendor-$fvm_cc_version" in
gcc-2.9[56]*|gcc-3*|gcc-4*)
cflags_default_opt="$cflags_default_opt -march=i686"
;;
esac
esac
;;
*alphaev6|*alphaev67|*alphaev68|*alphaev7)
cflags_default_opt="-mcpu=ev6 -O"
;;
esac
# Modify default flags depending on gcc version (as older versions
# may not handle all flags)
case "$fvm_cc_vendor-$fvm_cc_version" in
gcc-2.9[56]*)
cflags_default="$cflags_default -Wno-long-long"
;;
gcc-3.*|gcc-4.*)
cflags_default="`echo $cflags_default | sed -e 's/-ansi/-std=c99/g'`"
cflags_default="$cflags_default -Wfloat-equal -Wpadded"
;;
esac
# Otherwise, are we using pgcc ?
#-------------------------------
else
$CC -V 2>&1 | grep 'The Portland Group' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is Portland Group pgcc"
# Version strings for logging purposes and known compiler flag
$CC -V conftest.c > $outfile 2>&1
fvm_ac_cc_version=`grep -i pgcc $outfile`
fvm_compiler_known=yes
# Default compiler flags
cflags_default="-Xa -fPIC"
cflags_default_dbg="-g"
cflags_default_opt="-fast -fastsse"
cflags_default_prf="-Mprof=func,lines"
fi
fi
# Compiler still not identified
#------------------------------
if test "x$fvm_compiler_known" != "xyes" ; then
case "$host_os" in
linux* | none)
# IBM Blue Gene
#--------------
$CC -qversion 2>&1 | grep 'XL C' | grep 'Blue Gene' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is IBM XL C compiler for Blue Gene"
# Version strings for logging purposes and known compiler flag
$CC -qversion > $outfile 2>&1
fvm_ac_cc_version=`grep 'XL C' $outfile`
fvm_compiler_known=yes
# Default compiler flags
cppflags_default="-I/bgl/BlueLight/ppcfloor/bglsys/include"
cflags_default="-qmaxmem=-1 -qarch=440d -qtune=440"
cflags_default_opt="-g -O3"
cflags_default_prf="-pg"
# Default linker flags
ldflags_default="-Wl,-allow-multiple-definition -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -lnss_files -lnss_dns -lresolv"
ldflags_default_opt="-g -O3"
ldflags_default_dbg="-g"
ldflags_default_prf="-pg"
fvm_linker_set=yes
# Disable shared libraries in all cases
fvm_disable_shared=yes
fi
;;
osf*)
# Native Compaq Tru64 Unix C compiler
#------------------------------------
$CC -V 2>&1 | grep 'Compaq Tru64' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is Compaq Tru64 compiler"
# Version strings for logging purposes and known compiler flag
$CC -V conftest.c > $outfile 2>&1
fvm_ac_cc_version=`grep 'Compaq C' $outfile`
fvm_compiler_known=yes
# Default compiler flags
case "$host_cpu" in
alphaev6|alphaev67|alphaev68|alphaev7)
cflags_default="-arch host -tune host -ansi_alias -std -check_bounds -trapuv -check -msg_enable alignment -msg_enable noansi -msg_enable performance -portable -msg_enable c_to_cxx"
cflags_default_opt="-O"
cflags_default_dbg="-g"
cflags_default_prf="-pg"
;;
esac
fi
;;
uxpv*)
# Native Fujitsu vectorizing C compiler (tested on VPP5000)
#---------------------------------------
$CC -V 2>&1 | grep 'Fujitsu' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is Fujitsu compiler"
# Version strings for logging purposes and known compiler flag
$CC -V conftest.c > $outfile 2>&1
fvm_ac_cc_version=`grep ccom $outfile`
fvm_compiler_known=yes
fvm_linker_set=yes
# Default compiler flags
cflags_default="-KA64 -Kvp"
cflags_default_opt="-O"
cflags_default_dbg="-g -Kargchk -w4"
cflags_default_prf="-pg"
# Default linker flags
ldflags_default="-Kvp -Kargchk -Wl,-S1:d"
ldflags_default_opt="-O"
ldflags_default_dbg="-g"
ldflags_default_prf="-pg"
fvm_linker_set=yes
fi
;;
irix5.*|irix6.*)
# Native SGI IRIX C compiler
#---------------------------
$CC -version 2>&1 | grep 'MIPSpro' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is MIPSpro compiler"
# Version strings for logging purposes and known compiler flag
$CC -version > $outfile 2>&1
fvm_ac_cc_version=`grep MIPSpro $outfile`
fvm_compiler_known=yes
# Default compiler flags
cflags_default="-c99 -64"
cflags_default_opt="-O2 -woff 1429,1521"
cflags_default_dbg="-g -woff 1429,1521,1209 -fullwarn"
cflags_default_prf="-O0"
fi
;;
hpux*)
# Native HP-UX C compiler
#------------------------
$CC -V conftest.c 2>&1 | grep 'HP' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is HP compiler"
# Version strings for logging purposes and known compiler flag
$CC -V conftest.c > $outfile 2>&1
fvm_ac_cc_version=`grep ccom $outfile`
fvm_compiler_known=yes
fvm_linker_set=yes
# Default compiler flags
cflags_default="-Aa +e +DA2.0W"
cflags_default_opt="+O2"
cflags_default_dbg="-g"
cflags_default_prf="-G"
# Default linker flags
ldflags_default="+DA2.0W"
ldflags_default_opt="+O2"
ldflags_default_dbg="-g"
ldflags_default_prf="-fbexe"
fi
;;
solaris2.*)
# Sun Workshop compiler
#----------------------
$CC -V 2>&1 | grep 'WorkShop Compilers' > /dev/null
if test "$?" = "0" ; then
echo "compiler '$CC' is Sun WorkShop Compilers"
# Version strings for logging purposes and known compiler flag
$CC -V conftest.c > $outfile 2>&1
fvm_ac_cc_version=`grep cc $outfile`
fvm_compiler_known=yes
# Default compiler flags
cflags_default="-Xa"
cflags_default_opt="-xO2"
cflags_default_dbg="-g"
cflags_default_prf="-pg"
fi
;;
*)
# Unknown
#--------
cflags_default=""
cflags_default_opt="-O"
cflags_default_dbg="-g"
cflags_default_prf=""
;;
esac
fi
# Default linker flags
#---------------------
if test "x$fvm_linker_set" != "xyes" ; then
case "$host_os" in
linux*)
ldflags_default=""
ldflags_default_opt="-O"
ldflags_default_dbg="-g"
ldflags_default_prf="-pg"
;;
osf*)
ldflags_default=""
ldflags_default_opt="-O"
ldflags_default_dbg="-g3"
ldflags_default_prf="-pg"
;;
irix5.*|irix6.*)
ldflags_default="-64 -Wl,-woff,85"
ldflags_default_opt=""
ldflags_default_dbg="-g"
ldflags_default_prf=""
;;
solaris2.*)
ldflags_default_opt=""
ldflags_default_dbg="-g"
ldflags_default_prf=""
;;
*)
ldflags_default=""
ldflags_default_opt="-O"
ldflags_default_dbg="-g"
ldflags_default_prf="-pg"
;;
esac
fi
# Finish
export LANG=$save_LANG
if test -f $outfile ; then
fvm_ac_cc_version_full=`sed -e '11,$d' $outfile`
fi
# Clean temporary files
rm -f conftest* a.out $outfile
syntax highlighted by Code2HTML, v. 0.9.1