mirror of https://gitlab.com/QEF/q-e.git
1844 lines
64 KiB
Plaintext
1844 lines
64 KiB
Plaintext
AC_INIT(ESPRESSO, 4.2CVS, , espresso)
|
|
|
|
# -----------------------------
|
|
# options
|
|
# -----------------------------
|
|
|
|
AC_ARG_ENABLE(parallel,
|
|
[AS_HELP_STRING([--enable-parallel],
|
|
[compile for parallel execution if possible (default: yes)])],
|
|
[set_use_parallel=1
|
|
if test "$enableval" = "yes" ; then
|
|
use_parallel=1
|
|
else
|
|
use_parallel=0
|
|
fi],
|
|
[set_use_parallel=0 use_parallel=1])
|
|
|
|
AC_ARG_ENABLE(openmp,
|
|
[AS_HELP_STRING([--enable-openmp],
|
|
[compile for openmp execution if possible (default: no)])],
|
|
[if test "$enableval" = "yes" ; then
|
|
use_openmp=1
|
|
else
|
|
use_openmp=0
|
|
fi],
|
|
[use_openmp=0])
|
|
|
|
# debug flags are implemented only for a few cases
|
|
AC_ARG_ENABLE(debug,
|
|
[AS_HELP_STRING([--enable-debug],
|
|
[compile Fortran with debug flags (default: no)])],
|
|
[if test "$enableval" = "yes" ; then
|
|
use_debug=1
|
|
else
|
|
use_debug=0
|
|
fi],
|
|
[use_debug=0])
|
|
|
|
# shared library flags are implemented only for a few (untested) cases
|
|
AC_ARG_ENABLE(shared,
|
|
[AS_HELP_STRING([--enable-shared],
|
|
[use shared libraries if available (default: yes)])],
|
|
[if test "$enableval" = "yes" ; then
|
|
use_shared=1
|
|
else
|
|
use_shared=0
|
|
fi],
|
|
[use_shared=1])
|
|
|
|
# the C-to-Fortran wrapper check may cause trouble on some machines
|
|
AC_ARG_ENABLE(wrappers,
|
|
[AS_HELP_STRING([--disable-wrappers],
|
|
[disable C to fortran wrapper check (default: enabled)])],
|
|
[if test "$enableval" = "yes" ; then
|
|
check_wrappers=1
|
|
else
|
|
check_wrappers=0
|
|
fi],
|
|
[check_wrappers=1])
|
|
|
|
AC_ARG_ENABLE(signals,
|
|
[AS_HELP_STRING([--enable-signals],
|
|
[enable signal trapping (default: no)])],
|
|
[if test "$enableval" = "yes" ; then
|
|
use_signals=1
|
|
else
|
|
use_signals=0
|
|
fi],
|
|
[use_signals=0])
|
|
|
|
# -----------------------------
|
|
# packages
|
|
# ----------------------------
|
|
|
|
AC_ARG_WITH(scalapack,
|
|
[AS_HELP_STRING([--with-scalapack],
|
|
[use scalapack if available (default: yes)])],
|
|
[if test "$withval" = "yes" ; then
|
|
with_scalapack=1
|
|
else
|
|
with_scalapack=0
|
|
fi],
|
|
[with_scalapack=1])
|
|
|
|
AC_ARG_WITH(internal-blas,
|
|
[AS_HELP_STRING([--with-internal-blas],
|
|
[compile with internal blas (default: no)])],
|
|
[if test "$withval" = "yes" ; then
|
|
use_internal_blas=1
|
|
else
|
|
use_internal_blas=0
|
|
fi],
|
|
[use_internal_blas=0])
|
|
|
|
AC_ARG_WITH(internal-lapack,
|
|
[AS_HELP_STRING([--with-internal-lapack],
|
|
[compile with internal lapack (default: no)])],
|
|
[if test "$withval" = "yes" ; then
|
|
use_internal_lapack=1
|
|
else
|
|
use_internal_lapack=0
|
|
fi],
|
|
[use_internal_lapack=0])
|
|
# -----------------------------
|
|
# store variables from the environment, if set (may be or not be set)
|
|
# If set, they take precedence over configure internal choice.
|
|
# Flags and libraries are accepted without further testing;
|
|
# compilers are tested. Specify compiler name only, not the full path
|
|
# (i.e. F90=/usr/local/bin/f90 may not work, use F90=f90)
|
|
|
|
topdir=$TOPDIR # current directory
|
|
arch=$ARCH # see below for recognized architectures
|
|
env_cc=$CC # C compiler (must be in the execution path)
|
|
cpp=$CPP # C preprocessor (as above)
|
|
cflags=$CFLAGS # Flags for C compiler
|
|
cppflags=$CPPFLAGS # Flags for C preprocessor
|
|
dflags=$DFLAGS # Fortran file preprocessing options, e.g. -D__DEFINE_THIS
|
|
iflags=$IFLAGS # Location of include files - shouldn't be needed
|
|
f77=$F77 # Fortran 77 serial compiler (must be in execution path)
|
|
f90=$F90 # Fortran 90 serial compiler (must be in execution path)
|
|
mpif90=$MPIF90 # Fortran 90 parallel compiler (must be in execution path)
|
|
fflags=$FFLAGS # Flags for Fortran 77 and 90 compilers
|
|
f90flags=$F90FLAGS # Flags for Fortran 90 compiler only
|
|
ld=$LD # Loader (must be in the execution path)
|
|
ldflags=$LDFLAGS # Flags for loader
|
|
ld_libs=$LD_LIBS # Additional libraries
|
|
blas_libs=$BLAS_LIBS # blas library - specify e.g. /my/blas/lib/libmyblas.a
|
|
# or -L/my/blas/lib -lmyblas
|
|
lapack_libs=$LAPACK_LIBS # lapack library, similar to above
|
|
fft_libs=$FFT_LIBS # FFT libraries - may depend upon DFLAGS
|
|
mpi_libs=$MPI_LIBS # MPI libraries - shouldn't be needed
|
|
mass_libs=$MASS_LIBS # MASS libraries (IBM only)
|
|
libdirs=$LIBDIRS # Where to look for libraries (e.g. /my/blas/lib)
|
|
scalapack_dir=$SCALAPACK_LIB # Where to look for libscalapack.a
|
|
blacs_dir=$BLACS_LIB # Where to look for libblacs.a
|
|
ar=$AR # ar (shouldn't be needed)
|
|
arflags=$ARFLAGS # Flags for ar (as above)
|
|
|
|
# configure for current directory by default
|
|
if test "$topdir" = "" ; then topdir="`pwd`" ; fi
|
|
|
|
# check system type (no cross-compilation for now)
|
|
AC_CANONICAL_BUILD
|
|
|
|
# many HPC systems are configured so that running parallel programs
|
|
# interactively is disabled: on those systems, AC_PROG_FC / _F77 / _CC
|
|
# would fail because they can't run the compiled executables.
|
|
# to work around that, let's pretend we are cross-compiling even if we aren't
|
|
# !!! this relies on undocumented Autoconf behavior !!!
|
|
|
|
# This is used to distinguish between true and fake cross compilation
|
|
# (only on NEC SX8 actually)
|
|
if test "$host" != "" ; then ranlib=echo; fi
|
|
|
|
cross_compiling=yes
|
|
if test "$host" = "" ; then host=$build; fi
|
|
|
|
# identify architecture
|
|
if test "$arch" = ""
|
|
then
|
|
case $host in
|
|
ia64-*-linux-gnu ) arch=ia64 ;;
|
|
x86_64-*-linux-gnu ) arch=x86_64 ;;
|
|
*-pc-linux-gnu ) arch=ia32 ;;
|
|
*-ibm-aix* ) arch=aix ;;
|
|
sparc-sun-* ) arch=sparc ;;
|
|
i386-pc-solaris* ) arch=solaris;;
|
|
powerpc-apple-darwin* ) arch=macppc ;;
|
|
i686-apple-darwin* ) arch=mac686 ;;
|
|
*-pc-cygwin ) arch=cygwin ;;
|
|
sx*-nec* ) arch=necsx ;;
|
|
powerpc64-*-linux-gnu ) arch=ppc64 ;;
|
|
* ) AC_MSG_WARN(incorrect host name ?)
|
|
;;
|
|
esac
|
|
# workarounf for Cray-XT machines
|
|
test -d /proc/cray_xt && arch=crayxt
|
|
# workarounf for IBM BG machines
|
|
test -x /usr/bin/bgxlf && arch=ppc64-bg
|
|
fi
|
|
echo checking architecture... $arch
|
|
|
|
# candidate archiver and archiver flags
|
|
try_ar="ar"
|
|
try_arflags="ruv"
|
|
try_iflags="-I../include"
|
|
|
|
# candidate fortran compilers good for all cases
|
|
try_mpif90="mpif90"
|
|
try_f90="g95 gfortran f90"
|
|
|
|
# add all needed -D options to try_dflags
|
|
try_dflags=""
|
|
|
|
# candidate compilers and flags based on architecture
|
|
case $arch in
|
|
ia32 | ia64 | x86_64 )
|
|
try_f90="ifort pgf90 pathf95 sunf95 openf95 $try_f90"
|
|
;;
|
|
solaris )
|
|
try_f90="sunf95 $try_f90"
|
|
;;
|
|
aix )
|
|
try_mpif90="mpxlf90_r mpxlf90"
|
|
try_f90="xlf90_r xlf90 $try_f90"
|
|
try_arflags="-X64 ruv"
|
|
try_dflags="-D__AIX -D__XLF"
|
|
;;
|
|
crayxt* )
|
|
try_f90="ftn"
|
|
try_mpif90="ftn"
|
|
;;
|
|
macppc )
|
|
try_mpif90="mpxlf90 mpf90"
|
|
try_f90="xlf90 $try_f90"
|
|
try_dflags="-D__XLF"
|
|
# due to bugs in xlf 8.1 for powerpc mac os-x, the iotk library must be
|
|
# created as a dynamical library, using "libtool" - OBSOLETE
|
|
|
|
# try_arflags_dynamic="-dynamic -arch_only ppc -all_load -single_module -L/opt/ibmcmp/xlf/8.1/lib -lxlf90 -lxl -lc -o"
|
|
# try_ar="libtool"
|
|
# try_arflags="-static -o"
|
|
;;
|
|
mac686 | cygwin )
|
|
try_f90="ifort $try_f90"
|
|
;;
|
|
necsx )
|
|
sxopt=`echo $host|awk '{print substr($1,1,3)}'`
|
|
echo $sxopt $host
|
|
try_mpif90="sxmpif90"
|
|
try_f90="sxf90"
|
|
try_ar="sxar"
|
|
try_arflags="rv"
|
|
try_dflags='-D__SX6 '
|
|
use_fft_asl=0
|
|
use_fft_mathkeisan=1
|
|
use_fft_para=0
|
|
# default for Nec: no parallel unless explicitly required
|
|
if test "$set_use_parallel" -ne 1 ; then use_parallel=0 ; fi
|
|
if test "$use_parallel" -eq 1 ; then use_fft_para=1 ; fi
|
|
try_dflags_fft_asl='-DASL'
|
|
try_dflags_fft_mathkeisan=' '
|
|
try_dflags_fft_para='-D__USE_3D_FFT'
|
|
;;
|
|
ppc64 )
|
|
try_mpif90="mpxlf90_r mpf90_r"
|
|
try_f90="xlf90_r $try_f90"
|
|
try_dflags="-D__XLF"
|
|
try_arflags="ruv"
|
|
;;
|
|
# PowerPC MareNostrum
|
|
ppc64-mn )
|
|
try_f90="xlf90_r"
|
|
try_dflags="-D__XLF"
|
|
try_arflags="ruv"
|
|
;;
|
|
# IBM BlueGene
|
|
ppc64-bg )
|
|
if test "$use_openmp" -eq 0 ; then
|
|
try_mpif90="mpixlf90"
|
|
try_f90="bgxlf90"
|
|
else
|
|
try_mpif90="mpixlf90_r"
|
|
try_f90="bgxlf90_r"
|
|
fi
|
|
try_arflags="ruv"
|
|
try_dflags="-D__AIX -D__XLF"
|
|
;;
|
|
* )
|
|
AC_MSG_WARN($arch : unsupported architecture?)
|
|
;;
|
|
esac
|
|
|
|
# check serial Fortran 90 compiler. This must be done before performing
|
|
# the check for the parallel compiler (section below) because option
|
|
# --disable-parallel will do very strange things otherwise. The reason
|
|
# seems to be that autoconf does not repeat all tests for the second
|
|
# occurrence of AC_PROG_FC. So the first occurrence is the one that
|
|
# must always be performed, the second is optional. PG & CC sep.2006
|
|
|
|
# use F90 if set
|
|
if test "$f90" = "" ; then f90="$try_f90" ; fi
|
|
AC_PROG_FC($f90)
|
|
f90=$FC
|
|
AC_FC_SRCEXT(f90)
|
|
|
|
# check parallel Fortran 90 compiler
|
|
if test "$use_parallel" -eq 0 ;
|
|
then
|
|
mpif90=$f90
|
|
else
|
|
# clear cached values (not sure when and why this is needed)
|
|
unset FC ac_cv_prog_ac_ct_FC ac_cv_fc_compiler_gnu ac_cv_prog_fc_g
|
|
if test "$mpif90" = "" ; then mpif90="$try_mpif90 $f90" ; fi
|
|
AC_PROG_FC($mpif90)
|
|
mpif90=$FC
|
|
fi
|
|
|
|
# check which compiler does mpif90 wrap
|
|
|
|
case "$arch" in
|
|
ia32 | ia64 | x86_64 | mac686 )
|
|
echo $ECHO_N "checking version of $mpif90... $ECHO_C"
|
|
ifort_version=`$mpif90 -V 2>&1 | grep "Intel(R)"`
|
|
sunf95_version=`$mpif90 -V 2>&1 | grep "^sunf95"`
|
|
openf95_version=`$mpif90 -V 2>&1 | grep "^Open64"`
|
|
pgf_version=`$mpif90 -V 2>&1 | grep "^pgf"`
|
|
g95_version=`$mpif90 -v 2>&1 | grep "g95"`
|
|
eko_version=`$mpif90 -v 2>&1 | grep "EKOPath"` # obsolescent
|
|
pathf95_version=`$mpif90 -version 2>&1 | grep "PathScale(TM)"`
|
|
gfortran_version=`$mpif90 -v 2>&1 | grep "gcc version"`
|
|
#
|
|
if test "$ifort_version" != ""
|
|
then
|
|
version=`$mpif90 -V 2>&1 | grep Version |
|
|
sed 's/.*Version//' | awk '{print $1}'`
|
|
ifort_version=`echo $version | sed 's/\..*//'`
|
|
echo "${ECHO_T}ifort $version"
|
|
f90_in_mpif90="ifort"
|
|
if test "$ifort_version" -gt 8; then
|
|
# flags for MKL - ifort 9 and later
|
|
MKL_LIBS=""
|
|
if test "$ifort_version" -gt 9; then
|
|
MKL_FLAGS="-static-intel"
|
|
else
|
|
MKL_FLAGS="-i-static"
|
|
fi
|
|
if test "$use_openmp" -eq 1; then
|
|
MKL_FLAGS="$MKL_FLAGS -openmp"
|
|
fi
|
|
else
|
|
# flags for MKL - ifort 8 and earlier, obsolescent
|
|
MKL_LIBS="-lguide -lpthread"
|
|
MKL_FLAGS=""
|
|
fi
|
|
elif test "$sunf95_version" != ""
|
|
then
|
|
version=`echo $sunf95_version | awk '{print $5}'`
|
|
echo "${ECHO_T}sunf95 $version"
|
|
f90_in_mpif90="sunf95"
|
|
elif test "$openf95_version" != ""
|
|
then
|
|
version=`echo $openf95_version | awk '{print $5}'`
|
|
echo "${ECHO_T}openf95 $version"
|
|
f90_in_mpif90="openf95"
|
|
elif test "$pgf_version" != ""
|
|
then
|
|
version=`echo $pgf_version | awk '{print $2}'`
|
|
echo "${ECHO_T}pgf90 $version"
|
|
f90_in_mpif90="pgf90"
|
|
elif test "$eko_version" != ""
|
|
then
|
|
# obsolescent
|
|
version=`echo $eko_version | awk '{print $6}'`
|
|
echo "${ECHO_T}pathf95 $version"
|
|
f90_in_mpif90="pathf95"
|
|
elif test "$g95_version" != ""
|
|
then
|
|
version=`echo $g95_version | awk '{print $3}'`
|
|
echo "${ECHO_T}g95 $version"
|
|
f90_in_mpif90="g95"
|
|
elif test "$pathf95_version" != ""
|
|
then
|
|
version=`echo $pathf95_version | awk '{print $5}'`
|
|
echo "${ECHO_T}pathf95 $version"
|
|
f90_in_mpif90="pathf95"
|
|
elif test "$gfortran_version" != ""
|
|
then
|
|
version=`echo $gfortran_version | awk '{print $3}'`
|
|
echo "${ECHO_T}gfortran $version"
|
|
f90_in_mpif90="gfortran"
|
|
else
|
|
echo "${ECHO_T}unknown, assuming gfortran"
|
|
f90_in_mpif90="gfortran"
|
|
fi
|
|
# check if serial and parallel compiler are the same
|
|
if test "$f90" != "$f90_in_mpif90"; then
|
|
AC_MSG_WARN([parallel compiler $mpif90 uses $f90_in_mpif90, but serial compiler $f90 was detected])
|
|
AC_MSG_WARN([assuming F90=$f90_in_mpif90, discarding $f90])
|
|
fi
|
|
f90=$f90_in_mpif90
|
|
;;
|
|
esac
|
|
|
|
echo setting F90... $f90
|
|
echo setting MPIF90... $mpif90
|
|
|
|
|
|
|
|
case "$f90" in
|
|
f90 | fc | ftn )
|
|
echo $ECHO_N "checking version wrapped by $f90 command... $ECHO_C"
|
|
|
|
if $f90 -V 2>&1 | grep -q "Intel(R)" ; then
|
|
f90_version=ifort
|
|
elif $f90 -V 2>&1 | grep -q "^sunf95" ; then
|
|
f90_version=sunf95
|
|
elif $f90 -V 2>&1 | grep -q "^Open64" ; then
|
|
f90_version=openf95
|
|
elif $f90 -V 2>&1 | grep -q "^pgf" ; then
|
|
f90_version=pgf
|
|
elif $f90 -v 2>&1 | grep -q "EKOPath" ; then # obsolescent
|
|
f90_version=pathf95
|
|
elif $f90 -v 2>&1 | grep -q "g95" ; then
|
|
f90_version=g95
|
|
elif $f90 -version 2>&1 | grep -q "PathScale(TM)" ; then
|
|
f90_version=pathf95
|
|
elif $f90 -v 2>&1 | grep -q "gcc version" ; then
|
|
f90_version=gfortran
|
|
else
|
|
echo $ECHO_N "unknown, leaving as... $ECHO_C"
|
|
f90_version=$f90
|
|
fi
|
|
echo $f90_version
|
|
;;
|
|
* )
|
|
f90_version=$f90
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
# candidate C and f77 compilers good for all cases
|
|
try_cc="cc gcc"
|
|
try_f77="$f90"
|
|
|
|
case "$arch:$f90_version" in
|
|
*:ifort* )
|
|
try_cc="icc ecc $try_cc"
|
|
;;
|
|
*:pgf90 )
|
|
try_cc="pgcc $try_cc"
|
|
try_f77="pgf77 $f90"
|
|
;;
|
|
*:pathf95 )
|
|
try_cc="pathcc $try_cc"
|
|
;;
|
|
*:sunf95 )
|
|
try_cc="suncc $try_cc"
|
|
;;
|
|
*:openf95 )
|
|
try_cc="opencc $try_cc"
|
|
;;
|
|
aix:*xlf*_r )
|
|
try_cc="xlc_r $try_cc"
|
|
try_f77="xlf_r $f90"
|
|
;;
|
|
aix:*xlf* )
|
|
try_cc="xlc $try_cc"
|
|
try_f77="xlf $f90"
|
|
;;
|
|
sparc:* | solaris:sunf95 )
|
|
try_f77="f77 $f90"
|
|
;;
|
|
cray*:* )
|
|
try_cc="cc"
|
|
;;
|
|
macppc:xlf90 )
|
|
try_f77="xlf $f90"
|
|
;;
|
|
necsx:* )
|
|
try_cc="sxcc"
|
|
;;
|
|
ppc64-bg:*xlf90_r )
|
|
try_cc="bgxlc_r"
|
|
try_f77="bgxlf_r"
|
|
;;
|
|
ppc64-bg:*xlf90 )
|
|
try_cc="bgxlc"
|
|
try_f77="bgxlf"
|
|
;;
|
|
ppc64:*xlf* | ppc64-mn:*xlf* )
|
|
try_cc="xlc_r $try_cc"
|
|
try_f77="xlf_r $f90"
|
|
;;
|
|
esac
|
|
|
|
# check serial C compiler
|
|
if test "$env_cc" = "" ; then cc="$try_cc" ; else cc="$env_cc"; fi
|
|
AC_PROG_CC($cc)
|
|
cc=$CC
|
|
|
|
echo setting CC... $cc
|
|
|
|
# check size of pointers to int - needed to decide the size of integer
|
|
# arrays in fortran holding C pointers for FFTW
|
|
|
|
AC_CHECK_SIZEOF([int *])
|
|
SIZEOF_INT_P=$ac_cv_sizeof_int_p
|
|
AC_SUBST(SIZEOF_INT_P)
|
|
AC_CONFIG_FILES([include/fft_defs.h:include/fft_defs.h.in])
|
|
|
|
# check if the structure mallinfo is present in malloc.h
|
|
AC_CHECK_HEADER(malloc.h,have_malloc_h=1,have_malloc_h=0, )
|
|
if test "$have_malloc_h" -ne 0
|
|
then
|
|
AC_CHECK_MEMBER([struct mallinfo.arena],
|
|
[AC_DEFINE(HAVE_MALLINFO)],
|
|
,
|
|
[#include <malloc.h>])
|
|
|
|
fi
|
|
|
|
# check serial Fortran 77 compiler (use F77 if it was set)
|
|
if test "$f77" = "" ; then f77="$try_f77" ; fi
|
|
AC_PROG_F77($f77)
|
|
f77=$F77
|
|
|
|
echo setting F77... $f77
|
|
|
|
# check Fortran compiler flags
|
|
# have_cpp=0: use external C preprocessing for fortran code
|
|
# have_cpp=1: use C-like preprocessing in fortran compiler
|
|
have_cpp=1
|
|
xlf_flags=0
|
|
|
|
echo using F90... $f90
|
|
|
|
case "$arch:$f90_version" in
|
|
ia32:ifort* | ia64:ifort* | x86_64:ifort* | mac686:ifort* )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-O2 -assume byterecl -g -traceback -fpe0 -CB"
|
|
else
|
|
try_fflags="-O2 -assume byterecl -g -traceback"
|
|
fi
|
|
try_fflags_openmp="-openmp"
|
|
try_f90flags="\$(FFLAGS) -nomodule"
|
|
try_fflags_noopt="-O0 -assume byterecl -g -traceback"
|
|
try_ldflags=""
|
|
try_ldflags_static="-static"
|
|
try_dflags="$try_dflags -D__INTEL"
|
|
pre_fdflags="-fpp "
|
|
;;
|
|
ia32:pgf* | ia64:pgf* | x86_64:pgf* )
|
|
# in try_fflags we use -O3 instead of -fast because some *.f files in Multigrid
|
|
# confuse the optimizer when option -fast is enabled
|
|
try_fflags="-O3 -r8"
|
|
try_fflags_openmp="-mp"
|
|
try_f90flags="-fast -Mcache_align -r8"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
try_ldflags_static="-Bstatic"
|
|
try_dflags="$try_dflags -D__PGI"
|
|
have_cpp=0
|
|
;;
|
|
ia32:path* | ia64:path* | x86_64:path* )
|
|
try_fflags="-march=auto -O2"
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
try_ldflags_static="-static"
|
|
have_cpp=0
|
|
;;
|
|
*:g95 )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-O3 -g -freal=nan -finteger=12345678 -flogical=none -cpp"
|
|
else
|
|
try_fflags="-O3 -cpp"
|
|
fi
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0 -cpp"
|
|
try_ldflags=""
|
|
try_ldflags_static="-static"
|
|
;;
|
|
*:gfortran )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-O3 -g -Wall -fbounds-check -frange-check"
|
|
else
|
|
try_fflags="-O3 -g"
|
|
fi
|
|
try_fflags_openmp="-fopenmp"
|
|
try_f90flags="\$(FFLAGS) -x f95-cpp-input"
|
|
try_fflags_noopt="-O0 -g"
|
|
try_ldflags="-g"
|
|
try_dflags="$try_dflags -D__GFORTRAN -D__STD_F95"
|
|
try_ldflags_static="-static"
|
|
;;
|
|
*:sunf95 )
|
|
try_fflags="-O4"
|
|
try_fflags_openmp="-openmp"
|
|
try_f90flags="\$(FFLAGS) -fpp"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags="-fast"
|
|
try_ldflags_static="-Bstatic"
|
|
imod="-M"
|
|
;;
|
|
*:openf95 )
|
|
try_fflags="-O3"
|
|
try_f90flags="\$(FFLAGS) -ftpp"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
imod="-I"
|
|
;;
|
|
aix:*xlf* )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-q64 -qalias=noaryovrlp -g -C \
|
|
-qarch=auto -qtune=auto -qdpc -Q -qalias=nointptr"
|
|
else
|
|
try_fflags="-q64 -qalias=noaryovrlp -O3 -qstrict \
|
|
-qarch=auto -qtune=auto -qdpc -Q -qalias=nointptr"
|
|
fi
|
|
try_fflags_openmp="-qsmp=omp"
|
|
try_f90flags="\$(FFLAGS) -qsuffix=cpp=f90 -qfree=f90"
|
|
try_fflags_noopt="-q64 -O0"
|
|
try_ldflags="-q64"
|
|
# try_ldflags_static="-bstatic"
|
|
pre_fdflags="-WF,"
|
|
xlf_flags=1
|
|
;;
|
|
solaris:sunf95 )
|
|
try_fflags="-fast -O2 -fpp"
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0 "
|
|
try_ldflags=""
|
|
imod="-M"
|
|
;;
|
|
sparc:f90 )
|
|
try_fflags="-fast -O1 -nodepend -xvector=no -xchip=ultra3 \
|
|
-xarch=v8plusb -xlic_lib=sunperf"
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0 -xlic_lib=sunperf"
|
|
try_ldflags=""
|
|
imod="-M"
|
|
have_cpp=0
|
|
;;
|
|
crayxt*:pgf* )
|
|
# see comment above for pgf*
|
|
try_fflags_openmp="-mp"
|
|
try_fflags="-O3 -r8"
|
|
try_f90flags="-fast -Mcache_align -r8 -Mpreprocess"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags_openmp="-mp"
|
|
try_ldflags="-v"
|
|
try_dflags="$try_dflags -D__PGI"
|
|
have_cpp=1
|
|
;;
|
|
crayxt*:pathf* )
|
|
try_fflags="-march=auto -O2 -cpp"
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
try_ldflags_static="-static"
|
|
have_cpp=1
|
|
;;
|
|
macppc:* )
|
|
try_fflags="-O4 -qarch=auto -qtune=auto -qsuffix=cpp=f90 \
|
|
-qdpc -qalias=nointptr"
|
|
try_f90flags="\$(FFLAGS) -qfree=f90"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
pre_fdflags="-WF,"
|
|
xlf_flags=1
|
|
;;
|
|
|
|
necsx:* )
|
|
try_fflags=' -float0 -Cvopt -eab -R5 -Wf,-Ncont,-A dbl4,-P nh,-ptr byte,-pvctl noifopt loopcnt=9999999 expand=12 fullmsg vwork=stack,-fusion,-O noif,-init stack=nan heap=nan'
|
|
try_f90flags=' -f2003 -float0 -Cvopt -eab -R5 -Wf,-Ncont,-A dbl4,-P nh,-ptr byte,-pvctl noifopt loopcnt=9999999 expand=12 fullmsg vwork=stack,-fusion,-O noif,-init stack=nan heap=nan'
|
|
try_f90flags="-$sxopt $try_f90flags"
|
|
try_fflags_noopt='-float0 '
|
|
try_f90flags_noopt='-f2003 -float0 -eab -R5 -C debug -Wf,-Ncont,-A dbl4,-P nh ,ptr byte,-init stack=nan heap=nan'
|
|
try_f90flags_noopt="$try_f90flags_noopt"
|
|
try_f90flags_inline='-f2003 -float0 -Cvopt -eab -R5 -pi noauto incdir exp=w0gauss -Wf,-Ncont,-A dbl4,-P nh,-ptr byte,-pvctl noifopt loopcnt=9999999 expand=12 fullmsg vwork=stack,-fusion,-O noif,-init stack=nan heap=nan'
|
|
try_f90flags_inline="$try_f90flags_inline"
|
|
try_ldflags_static='-P static'
|
|
try_ldflags='-Wl,-f zero'
|
|
try_ldflags="-p $try_ldflags"
|
|
pre_fdflags=""
|
|
;;
|
|
|
|
ppc64:*xlf* )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-g -C -qsuffix=cpp=f90 -qdpc -qalias=nointptr -Q"
|
|
else
|
|
try_fflags="-O4 -qsuffix=cpp=f90 -qdpc -qalias=nointptr -Q"
|
|
fi
|
|
try_f90flags="\$(FFLAGS) -qfree=f90"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
pre_fdflags="-WF,"
|
|
xlf_flags=1
|
|
;;
|
|
|
|
ppc64-mn:*xlf* )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-g -C -q64 -qstrict -qsuffix=cpp=f90 -qdpc -qalias=nointptr -Q -qtune=ppc970 -qarch=ppc970 -qcache=auto -qhot=vector,simd -qenablevmx"
|
|
else
|
|
try_fflags="-O3 -q64 -qstrict -qsuffix=cpp=f90 -qdpc -qalias=nointptr -Q -qtune=ppc970 -qarch=ppc970 -qcache=auto -qhot=vector,simd -qenablevmx"
|
|
fi
|
|
try_f90flags="\$(FFLAGS) -qfree=f90"
|
|
try_fflags_noopt="-O0 -q64"
|
|
try_ldflags=""
|
|
pre_fdflags="-WF,"
|
|
xlf_flags=1
|
|
;;
|
|
ppc64-bg:*xlf* )
|
|
if test "$use_debug" -eq 1; then
|
|
try_fflags="-q32 -qalias=noaryovrlp:nointptr -g -C -qdpc=e"
|
|
else
|
|
try_fflags="-q32 -qalias=noaryovrlp:nointptr -O3 -qstrict -qdpc=e"
|
|
fi
|
|
try_fflags_openmp="-qsmp=omp -qthreaded"
|
|
try_f90flags="\$(FFLAGS) -qsuffix=cpp=f90"
|
|
try_fflags_noopt="-q32 -O0"
|
|
try_ldflags="-q32"
|
|
try_ldflags_openmp="-qsmp -qthreaded"
|
|
pre_fdflags="-WF,"
|
|
xlf_flags=1
|
|
;;
|
|
|
|
* )
|
|
# unknown, try these
|
|
try_fflags="-O"
|
|
try_f90flags="\$(FFLAGS)"
|
|
try_fflags_noopt="-O0"
|
|
try_ldflags=""
|
|
have_cpp=0
|
|
;;
|
|
|
|
esac
|
|
|
|
if test "$use_shared" -eq 0 ; then
|
|
try_ldflags="$try_ldflags $try_ldflags_static" ; fi
|
|
|
|
if test "$use_openmp" -eq 1 ; then
|
|
try_fflags="$try_fflags $try_fflags_openmp"
|
|
try_ldlags="$try_ldlags $try_ldlags_openmp"
|
|
fi
|
|
|
|
if test "$fflags" = "" ; then fflags=$try_fflags ; fi
|
|
if test "$f90flags" = "" ; then f90flags=$try_f90flags ; fi
|
|
if test "$fflags_noopt" = "" ; then fflags_noopt=$try_fflags_noopt ; fi
|
|
echo setting FFLAGS... $fflags
|
|
echo setting F90FLAGS... $f90flags
|
|
echo setting FFLAGS_NOOPT... $fflags_noopt
|
|
if test "$imod" = "" ; then imod="-I" ; fi
|
|
|
|
# tentative C and loader flags, good for many cases
|
|
try_cflags="-O3"
|
|
c_ldflags=""
|
|
try_cpp="cpp"
|
|
|
|
case "$arch:$cc" in
|
|
*:pgcc )
|
|
try_cflags="-fast"
|
|
;;
|
|
# pathcc -E seems to give problems when preprocessing iotk
|
|
#*:pathcc )
|
|
# try_cpp="pathcc -E"
|
|
# ;;
|
|
aix:xlc* | aix:cc )
|
|
try_cflags="-q64 -O2"
|
|
c_ldflags="-q64"
|
|
;;
|
|
*:suncc )
|
|
try_cflags="-fast -O"
|
|
;;
|
|
sparc:cc )
|
|
try_cflags="-fast -dalign -xchip=ultra3 -xarch=v8plusb \
|
|
-xlic_lib=sunperf"
|
|
try_cpp="fpp"
|
|
;;
|
|
crayxt*:cc )
|
|
try_cflags="-fast"
|
|
;;
|
|
macppc:xlc* )
|
|
try_cflags="-O4"
|
|
;;
|
|
necsx:* )
|
|
#try_cflags="-D__SX6 \$(IFLAGS) \$(MODFLAGS)"
|
|
try_cflags=""
|
|
try_ar="sxar"
|
|
;;
|
|
ppc64-mn:* )
|
|
try_cflags="-O3 -q64"
|
|
;;
|
|
ppc64-bg:* )
|
|
try_cflags="-O3 -q32"
|
|
;;
|
|
esac
|
|
if test "$cflags" = "" ; then cflags=$try_cflags ; fi
|
|
echo setting CFLAGS... $cflags
|
|
|
|
# preprocessor - try cpp in all cases; the preprocessor returned by
|
|
# AC_PROG_CPP
|
|
# may sometimes refuse to preprocess fortran files
|
|
if test "$cpp" = "" ; then cpp=$try_cpp; fi
|
|
# if test "$cpp" = "" ; then cpp=$CPP; fi
|
|
echo setting CPP... $cpp
|
|
|
|
echo $ECHO_N "setting CPPFLAGS... $ECHO_C"
|
|
case $cpp in
|
|
cpp) try_cppflags="-P -traditional" ;;
|
|
fpp) try_cppflags="-P" ;;
|
|
*) try_cppflags="" ;;
|
|
esac
|
|
if test "$cppflags" = "" ; then cppflags=$try_cppflags ; fi
|
|
echo "${ECHO_T}$cppflags"
|
|
|
|
# linker and archiver
|
|
if test "$ld" = "" ; then ld="$mpif90" ; fi
|
|
if test "$ldflags" = "" ; then ldflags="$try_ldflags" ; fi
|
|
if test "$ar" = "" ; then ar="$try_ar" ; fi
|
|
if test "$arflags" = "" ; then arflags="$try_arflags" ; fi
|
|
echo setting LD... $ld
|
|
echo setting LDFLAGS... $ldflags
|
|
echo setting AR... $ar
|
|
echo setting ARFLAGS... $arflags
|
|
|
|
# compilation rules
|
|
AC_PROG_MAKE_SET
|
|
echo $ECHO_N "checking whether Fortran files must be preprocessed... $ECHO_C"
|
|
if test "$have_cpp" -ne 0
|
|
then
|
|
f90rule="\$(MPIF90) \$(F90FLAGS) -c \$<"
|
|
echo "${ECHO_T}no"
|
|
else
|
|
f90rule="\$(CPP) \$(CPPFLAGS) \$< -o \$*.F90 ; \\
|
|
\$(MPIF90) \$(F90FLAGS) -c \$*.F90 -o \$*.o"
|
|
echo "${ECHO_T}yes"
|
|
fi
|
|
|
|
# compilation flags for all subsequent tests
|
|
# remove all $(...) because at least one compiler doesn't like them
|
|
# but if f90flags contains $(FFLAGS), substitute it
|
|
test_cflags="`echo $cflags | sed 's/\$([[^)]]*)//g'`"
|
|
test_cppflags="$test_cflags"
|
|
if test "`echo $f90flags | grep '$(FFLAGS)'`" != ""
|
|
then
|
|
test_fflags="`echo $fflags $f90flags | sed 's/\$([[^)]]*)//g'`"
|
|
else
|
|
test_fflags="`echo $f90flags | sed 's/\$([[^)]]*)//g'`"
|
|
fi
|
|
test_ldflags="`echo $ldflags | sed 's/\$([[^)]]*)//g'`"
|
|
|
|
# find Fortran to C wrappers
|
|
|
|
if test "$check_wrappers" -ne 0; then
|
|
AC_F77_WRAPPERS
|
|
fi
|
|
|
|
AC_LANG_PUSH(Fortran 77)
|
|
F77=$f90 # use Fortran 90 actually
|
|
|
|
# Search for libraries
|
|
# Flags for needed libraries
|
|
have_blas=0
|
|
have_lapack=0
|
|
have_fft=0
|
|
have_mpi=0
|
|
have_scalapack=0
|
|
# Flags for machine-specific libraries
|
|
have_acml=0
|
|
have_atlas=0
|
|
have_essl=0
|
|
have_mkl=0
|
|
|
|
|
|
# check for blas
|
|
# supported vendor replacements:
|
|
# mkl and acml on Intel/AMD architectures
|
|
# essl on aix
|
|
# SUNperf on sparc
|
|
# atlas is used over blas if available
|
|
# internal version is used if none is found
|
|
|
|
if test "$use_internal_blas" -eq 0
|
|
then
|
|
if test "$blas_libs" = ""
|
|
then
|
|
# check directories in LD_LIBRARY_PATH too
|
|
# (maybe they are already searched by default, but I'm not sure)
|
|
ld_library_path=`echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
|
|
|
|
case "$arch:$f90" in
|
|
|
|
x86_64:pgf* | x86_64:path* | x86_64:openf95 | crayxt*:* )
|
|
# check for acml - note that it contains lapack as well
|
|
try_libdirs="/opt/acml*/pathscale64/lib/"
|
|
try_libdirs="$libdirs $ld_library_path $try_libdirs"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, acml, have_blas=1 have_lapack=1
|
|
have_acml=1 blas_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
|
|
ia64:* )
|
|
# check for mkl (in several directories)
|
|
try_libdirs="/opt/intel/Compiler/*/*/mkl/lib/64
|
|
/opt/intel/mkl/*/lib/64
|
|
/opt/intel/mkl*/lib/64"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=" "
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$MKL_FLAGS $test_ldflags $try_loption"
|
|
LIBS="$MKL_LIBS"
|
|
#
|
|
# should work for recent MKL versions only
|
|
#
|
|
if test "$use_openmp" -eq 0; then
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel_ipf,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_sequential -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_sequential -lmkl_core)
|
|
else
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel_ipf,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_intel_thread -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_intel_thread -lmkl_core)
|
|
fi
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
|
|
*:sunf95 )
|
|
# check for acml - note that it contains lapack as well
|
|
if test "$arch" = "x86_64"
|
|
then
|
|
try_libdirs="/usr/local/sunstudio*/lib/amd64/"
|
|
else
|
|
try_libdirs="/usr/local/sunstudio*/lib/"
|
|
fi
|
|
try_libdirs="$libdirs $ld_library_path $try_libdirs"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, sunperf, have_blas=1 have_lapack=1
|
|
blas_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
|
|
x86_64:* )
|
|
try_libdirs="/opt/intel/Compiler/*/*/mkl/lib/em64t
|
|
/opt/intel/mkl/*/lib/em64t
|
|
/opt/intel/mkl*/lib/em64t"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=" "
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$MKL_FLAGS $test_ldflags $try_loption"
|
|
LIBS="$MKL_LIBS"
|
|
#
|
|
# should work for recent MKL versions only
|
|
#
|
|
if test "$use_openmp" -eq 0; then
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel_lp64,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_sequential -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_sequential -lmkl_core)
|
|
else
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel_lp64,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_intel_thread -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_intel_thread -lmkl_core)
|
|
fi
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
|
|
ia32:* )
|
|
# check for mkl (in several directories)
|
|
try_libdirs="/opt/intel/Compiler/*/*/mkl/lib/32
|
|
/opt/intel/mkl/*/lib/32
|
|
/opt/intel/mkl*/lib/32"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption="-L "
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$MKL_FLAGS $test_ldflags $try_loption"
|
|
LIBS="$MKL_LIBS"
|
|
#
|
|
# should work for recent MKL versions only
|
|
#
|
|
if test "$use_openmp" -eq 0; then
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_sequential -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_sequential -lmkl_core)
|
|
else
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_intel_thread -lmkl_core"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_intel_thread -lmkl_core)
|
|
fi
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
|
|
done
|
|
;;
|
|
|
|
aix:* )
|
|
# check for essl
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, essl, have_blas=1
|
|
blas_libs="$LIBS" )
|
|
# notice that some IBM machines may not need -lessl
|
|
# to load blas so the above test may fail
|
|
if test "`echo $blas_libs | grep essl`" != ""
|
|
then
|
|
have_essl=1
|
|
try_dflags="$try_dflags -D__ESSL"
|
|
fi
|
|
;;
|
|
|
|
sparc:* | solaris:* )
|
|
# check for SUNperf library
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, sunperf, have_blas=1 have_lapack=1
|
|
blas_libs="-xlic_lib=sunperf $LIBS")
|
|
;;
|
|
necsx:* )
|
|
#sx5-nec or sx6-nec or sx8-nec: check in (/SX)/usr/lib
|
|
#sx8-nec-idris: check in /SX/opt/mathkeisan/inst/lib0
|
|
try_libdirs="/SX/usr/lib /SX/opt/mathkeisan/inst/lib0"
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, blas, have_blas=1
|
|
blas_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
ppc64:* )
|
|
# check for essl
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, essl, have_blas=1
|
|
blas_libs="$LIBS" )
|
|
# notice that some IBM machines may not need -lessl
|
|
# to load blas so the above test may fail
|
|
if test "`echo $blas_libs | grep essl`" != ""
|
|
then
|
|
have_essl=1
|
|
try_dflags="$try_dflags -D__LINUX_ESSL"
|
|
fi
|
|
;;
|
|
ppc64-*:* )
|
|
# assume essl
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
have_blas=1
|
|
have_essl=1
|
|
try_dflags="$try_dflags -D__LINUX_ESSL"
|
|
# BlueGene: for some obscure reason there is no need to
|
|
# specify a library path to have essl linked, while
|
|
# in reality it is needed to specify where essl are
|
|
if test "$arch"="ppc64-bg"; then
|
|
if test "$blas_libs"=""; then
|
|
if test "$use_openmp" -eq 0 ; then
|
|
blas_libs="-L/opt/ibmmath/essl/4.4/lib/ -lesslbg"
|
|
else
|
|
blas_libs="-L/opt/ibmmath/essl/4.4/lib/ -lesslsmpbg"
|
|
fi
|
|
fi
|
|
fi
|
|
;;
|
|
mac686:ifort* )
|
|
#This solution is tested with MacOs 10.6 and Intel 11.1
|
|
try_libdirs="/Developer/opt/intel/Compiler/*/*/Frameworks/mkl/lib/universal
|
|
/opt/intel/Compiler/*/*/Frameworks/mkl/lib/universal
|
|
/opt/intel/mkl*/lib/em64t"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=""
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$MKL_FLAGS $test_ldflags $try_loption"
|
|
LIBS="$MKL_LIBS"
|
|
# First, a by-the-apple-book search of MKL... >10.2 requires multiple libraries
|
|
# 64 bit is buggy as of 11.1.088
|
|
if test "$use_openmp" -eq 0; then
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_sequential -lmkl_core -lpthread"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_sequential -lmkl_core -lpthread)
|
|
else
|
|
AC_SEARCH_LIBS(dgemm, mkl_intel,
|
|
have_blas=1 have_mkl=1
|
|
blas_libs="$try_loption $LIBS -lmkl_intel_thread -lmkl_core -openmp -lpthread"
|
|
ldflags="$MKL_FLAGS $ldflags",
|
|
echo "MKL not found",
|
|
-lmkl_intel_thread -lmkl_core -openmp -lpthread)
|
|
fi
|
|
# 32 bit
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
|
|
|
|
esac
|
|
# blas not (yet) found: look for more possibilities
|
|
if test "$have_blas" -eq 0
|
|
then
|
|
case "$f90" in
|
|
pgf* )
|
|
# check for PGI blas
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, blas, have_blas=1 blas_libs="$LIBS")
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# macppc : try_libdirs="/usr/local/lib /sw/lib"
|
|
if test "$have_blas" -eq 0
|
|
then
|
|
# check for atlas (in several directories)
|
|
try_libdirs="/usr/local/lib"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS="-latlas"
|
|
AC_SEARCH_LIBS(dgemm, f77blas, have_blas=1 have_atlas=1
|
|
blas_libs="$try_loption $LIBS", , -lg2c)
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
fi
|
|
|
|
# blas still not found
|
|
|
|
if test "$have_blas" -eq 0
|
|
then
|
|
# check for blas (in several directories)
|
|
try_libdirs="/usr/local/lib"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dgemm # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dgemm, blas-3 blas, have_blas=1
|
|
blas_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dgemm" != "no"
|
|
then break ; fi
|
|
done
|
|
fi
|
|
else
|
|
# blas provided in BLAS_LIBS - not checked!
|
|
have_blas=1
|
|
fi
|
|
fi
|
|
|
|
# check for lapack
|
|
#
|
|
# same supported vendor replacements as for blas
|
|
# internal version is used if none is found
|
|
if test "$use_internal_lapack" -eq 0
|
|
then
|
|
if test "$lapack_libs" = ""
|
|
then
|
|
# check directories in LD_LIBRARY_PATH too
|
|
# (maybe they are already searched by default, but I'm not sure)
|
|
ld_library_path=`echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
|
|
|
|
case "$arch:$f90" in
|
|
|
|
ia32:* | ia64:*| x86_64:* )
|
|
# check for mkl_lapack (if mkl found and acml not found)
|
|
# OBSOLESCENT - recent versions of mkl contain lapack
|
|
if test "$have_mkl" -ne 0 && test "$have_acml" -eq 0
|
|
then
|
|
unset ac_cv_search_dspev ac_lib # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LIBS=" $blas_libs"
|
|
LDFLAGS="$MKL_FLAGS $test_ldflags"
|
|
AC_SEARCH_LIBS(dspev, mkl_lapack, have_lapack=1)
|
|
if test "$ac_lib" != "" ; then lapack_libs="-l$ac_lib"; fi
|
|
fi
|
|
;;
|
|
|
|
sparc:* )
|
|
# check for SUNperf library
|
|
unset ac_cv_search_dspev # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$blas_libs"
|
|
AC_SEARCH_LIBS(dspev, sunperf, have_lapack=1
|
|
lapack_libs="-xlic_lib=sunperf $LIBS")
|
|
;;
|
|
aix:* )
|
|
# check for essl
|
|
unset ac_cv_search_dspev # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$blas_libs"
|
|
AC_SEARCH_LIBS(dspev, essl, have_lapack=1
|
|
lapack_libs="$try_loption $LIBS"
|
|
try_dflags="$try_dflags -D__ESSL")
|
|
# essl may not have been found in previous test on blas
|
|
if test "$have_lapack" -eq 1; then have_essl=1; fi
|
|
;;
|
|
necsx:* )
|
|
#sx5-nec or sx6-nec or sx8-nec: check in (/SX)/usr/lib
|
|
#sx8-nec-idris: check in /SX/opt/mathkeisan/inst/lib0
|
|
try_libdirs="/SX/usr/lib /SX/opt/mathkeisan/inst/lib0"
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dspev # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption $blas_libs"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(dspev, lapack, have_lapack=1
|
|
lapack_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dspev" != "no"
|
|
then break ; fi
|
|
done
|
|
;;
|
|
esac
|
|
|
|
if test "$have_lapack" -eq 0
|
|
then
|
|
# check for lapack (in several directories)
|
|
# macppc : try_libdirs="/usr/local/lib /sw/lib"
|
|
try_libdirs="/usr/local/lib"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dspev # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS="$blas_libs"
|
|
AC_SEARCH_LIBS(dspev, lapack-3 lapack, have_lapack=1
|
|
lapack_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_dspev" != "no"; then
|
|
# essl must precede lapack (if present)
|
|
if test "$have_essl" -ne 0 ; then
|
|
lapack_libs="$blas_libs $lapack_libs"
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
else
|
|
# lapack provided in LAPACK_LIBS - not checked!
|
|
have_lapack=1
|
|
fi
|
|
fi
|
|
|
|
# no blas library found, or internal blas required: use the built-in blas
|
|
# (blas_libs is used in the above lapack tests: do not move the following
|
|
# settings above lapack tests, which would seem a more logical place)
|
|
|
|
if test "$have_blas" -eq 0 -o "$use_internal_blas" -eq 1 ; then
|
|
blas_libs="$topdir/BLAS/blas.a"
|
|
blas_libs_switch="internal"
|
|
else
|
|
blas_libs_switch="external"
|
|
fi
|
|
|
|
# no lapack library found, or incomplete lapack found (atlas, essl),
|
|
# or internal lapack esplicitly required
|
|
|
|
if test "$have_lapack" -eq 0 -o "$use_internal_lapack" -eq 1 ; then
|
|
lapack_libs="$topdir/lapack-3.2/lapack.a"
|
|
lapack_libs_switch="internal"
|
|
else
|
|
if test "$have_essl" -eq 1 -o "$have_atlas" -eq 1 ; then
|
|
# IBM essl or atlas: add missing lapack routines - must be loaded after lib
|
|
# atlas: add missing lapack routines so as to complete atlas
|
|
# note that some compilers do not like to have multiple symbols
|
|
lapack_libs="$lapack_libs $topdir/lapack-3.2/lapack.a"
|
|
lapack_libs_switch="internal"
|
|
else
|
|
lapack_libs_switch="external"
|
|
fi
|
|
fi
|
|
|
|
echo setting BLAS_LIBS... $blas_libs
|
|
echo setting LAPACK_LIBS... $lapack_libs
|
|
|
|
# check for FFT libraries (no check for explicit openmp)
|
|
# supported vendor replacements:
|
|
# essl on aix and some IBM linux machines
|
|
# SUNperf on sparc
|
|
# ASL/Mathkeisan on Nec
|
|
# acml on amd
|
|
if test "$fft_libs" = "" && test "$use_openmp" -eq 0
|
|
then
|
|
# check directories in LD_LIBRARY_PATH too
|
|
# (maybe they are already searched by default, but I'm not sure)
|
|
ld_library_path=`echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
|
|
|
|
case "$arch" in
|
|
aix )
|
|
# check for essl
|
|
unset ac_cv_search_dcft # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$fft_libs"
|
|
AC_SEARCH_LIBS(dcft, essl, have_fft=1 fft_libs="$LIBS")
|
|
;;
|
|
ppc64 | ppc64-mn )
|
|
# check for essl
|
|
unset ac_cv_search_dcft # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$fft_libs"
|
|
AC_SEARCH_LIBS(dcft, essl, have_fft=1 fft_libs="$LIBS")
|
|
;;
|
|
ppc64-bg )
|
|
# check for esslbg
|
|
unset ac_cv_search_dcft # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$fft_libs $blas_libs"
|
|
AC_SEARCH_LIBS(dcft, esslbg, have_fft=1 fft_libs="$LIBS")
|
|
;;
|
|
sparc )
|
|
# check for SUNperf FFT library on Sun Sparcs
|
|
# but not on solaris PC! it is slower than FFTW
|
|
unset ac_cv_search_zfft3i # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$libs"
|
|
AC_SEARCH_LIBS(zfft3i, sunperf, have_fft=1
|
|
try_dflags="$try_dflags -D__SUNPERF"
|
|
fft_libs="-xlic_lib=sunperf $LIBS")
|
|
;;
|
|
necsx )
|
|
if test "$use_fft_mathkeisan" -ne 0
|
|
then
|
|
#sx5-nec or sx6-nec or sx8-nec: check in (/SX)/usr/lib
|
|
#sx8-nec-idris: check in /SX/opt/mathkeisan/inst/lib0
|
|
try_libdirs="/SX/usr/lib /SX/opt/mathkeisan/inst/lib0"
|
|
#check for Mathkeisan (Cray simple precision )
|
|
#search for initialization subroutine
|
|
echo $ECHO_N "Searching in Mathkeisan" $ECHO_C
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_zftfax # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(zftfax, fft, have_fft=1
|
|
try_dflags="$try_dflags try_dflags_fft_mathkeisan"
|
|
fft_libs="$try_loption $LIBS")
|
|
if test "$ac_cv_search_zftfax" != "no"
|
|
then break ; fi
|
|
done
|
|
fi
|
|
if test "$use_fft_asl" -ne 0
|
|
then
|
|
#check for asl in (/SX)/usr/lib
|
|
try_libdirs="/SX/usr/lib"
|
|
#search for initialization subroutine
|
|
echo $ECHO_N "Searching in Asl" $ECHO_C
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_zfc3cl # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(zfc3cl, asl, have_fft=1
|
|
asl_libs="$try_loption $LIBS"
|
|
try_dflags="$try_dflags $try_dflags_fft_asl"
|
|
fft_libs="$fft_libs $asl_libs")
|
|
if test "$ac_cv_search_zfc3cl" != "no"
|
|
then break ; fi
|
|
done
|
|
fi
|
|
if test "$use_fft_para" -ne 0
|
|
then
|
|
try_dflags="$try_dflags $try_dflags_fft_para"
|
|
fi
|
|
;;
|
|
x86_64 | crayxt* )
|
|
# check for acml
|
|
case $f90_version in
|
|
pgf* | path* )
|
|
if test "$have_acml" -ne 0
|
|
then
|
|
unset ac_cv_search_zfft1mx # clear cached value
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$fft_libs"
|
|
AC_SEARCH_LIBS(zfft1mx, acml, have_fft=1
|
|
fft_libs="$LIBS"
|
|
try_dflags="$try_dflags -D__ACML" )
|
|
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
fi
|
|
|
|
if test "$have_fft" -eq 0 && test "$use_openmp" -eq 0
|
|
then
|
|
|
|
# check for fftw v.3 (in several directories)
|
|
try_libdirs="/usr/local/lib"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_dfftw_execute_dft # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
CFLAGS="$test_cflags"
|
|
CPPFLAGS="$test_cppflags"
|
|
LDFLAGS="$c_ldflags $try_loption"
|
|
LIBS="$fft_libs"
|
|
AC_SEARCH_LIBS(dfftw_execute_dft, fftw3, have_fft=1
|
|
fft_libs="$try_loption $LIBS", , -lm)
|
|
if test "$ac_cv_search_dfftw_execute_dft" != "no"
|
|
then
|
|
try_dflags="$try_dflags -D__FFTW3"
|
|
break
|
|
fi
|
|
done
|
|
|
|
fi
|
|
echo setting FFT_LIBS... $fft_libs
|
|
|
|
# if no valid FFT library was found, use the local copy
|
|
if test "$have_fft" -eq 0
|
|
then
|
|
try_dflags="$try_dflags -D__FFTW"
|
|
fi
|
|
|
|
F77=$f90
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags"
|
|
# check for mass on aix
|
|
if test "$mass_libs" = ""
|
|
then
|
|
# check directories in LD_LIBRARY_PATH too
|
|
# (maybe they are already searched by default, but I'm not sure)
|
|
ld_library_path=`echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
|
|
|
|
case "$arch" in
|
|
aix )
|
|
# check for mass (in several directories)
|
|
try_libdirs="/usr/local/lib /cineca/lib /cineca/lib/mass"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_vexp # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(vexp, massvp4 massv, , , -lmass)
|
|
if test "$ac_cv_search_vexp" = "-lmassvp4" \
|
|
-o "$ac_cv_search_vexp" = "-lmassv"
|
|
then mass_libs="$try_loption $ac_cv_search_vexp -lmass"
|
|
fi
|
|
if test "$ac_cv_search_vexp" != "no" ; then break ; fi
|
|
done
|
|
;;
|
|
|
|
ppc64* )
|
|
# check for mass (in several directories)
|
|
try_libdirs="/usr/local/lib /opt/ibmcmp/xlmass/*/lib64"
|
|
try_libdirs="$libdirs $try_libdirs $ld_library_path"
|
|
|
|
for dir in none $try_libdirs
|
|
do
|
|
unset ac_cv_search_vexp # clear cached value
|
|
if test "$dir" = "none"
|
|
then
|
|
try_loption=
|
|
else
|
|
echo $ECHO_N "in $dir: " $ECHO_C
|
|
try_loption="-L$dir"
|
|
fi
|
|
FFLAGS="$test_fflags"
|
|
LDFLAGS="$test_ldflags $try_loption"
|
|
LIBS=""
|
|
AC_SEARCH_LIBS(vexp, massvp4_64, , , -lmass_64)
|
|
if test "$ac_cv_search_vexp" = "-lmassvp4_64"
|
|
then mass_libs="$try_loption $ac_cv_search_vexp -lmass_64"
|
|
fi
|
|
if test "$ac_cv_search_vexp" != "no" ; then break ; fi
|
|
done
|
|
;;
|
|
|
|
esac
|
|
fi
|
|
|
|
if test "$mass_libs" != ""; then try_dflags="$try_dflags -D__MASS" ; fi
|
|
|
|
echo setting MASS_LIBS... $mass_libs
|
|
|
|
# check for mpi
|
|
# some architectures require to link mpi libraries explicitly
|
|
F77=$mpif90 # use parallel compiler
|
|
if test "$mpi_libs" = ""
|
|
then
|
|
# check directories in LD_LIBRARY_PATH too
|
|
# (maybe they are already searched by default, but I'm not sure)
|
|
ld_library_path=`echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
|
|
|
|
if test "$use_parallel" -ne 0
|
|
then
|
|
if test "$have_mpi" -eq 0
|
|
# check for mpi
|
|
then
|
|
unset ac_cv_search_mpi_init # clear cached value
|
|
LDFLAGS="$test_ldflags"
|
|
LIBS="$mpi_libs"
|
|
AC_SEARCH_LIBS(mpi_init, mpi,
|
|
have_mpi=1 mpi_libs="$LIBS")
|
|
fi
|
|
fi
|
|
fi
|
|
echo setting MPI_LIBS... $mpi_libs
|
|
|
|
# final check on availability of parallel environment
|
|
parallel=0
|
|
if test "$use_parallel" -ne 0
|
|
then
|
|
F77=$mpif90
|
|
LIBS="$mpi_libs"
|
|
AC_SEARCH_LIBS(mpi_init, "", parallel=1
|
|
try_dflags="$try_dflags -D__MPI -D__PARA")
|
|
# look for scalapack if required
|
|
if test "$parallel" -eq 1
|
|
then
|
|
if test "$with_scalapack" -ne 0
|
|
then
|
|
# no additional libraries needed
|
|
scalapack_libs=""
|
|
AC_SEARCH_LIBS(pdgemr2d, "" , have_scalapack=1
|
|
try_dflags="$try_dflags -D__SCALAPACK")
|
|
if test "$have_scalapack" -eq 0;
|
|
then
|
|
# scalapack + blacs
|
|
unset ac_cv_search_pdgemr2d # clear cached value
|
|
if test "$scalapack_dir" = ""; then scalapack_dir="/bgsys/local/scalapack/lib"; fi
|
|
if test "$blacs_dir" = ""; then blacs_dir="/bgsys/local/blacs/lib"; fi
|
|
scalapack_libs="-L$scalapack_dir -lscalapack"
|
|
scalapack_libs="$scalapack_libs -L$blacs_dir -lblacs -lblacsF77init -lblacs"
|
|
LIBS="$mpi_libs $scalapack_libs"
|
|
LDFLAGS=""
|
|
AC_SEARCH_LIBS(pdgemr2d, "" , have_scalapack=1
|
|
try_dflags="$try_dflags -D__SCALAPACK")
|
|
fi
|
|
if test "$have_scalapack" -eq 0;
|
|
then
|
|
# sci libraries (e.g. cray xt)
|
|
unset ac_cv_search_pdgemr2d # clear cached value
|
|
scalapack_libs="-lsci"
|
|
LIBS="$mpi_libs $scalapack_libs"
|
|
AC_SEARCH_LIBS(pdgemr2d, "" , have_scalapack=1
|
|
try_dflags="$try_dflags -D__SCALAPACK")
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# preprocessing flag for openmp (experimental)
|
|
if test "$use_openmp" -eq 1 ; then try_dflags="$try_dflags -D__OPENMP" ; fi
|
|
|
|
# preprocessing flag for signal trapping (experimental)
|
|
if test "$use_signals" -eq 1 ; then try_dflags="$try_dflags -D__TRAP_SIGUSR1" ; fi
|
|
|
|
|
|
if test "$dflags" = "" ; then dflags="$try_dflags" ; fi
|
|
echo setting DFLAGS... $dflags
|
|
|
|
if test "$iflags" = "" ; then iflags="$try_iflags" ; fi
|
|
echo setting IFLAGS... $iflags
|
|
|
|
# xlf compilers (AIX and powerpc) want comma-separated -D directives
|
|
if test "$xlf_flags" -ne 0
|
|
then
|
|
fdflags="`echo $dflags | sed 's/ */,/g'`"
|
|
else
|
|
fdflags="\$(DFLAGS)"
|
|
fi
|
|
echo setting FDFLAGS... $fdflags
|
|
|
|
if test "$ranlib" != "echo"
|
|
then
|
|
AC_CHECK_PROG(ranlib,ranlib,ranlib,echo)
|
|
fi
|
|
# MacOs walkaround for ranlib
|
|
if test "$arch" == "mac686"; then
|
|
if test "$ranlib" == "ranlib"; then
|
|
ranlib="ranlib -c"
|
|
fi
|
|
fi
|
|
|
|
echo setting RANLIB... $ranlib
|
|
|
|
# configure output messages
|
|
blas_line="BLAS_LIBS=$blas_libs"
|
|
if test "$have_scalapack" -eq 1; then
|
|
scalapack_line="SCALAPACK_LIBS=$scalapack_libs"
|
|
else
|
|
scalapack_libs=""
|
|
scalapack_line="@delete@"
|
|
fi
|
|
lapack_line="LAPACK_LIBS=$lapack_libs"
|
|
fft_line="FFT_LIBS=$fft_libs"
|
|
if test "$mpi_libs" != "" ; then
|
|
mpi_line="MPI_LIBS=$mpi_libs"
|
|
else
|
|
mpi_line="@delete@"
|
|
fi
|
|
if test "$arch" = "aix" ; then
|
|
mass_line="MASS_LIBS=$mass_libs"
|
|
else
|
|
mass_line="@delete@"
|
|
fi
|
|
|
|
if test "$use_parallel" -ne 0
|
|
then
|
|
if test "$parallel" -ne 0
|
|
then
|
|
parallel_report="Parallel environment detected successfully.\\
|
|
Configured for compilation of parallel executables."
|
|
else
|
|
parallel_report="Parallel environment not detected \
|
|
\(is this a parallel machine?\).\\
|
|
Configured for compilation of serial executables."
|
|
fi
|
|
else
|
|
parallel_report="Configured for compilation of serial executables."
|
|
fi
|
|
|
|
# export settings to generated files
|
|
AC_SUBST(cc)
|
|
AC_SUBST(cflags)
|
|
AC_SUBST(dflags)
|
|
AC_SUBST(fdflags)
|
|
AC_SUBST(cpp)
|
|
AC_SUBST(cppflags)
|
|
AC_SUBST(f90)
|
|
AC_SUBST(mpif90)
|
|
AC_SUBST(f90flags)
|
|
AC_SUBST(f77)
|
|
AC_SUBST(fflags)
|
|
AC_SUBST(fflags_noopt)
|
|
AC_SUBST(pre_fdflags)
|
|
AC_SUBST(imod)
|
|
AC_SUBST(iflags)
|
|
AC_SUBST(ld)
|
|
AC_SUBST(ldflags)
|
|
AC_SUBST(ld_libs)
|
|
AC_SUBST(blas_libs)
|
|
AC_SUBST(blas_libs_switch)
|
|
AC_SUBST(lapack_libs)
|
|
AC_SUBST(lapack_libs_switch)
|
|
AC_SUBST(fft_libs)
|
|
AC_SUBST(mpi_libs)
|
|
AC_SUBST(mass_libs)
|
|
AC_SUBST(scalapack_libs)
|
|
AC_SUBST(ar)
|
|
AC_SUBST(arflags)
|
|
AC_SUBST(ranlib)
|
|
AC_SUBST(f90rule)
|
|
AC_SUBST(blas_line)
|
|
AC_SUBST(lapack_line)
|
|
AC_SUBST(scalapack_line)
|
|
AC_SUBST(fft_line)
|
|
AC_SUBST(mpi_line)
|
|
AC_SUBST(mass_line)
|
|
AC_SUBST(parallel_report)
|
|
AC_SUBST(topdir)
|
|
|
|
AC_CONFIG_HEADERS([include/c_defs.h:include/c_defs.h.in])
|
|
AC_CONFIG_FILES(make.sys)
|
|
AC_CONFIG_FILES(configure.msg)
|
|
|
|
AC_CONFIG_FILES(plugins/install/make_wannier90.sys)
|
|
|
|
AC_CONFIG_FILES(extlibs/install/make_blas.inc)
|
|
AC_CONFIG_FILES(extlibs/install/make_lapack.inc)
|
|
|
|
|
|
AC_OUTPUT
|
|
|
|
# final messages
|
|
sed '/@delete@/d' configure.msg
|
|
echo configure: success
|