diff --git a/config/freebsd b/config/freebsd index f4a5518dae..80009b0896 100644 --- a/config/freebsd +++ b/config/freebsd @@ -11,16 +11,10 @@ if test "X-" = "X-$CC"; then CC_BASENAME=gcc fi -# Architecture-specific flags -ARCH= - # Add "_POSIX_C_SOURCE" define to cpp flags, to quiet warnings # from /usr/include/sys/cdefs.h CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=1" -# Omit frame pointer for optimized code? -NOFP=${NOFP:=-fomit-frame-pointer} - # Figure out compiler flags . $srcdir/config/gnu-flags diff --git a/config/gnu-flags b/config/gnu-flags index 5568d24452..8e543db4d6 100644 --- a/config/gnu-flags +++ b/config/gnu-flags @@ -89,42 +89,46 @@ EOF fi -arch= -# Architecture-specific flags -case "$host_os-$host_cpu" in - # FreeBSD sets the information from "uname -m" to the general machine - # architecture, not the specific CPU for the machine, so even our - # Pentium II Xeon server is set to "i386". Once we know we are on a FreeBSD - # machine, use the "sysctl" command to get the CPU hardware model. - freebsd*-i386) - host_cpu_model=`sysctl -n hw.model` - case "$host_cpu_model" in - # Hmm.. this might not catch Celerons, but it won't hurt them either... - *Pro*|*II*|*III*|*IV*|*Athlon*) - arch="-march=i686" - ;; - esac - ;; - - *-i686) - arch="-march=i686" - ;; -esac - -# Host-specific flags -case "`hostname`" in - sleipnir.ncsa.uiuc.edu) - arch="$arch -pipe" - ;; -esac - # Common GCC flags for various situations case "$cc_vendor-$cc_version" in gcc*|egcs*|pgcc*) + # Architecture-specific flags + arch= + case "$host_os-$host_cpu" in + # FreeBSD sets the information from "uname -m" to the general machine + # architecture, not the specific CPU for the machine, so even our + # Pentium II Xeon server is set to "i386". Once we know we are on a FreeBSD + # machine, use the "sysctl" command to get the CPU hardware model. + freebsd*-i386) + host_cpu_model=`sysctl -n hw.model` + case "$host_cpu_model" in + # Hmm.. this might not catch Celerons, but it won't hurt them either... + *Pro*|*II*|*III*|*IV*|*Athlon*) + arch="-march=i686" + ;; + esac + ;; + + *-i686) + arch="-march=i686" + ;; + esac + + # Host-specific flags + case "`hostname`" in + sleipnir.ncsa.uiuc.edu) + arch="$arch -pipe" + ;; + esac + # General CFLAGS="$CFLAGS $arch -ansi -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline" # Production + + # Omit frame pointer for optimized code? + NOFP=${NOFP:=-fomit-frame-pointer} + case "$cc_vendor-$cc_version" in gcc-2.95.[34]) PROD_CFLAGS="-O3 $NOFP" @@ -157,6 +161,9 @@ case "$cc_vendor-$cc_version" in # Profile PROFILE_CFLAGS="-g -pg" PROFILE_CPPFLAGS= + + # Flags are set + cc_flags_set=yes ;; esac @@ -190,9 +197,6 @@ case "$cc_vendor-$cc_version" in # Append more extra warning flags that only gcc3.4+ know about CFLAGS="$CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch" - - # Flags are set - cc_flags_set=yes ;; gcc-3.3*) @@ -217,9 +221,6 @@ case "$cc_vendor-$cc_version" in # Append more extra warning flags that only gcc3.3+ know about CFLAGS="$CFLAGS -Wendif-labels" - - # Flags are set - cc_flags_set=yes ;; gcc-3.2*) @@ -241,9 +242,6 @@ case "$cc_vendor-$cc_version" in # The "unreachable code" warning does not appear to be reliable yet... #CFLAGS="$CFLAGS -Wunreachable-code" - - # Flags are set - cc_flags_set=yes ;; gcc-3*) @@ -255,17 +253,11 @@ case "$cc_vendor-$cc_version" in # Append some extra warning flags that only gcc3+ know about CFLAGS="$CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded" - - # Flags are set - cc_flags_set=yes ;; gcc-2.9[56]*) # Disable warnings about using 'long long' type CFLAGS="$CFLAGS -Wno-long-long" - - # Flags are set - cc_flags_set=yes ;; esac diff --git a/config/i386-pc-cygwin32 b/config/i386-pc-cygwin32 index fc2e81065d..0d63288b92 100644 --- a/config/i386-pc-cygwin32 +++ b/config/i386-pc-cygwin32 @@ -13,8 +13,5 @@ if test "X-" = "X-$CC"; then LD=ld fi -# Omit frame pointer for optimized code? -NOFP=${NOFP:=-fomit-frame-pointer} - # Figure out compiler flags . $srcdir/config/gnu-flags diff --git a/config/intel-fflags b/config/intel-fflags new file mode 100644 index 0000000000..7302745e87 --- /dev/null +++ b/config/intel-fflags @@ -0,0 +1,86 @@ +# -*- shell-script -*- +# +# This file should be sourced into configure if the compiler is the +# Intel ifort compiler or a derivative. It is careful not to do anything +# if the compiler is not Intel; otherwise `f9x_flags_set' is set to `yes' +# + +# Get the compiler version in a way that works for ifort +# ifort unless a compiler version is already known +# +# f9x_vendor: The compiler name: ifort +# f9x_version: Version number: 8.0 +# +if test X = "X$f9x_flags_set"; then + f9x_version="`$F9X $FFLAGS -V 2>&1 |grep '^Intel'`" + if test X != "X$f9x_version"; then + f9x_vendor=ifort + f9x_version="`$F9X $FFLAGS -v 2>&1 |sed 's/Version \([-a-z0-9\.\-]*\).*/\1/'`" + echo "compiler '$F9X' is Intel $f9x_vendor-$f9x_version" + + # Some version numbers + # Intel version numbers are of the form: "major.minor" + f9x_vers_major=`echo $f9x_version | cut -f1 -d.` + f9x_vers_minor=`echo $f9x_version | cut -f2 -d.` + #f9x_vers_patch=`echo $f9x_version | cut -f2 -d.` + test -n "$f9x_vers_major" || f9x_vers_major=0 + test -n "$f9x_vers_minor" || f9x_vers_minor=0 + test -n "$f9x_vers_patch" || f9x_vers_patch=0 + f9x_vers_all=`expr $f9x_vers_major '*' 1000000 + $f9x_vers_minor '*' 1000 + $f9x_vers_patch` + fi +fi + +# Common Intel flags for various situations +if test "X-ifort" = "X-$f9x_vendor"; then + # Insert section about version specific problems from gnu-flags here, if + # necessary. + + arch= + # Architecture-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "$host_os-$host_cpu" in + # *-i686) + # arch="-march=i686" + # ;; + #esac + + # Host-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "`hostname`" in + # sleipnir.ncsa.uiuc.edu) + # arch="$arch -pipe" + # ;; + #esac + + # General + F9X_BASENAME=ifort + F9XSUFFIXFLAG="" + FSEARCH_DIRS="" + FFLAGS="$FFLAGS" + + # Production + + # Omit frame pointer for optimized code? + #NOFP=${NOFP:=-Mnoframe} + + #PROD_FFLAGS="-O3 $NOFP" + PROD_FFLAGS="-O3" + + # Debug + DEBUG_FFLAGS="-g -check all" + + # Profile + # Use this for profiling with gprof + PROFILE_FFLAGS="-g -p" + + # Flags are set + f9x_flags_set=yes +fi + +# Clear f9x info if no flags set +if test "X-$f9x_flags_set" = "X-"; then + f9x_vendor= + f9x_version= +fi + + diff --git a/config/intel-flags b/config/intel-flags new file mode 100644 index 0000000000..166448ed83 --- /dev/null +++ b/config/intel-flags @@ -0,0 +1,86 @@ +# -*- shell-script -*- +# +# This file should be sourced into configure if the compiler is the +# Intel icc compiler or a derivative. It is careful not to do anything +# if the compiler is not Intel; otherwise `cc_flags_set' is set to `yes' +# + +# Get the compiler version in a way that works for icc +# icc unless a compiler version is already known +# +# cc_vendor: The compiler name: icc +# cc_version: Version number: 8.0 +# +if test X = "X$cc_flags_set"; then + cc_version="`$CC $CFLAGS -V 2>&1 |grep '^Intel'`" + if test X != "X$cc_version"; then + cc_vendor=icc + cc_version="`$CC $CFLAGS --version 2>&1`" + echo "compiler '$CC' is Intel $cc_vendor-$cc_version" + + # Some version numbers + # Intel version numbers are of the form: "major.minor" + cc_vers_major=`echo $cc_version | cut -f1 -d.` + cc_vers_minor=`echo $cc_version | cut -f2 -d.` + #cc_vers_patch=`echo $cc_version | cut -f2 -d.` + test -n "$cc_vers_major" || cc_vers_major=0 + test -n "$cc_vers_minor" || cc_vers_minor=0 + test -n "$cc_vers_patch" || cc_vers_patch=0 + cc_vers_all=`expr $cc_vers_major '*' 1000000 + $cc_vers_minor '*' 1000 + $cc_vers_patch` + fi +fi + +# Common Intel flags for various situations +if test "X-icc" = "X-$cc_vendor"; then + # Insert section about version specific problems from gnu-flags here, if + # necessary. + + arch= + # Architecture-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "$host_os-$host_cpu" in + # *-i686) + # arch="-march=i686" + # ;; + #esac + + # Host-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "`hostname`" in + # sleipnir.ncsa.uiuc.edu) + # arch="$arch -pipe" + # ;; + #esac + + # General + CFLAGS="$CFLAGS $arch -Wall -Wcheck" + + # Production + + # Omit frame pointer for optimized code? + #NOFP=${NOFP:=-Mnoframe} + + #PROD_CFLAGS="-O3 $NOFP" + PROD_CFLAGS="-O3" + PROD_CPPFLAGS= + + # Debug + DEBUG_CFLAGS="-g" + DEBUG_CPPFLAGS= + + # Profile + # Use this for profiling with gprof + PROFILE_CFLAGS="-g -p" + PROFILE_CPPFLAGS= + + # Flags are set + cc_flags_set=yes + +fi + +# Clear cc info if no flags set +if test "X-$cc_flags_set" = "X-"; then + cc_vendor= + cc_version= +fi + diff --git a/config/linux-gnulibc1 b/config/linux-gnulibc1 index 43a48f2dd6..3e974a4e73 100644 --- a/config/linux-gnulibc1 +++ b/config/linux-gnulibc1 @@ -12,33 +12,42 @@ if test -z "$CC"; then CC_BASENAME=gcc fi -# Omit frame pointer for optimized code? -NOFP=${NOFP:=-fomit-frame-pointer} - -# Figure out compiler flags +# Figure out GNU compiler flags . $srcdir/config/gnu-flags +# Figure out PGI C compiler flags +. $srcdir/config/pgi-flags -# Figure out which compiler we are using: pgf90 or Absoft f95 -RM='rm -f' -tmpfile=/tmp/cmpver.$$ -$F9X -V >$tmpfile - - if test -s "$tmpfile"; then - if( grep -s 'Absoft' $tmpfile > /dev/null) - then - F9X_BASENAME=f95 - CFLAGS="$CFLAGS -DH5_ABSOFT" - fi - if( grep -s 'pgf90' $tmpfile > /dev/null) - then - F9X_BASENAME=pgf90 - fi - fi - -$RM $tmpfile +# Figure out Intel C compiler flags +. $srcdir/config/intel-flags # The default Fortran 90 compiler +if test "X-" = "X-$F9X"; then + case $CC_BASENAME in + gcc*|pgcc*) + F9X=pgf90 + F9X_BASENAME=pgf90 + ;; + icc*) + F9X=ifort + F9X_BASENAME=ifort + ;; + esac +else + # Figure out which compiler we are using: pgf90 or Absoft f95 + RM='rm -f' + tmpfile=/tmp/cmpver.$$ + $F9X -V >$tmpfile + if test -s "$tmpfile"; then + if( grep -s 'Absoft' $tmpfile > /dev/null) then + F9X_BASENAME=f95 + fi + if( grep -s 'pgf90' $tmpfile > /dev/null) then + F9X_BASENAME=pgf90 + fi + fi + $RM $tmpfile +fi # # HDF5 integers @@ -56,38 +65,33 @@ HID_T='SELECTED_INT_KIND(R_INTEGER)' SIZE_T='SELECTED_INT_KIND(R_INTEGER)' OBJECT_NAMELEN_DEFAULT_F=-1 +# Figure out PGI F90 compiler flags +. $srcdir/config/pgi-fflags -if test "X-" = "X-$F9X"; then - F9X=pgf90 - F9X_BASENAME=pgf90 -fi +# Figure out Intel F90 compiler flags +. $srcdir/config/intel-fflags case $F9X_BASENAME in - pgf90) - F9XSUFFIXFLAG="" - FFLAGS="$FFLAGS" - FSEARCH_DIRS="" - DEBUG_FFLAGS="" - PROD_FFLAGS="" - PROFILE_FFLAGS="" - f9x_flags_set=yes - ;; -# -# Assume Absoft compiler -# + # + # Absoft compiler + # f95) - F9XSUFFIXFLAG="" + # Set required flag for compiling C stubs + CFLAGS="$CFLAGS -DH5_ABSOFT" + + F9XSUFFIXFLAG="" # We force compiler to use upper case for external names # (just in case since this should be a default EIP) - FFLAGS="$FFLAGS -YEXT_NAMES=UCS" - FSEARCH_DIRS="" - DEBUG_FFLAGS="-O" - PROD_FFLAGS="-O" - PROFILE_FFLAGS="-O" - f9x_flags_set=yes - ;; + FFLAGS="$FFLAGS -YEXT_NAMES=UCS" + FSEARCH_DIRS="" + DEBUG_FFLAGS="-g" + PROD_FFLAGS="-O" + PROFILE_FFLAGS="-g -pg" + f9x_flags_set=yes + ;; esac + # The default C++ compiler # The default compiler is `g++'. diff --git a/config/pgi-fflags b/config/pgi-fflags new file mode 100644 index 0000000000..6d4553e326 --- /dev/null +++ b/config/pgi-fflags @@ -0,0 +1,86 @@ +# -*- shell-script -*- +# +# This file should be sourced into configure if the compiler is the +# PGI pgf90 compiler or a derivative. It is careful not to do anything +# if the compiler is not PGI; otherwise `f9x_flags_set' is set to `yes' +# + +# Get the compiler version in a way that works for pgf90 +# pgf90 unless a compiler version is already known +# +# f9x_vendor: The compiler name: pgf90 +# f9x_version: Version number: 5.0-2, 5.2-2 +# +if test X = "X$f9x_flags_set"; then + f9x_version="`$F9X $FFLAGS -V 2>&1 |grep '^pgf90'`" + if test X != "X$f9x_version"; then + f9x_vendor=`echo $f9x_version |sed 's/\([a-z0-9]*\).*/\1/'` + f9x_version=`echo $f9x_version |sed 's/pgf90 \([-a-z0-9\.\-]*\).*/\1/'` + echo "compiler '$F9X' is PGI $f9x_vendor-$f9x_version" + + # Some version numbers + # PGI version numbers are of the form: "major.minor-patch" + f9x_vers_major=`echo $f9x_version | cut -f1 -d.` + f9x_vers_minor=`echo $f9x_version | cut -f2 -d. | cut -f1 -d-` + f9x_vers_patch=`echo $f9x_version | cut -f2 -d. | cut -f2 -d-` + test -n "$f9x_vers_major" || f9x_vers_major=0 + test -n "$f9x_vers_minor" || f9x_vers_minor=0 + test -n "$f9x_vers_patch" || f9x_vers_patch=0 + f9x_vers_all=`expr $f9x_vers_major '*' 1000000 + $f9x_vers_minor '*' 1000 + $f9x_vers_patch` + fi +fi + +# Common PGI flags for various situations +if test "X-pgf90" = "X-$f9x_vendor"; then + # Insert section about version specific problems from gnu-flags here, if + # necessary. + + arch= + # Architecture-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "$host_os-$host_cpu" in + # *-i686) + # arch="-march=i686" + # ;; + #esac + + # Host-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "`hostname`" in + # sleipnir.ncsa.uiuc.edu) + # arch="$arch -pipe" + # ;; + #esac + + # General + F9X_BASENAME=pgf90 + F9XSUFFIXFLAG="" + FSEARCH_DIRS="" + FFLAGS="$FFLAGS -Mdclchk -Mstandard -Minform,warn" + + # Production + + # Omit frame pointer for optimized code? + NOFP=${NOFP:=-Mnoframe} + + PROD_FFLAGS="-fast -s $NOFP" + + # Debug + DEBUG_FFLAGS="-g -Mbounds -Mchkfpstk -Mchkptr" + + # Profile + PROFILE_FFLAGS="-g -Mprof=func,line" + # Use this for profiling with gprof + #PROFILE_FFLAGS="-g -pg" + + # Flags are set + f9x_flags_set=yes +fi + +# Clear f9x info if no flags set +if test "X-$f9x_flags_set" = "X-"; then + f9x_vendor= + f9x_version= +fi + + diff --git a/config/pgi-flags b/config/pgi-flags new file mode 100644 index 0000000000..a845192c3c --- /dev/null +++ b/config/pgi-flags @@ -0,0 +1,85 @@ +# -*- shell-script -*- +# +# This file should be sourced into configure if the compiler is the +# PGI pgcc compiler or a derivative. It is careful not to do anything +# if the compiler is not PGI; otherwise `cc_flags_set' is set to `yes' +# + +# Get the compiler version in a way that works for pgcc +# pgcc unless a compiler version is already known +# +# cc_vendor: The compiler name: pgcc +# cc_version: Version number: 5.0-2, 5.2-2 +# +if test X = "X$cc_flags_set"; then + cc_version="`$CC $CFLAGS -V 2>&1 |grep '^pgcc'`" + if test X != "X$cc_version"; then + cc_vendor=`echo $cc_version |sed 's/\([a-z]*\).*/\1/'` + cc_version=`echo $cc_version |sed 's/pgcc \([-a-z0-9\.\-]*\).*/\1/'` + echo "compiler '$CC' is PGI $cc_vendor-$cc_version" + + # Some version numbers + # PGI version numbers are of the form: "major.minor-patch" + cc_vers_major=`echo $cc_version | cut -f1 -d.` + cc_vers_minor=`echo $cc_version | cut -f2 -d. | cut -f1 -d-` + cc_vers_patch=`echo $cc_version | cut -f2 -d. | cut -f2 -d-` + test -n "$cc_vers_major" || cc_vers_major=0 + test -n "$cc_vers_minor" || cc_vers_minor=0 + test -n "$cc_vers_patch" || cc_vers_patch=0 + cc_vers_all=`expr $cc_vers_major '*' 1000000 + $cc_vers_minor '*' 1000 + $cc_vers_patch` + fi +fi + +# Common PGI flags for various situations +if test "X-pgcc" = "X-$cc_vendor"; then + # Insert section about version specific problems from gnu-flags here, if + # necessary. + + arch= + # Architecture-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "$host_os-$host_cpu" in + # *-i686) + # arch="-march=i686" + # ;; + #esac + + # Host-specific flags + # Nothing currently. (Uncomment code below and modify to add any) + #case "`hostname`" in + # sleipnir.ncsa.uiuc.edu) + # arch="$arch -pipe" + # ;; + #esac + + # General + CFLAGS="$CFLAGS $arch -Minform,warn" + + # Production + + # Omit frame pointer for optimized code? + NOFP=${NOFP:=-Mnoframe} + + PROD_CFLAGS="-fast -s $NOFP" + PROD_CPPFLAGS= + + # Debug + DEBUG_CFLAGS="-g -Mbounds -Mchkfpstk" + DEBUG_CPPFLAGS= + + # Profile + PROFILE_CFLAGS="-g -Mprof=func,line" + # Use this for profiling with gprof + #PROFILE_CFLAGS="-g -pg" + PROFILE_CPPFLAGS= + + # Flags are set + cc_flags_set=yes + +fi + +# Clear cc info if no flags set +if test "X-$cc_flags_set" = "X-"; then + cc_vendor= + cc_version= +fi diff --git a/config/powerpc-apple b/config/powerpc-apple index 2e49cfc73c..470a724f6d 100644 --- a/config/powerpc-apple +++ b/config/powerpc-apple @@ -11,22 +11,18 @@ if test "X-" = "X-$CC"; then CC_BASENAME=gcc fi -# Architecture-specific flags -ARCH= - - -# Omit frame pointer for optimized code? -NOFP=${NOFP:=-fomit-frame-pointer} - # Figure out compiler flags . $srcdir/config/gnu-flags - if test "X-$F9X" = "X-f95"; then - CFLAGS="$CFLAGS -DH5_ABSOFT" - fi - - # The default Fortran 90 compiler +if test "X-" = "X-$F9X"; then + # Assume Absoft compiler + F9X=xlf + F9X_BASENAME=xlf + else + F9X_BASENAME=f95 + +fi # # HDF5 integers @@ -44,37 +40,30 @@ HID_T='SELECTED_INT_KIND(R_INTEGER)' SIZE_T='SELECTED_INT_KIND(R_INTEGER)' OBJECT_NAMELEN_DEFAULT_F=-1 -if test "X-" = "X-$F9X"; then - F9X=xlf - F9X_BASENAME=xlf - else - F9X_BASENAME=f95 - -fi - case $F9X_BASENAME in xlf) - F9XSUFFIXFLAG="-qsuffix=f=f90 -qfree=f90" - FFLAGS="$FFLAGS -static -O ${F9XSUFFIXFLAG} -qmoddir=./ " - FSEARCH_DIRS="-I./ -I../src" - DEBUG_FFLAGS="-O" - PROD_FFLAGS="-O" - PROFILE_FFLAGS="-O" - f9x_flags_set=yes - ;; -# -# Assume Absoft compiler -# + F9XSUFFIXFLAG="-qsuffix=f=f90 -qfree=f90" + FFLAGS="$FFLAGS -static -O ${F9XSUFFIXFLAG} -qmoddir=./ " + FSEARCH_DIRS="-I./ -I../src" + DEBUG_FFLAGS="-g" + PROD_FFLAGS="-O" + PROFILE_FFLAGS="-g" + f9x_flags_set=yes + ;; + f95) - F9XSUFFIXFLAG="" + # Set required flag for compiling C stubs + CFLAGS="$CFLAGS -DH5_ABSOFT" + + F9XSUFFIXFLAG="" # We force compiler to use upper case for external names # (just in case since this should be a default EIP) - FFLAGS="$FFLAGS -YEXT_NAMES=UCS" - FSEARCH_DIRS="" - DEBUG_FFLAGS="-O" - PROD_FFLAGS="-O" - PROFILE_FFLAGS="-O" - f9x_flags_set=yes - ;; + FFLAGS="$FFLAGS -YEXT_NAMES=UCS" + FSEARCH_DIRS="" + DEBUG_FFLAGS="-g" + PROD_FFLAGS="-O" + PROFILE_FFLAGS="-g -pg" + f9x_flags_set=yes + ;; esac