quantum-espresso/configure.ac

1384 lines
33 KiB
Plaintext
Raw Normal View History

AC_INIT(ESPRESSO, 3.0, , espresso)
# -----------------------------
# application-specific settings
# default choices
# set each variable to 0 (false) or 1 (true)
use_parallel=1
use_shared=1
# -----------------------------
# store variables from the environment (may be set or not)
topdir=$TOPDIR
arch=$ARCH
env_cc=$CC
mpicc=$MPICC
cpp=$CPP
cflags=$CFLAGS
cppflags=$CPPFLAGS
dflags=$DFLAGS
f77=$F77
f90=$F90
mpif77=$MPIF77
mpif90=$MPIF90
fflags=$FFLAGS
f90flags=$F90FLAGS
ld=$LD
ldflags=$LDFLAGS
blas_libs=$BLAS_LIBS
lapack_libs=$LAPACK_LIBS
fft_libs=$FFT_LIBS
mpi_libs=$MPI_LIBS
mass_libs=$MASS_LIBS
libdirs=$LIBDIRS
ar=$AR
arflags=$ARFLAGS
mylib=$MYLIB
includefftw=$INCLUDEFFTW
# command-line arguments
for arg in $*
do
if test "$arg" = "--enable-parallel" ; then use_parallel=1
elif test "$arg" = "--disable-parallel" ; then use_parallel=0
elif test "$arg" = "--enable-shared" ; then use_shared=1
elif test "$arg" = "--disable-shared" ; then use_shared=0
fi
done
# 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_F77 and AC_PROG_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 !!!
if test "$host" = "" ; then host=$build ; fi
cross_compiling=yes
# identify architecture
if test "$arch" = ""
then
case $host in
ia64-*-linux-gnu | x86_64-*-linux-gnu ) arch=linux64 ;;
*-pc-linux-gnu ) arch=linux32 ;;
*-ibm-aix* ) arch=aix ;;
mips-sgi-* ) arch=mips ;;
alphaev*-dec-osf* ) arch=alpha ;;
alphaev*-*-linux* ) arch=alinux ;;
sparc-sun-* ) arch=sparc ;;
*cray-unicosmp* ) arch=crayx1 ;;
powerpc-apple-darwin* ) arch=mac ;;
*-pc-cygwin ) arch=cygwin ;;
esac
fi
echo checking architecture... $arch
# candidate compilers, archiver and flags based on architecture
case $arch in
linux64 )
try_mpif90="mpif90"
try_f90="ifort ifc efc pgf90 g95 f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__LINUX64"
;;
linux32 )
try_mpif90="mpif90"
try_f90="ifort ifc pgf90 g95 f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__LINUX"
;;
aix )
try_mpif90="mpxlf90_r mpxlf90"
try_f90="xlf90_r xlf90 f90"
try_ar="ar"
try_arflags="-X64 ruv"
try_dflags="-D__AIX -D__XLF"
;;
mips )
try_f90="f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__SGI -D__SGI64 -D__ORIGIN"
;;
alpha )
try_f90="f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__ALPHA"
;;
alinux )
try_mpif90="mpif90"
try_f90="fort g95 f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__ALPHA -D__LINUX64"
;;
sparc )
try_mpif90="mpf90"
try_f90="f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__SUN"
;;
crayx1 )
try_f90="ftn"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__X1"
;;
mac )
try_mpif90="mpxlf90 mpf90"
try_f90="xlf90 f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__MAC -D__XLF"
ranlib="ranlib"
;;
cygwin )
try_mpif90="mpif90"
try_f90="g95 f90"
try_ar="ar"
try_arflags="ruv"
try_dflags="-D__LINUX"
;;
* )
AC_MSG_WARN(unsupported architecture)
try_f90="f90"
try_ar="ar"
try_arflags="ruv"
;;
esac
if test "$use_parallel" -ne 0
then
# clear cached values
unset F77 ac_cv_prog_ac_ct_F77 ac_cv_f77_compiler_gnu ac_cv_prog_f77_g
# check parallel Fortran 90 compiler
if test "$mpif90" = "" -a "$f90" != "" ; then mpif90=$f90; fi
if test "$mpif90" = "" ; then mpif90="$try_mpif90 $try_f90" ; fi
AC_PROG_F77($mpif90)
mpif90=$F77
case "$arch" in
linux* )
# check which compiler does mpif90 wrap
echo $ECHO_N "checking version of $mpif90... $ECHO_C"
ifort_version=`$mpif90 -V 2>&1 | grep "Intel(R)"`
pgf_version=`$mpif90 -V 2>&1 | grep "^pgf"`
g95_version=`$mpif90 -v 2>&1 | grep "g95"`
if test "$ifort_version" != ""
then
version=`$mpif90 -V 2>&1 | grep Version |
sed 's/.*Version//' | awk '{print $1}'`
if test `echo $version | sed 's/\..*//'` -lt 8
then
try_f90="ifc efc"
echo "${ECHO_T}ifc $version"
else
try_f90="ifort efc"
echo "${ECHO_T}ifort $version"
fi
elif test "$pgf_version" != ""
then
version=`echo $pgf_version | awk '{print $2}'`
try_f90="pgf90"
echo "${ECHO_T}pgf90 $version"
elif test "$g95_version" != ""
then
version=`echo $g95_version | awk '{print $3}'`
try_f90="g95"
echo "${ECHO_T}g95 $version"
else
echo "${ECHO_T}unknown"
fi
;;
esac
case "$arch:$mpif90" in
*:mpif90 )
try_mpicc="mpicc"
try_mpif77="mpif77"
;;
*:mpf90 )
try_mpicc="mpcc"
try_mpif77="mpf77"
;;
aix:mpxlf*_r )
try_mpicc="mpcc_r"
try_mpif77="mpxlf_r"
;;
aix:mpxlf* )
try_mpicc="mpcc"
try_mpif77="mpxlf"
;;
mac:mpxlf* )
try_mpicc="mpcc"
try_mpif77="mpxlf mpf77"
;;
esac
fi
# clear cached values
unset F77 ac_cv_prog_ac_ct_F77 ac_cv_f77_compiler_gnu ac_cv_prog_f77_g
# check serial Fortran 90 compiler
if test "$f90" = "" ; then f90="$try_f90" ; fi
AC_PROG_F77($f90)
f90=$F77
if test "$use_parallel" -eq 0 ; then mpif90=$f90 ; fi
echo setting F90... $f90
echo setting MPIF90... $mpif90
case "$arch:$f90" in
linux*:ifort* )
try_cc="icc ecc gcc cc"
try_f77="$f90"
;;
linux*:ifc* )
try_cc="icc ecc gcc cc"
try_f77="$f90"
;;
linux*:pgf90 )
try_cc="pgcc gcc cc"
try_f77="pgf77 $f90"
;;
linux*:g95 )
try_cc="gcc cc"
try_f77="$f90"
;;
linux*:* )
try_cc="gcc cc"
try_f77="f77 $f90"
;;
aix:*xlf*_r )
try_cc="xlc_r cc gcc"
try_f77="xlf_r f77 $f90"
;;
aix:*xlf* )
try_cc="xlc cc gcc"
try_f77="xlf f77 $f90"
;;
mips:* )
try_cc="cc gcc"
try_f77="f77 $f90"
;;
alpha:* )
try_cc="cc gcc"
try_f77="f77 $f90"
;;
alinux:* )
try_cc="ccc gcc"
try_f77="fort g77 f77 $f90"
;;
sparc:* )
try_cc="cc gcc"
try_f77="f77 $f90"
;;
crayx1:ftn )
try_cc="cc"
try_f77="$f90"
;;
mac:xlf90 )
try_cc="gcc"
try_f77="xlf f77 $f90"
;;
mac:* )
try_cc="gcc"
try_f77="f77 $f90"
;;
cygwin*:g95 )
try_cc="gcc cc"
try_f77="$g95 f90"
;;
* )
# unknown, try these
try_cc="cc gcc"
try_f77="f77 $f90"
;;
esac
if test "$use_parallel" -ne 0
then
# clear cached values
unset CC ac_cv_prog_ac_ct_CC ac_cv_c_compiler_gnu ac_cv_prog_cc_g
# check parallel C compiler
if test "$mpicc" = "" ; then mpicc="$try_mpicc $try_cc" ; fi
AC_PROG_CC($mpicc)
mpicc=$CC
# clear cached values
unset F77 ac_cv_prog_ac_ct_F77 ac_cv_f77_compiler_gnu ac_cv_prog_f77_g
# check parallel Fortran 77 compiler
if test "$mpif77" = "" ; then mpif77="$try_mpif77 $try_f77" ; fi
AC_PROG_F77($mpif77)
mpif77=$F77
fi
# clear cached values
unset CC ac_cv_prog_ac_ct_CC ac_cv_c_compiler_gnu ac_cv_prog_cc_g
# check serial C compiler
if test "$env_cc" = "" ; then cc="$try_cc" ; else cc="$env_cc"; fi
AC_PROG_CC($cc)
cc=$CC
if test "$use_parallel" -eq 0 ; then mpicc=$cc ; fi
echo setting CC... $cc
echo setting MPICC... $mpicc
# clear cached values
unset F77 ac_cv_prog_ac_ct_F77 ac_cv_f77_compiler_gnu ac_cv_prog_f77_g
# check serial Fortran 77 compiler
if test "$f77" = "" ; then f77="$try_f77" ; fi
AC_PROG_F77($f77)
f77=$F77
if test "$use_parallel" -eq 0 ; then mpif77=$f77 ; fi
echo setting F77... $f77
echo setting MPIF77... $mpif77
# check whether the C and Fortran compilers are compatible
case "$arch:$cc:$f90" in
# list supported combinations here
linux*:icc:ifort* | linux*:icc:ifc* ) ;;
linux*:gcc:ifort* | linux*:gcc:ifc* ) ;;
linux*:pgcc:pgf90 ) ;;
linux*:gcc:g95 ) ;;
aix:mpcc*:mpxlf* ) ;;
aix:xlc*:*xlf* | aix:cc:*xlf* ) ;;
mips:cc:f90 ) ;;
alinux:ccc:fort | alinux:gcc:fort ) ;;
alpha:cc:f90 ) ;;
mac:mpcc:mpf90 ) ;;
mac:gcc:xlf90 ) ;;
crayx1:cc:ftn ) ;;
sparc:cc:f90 ) ;;
cygwin:gcc:g95 ) ;;
* )
AC_MSG_WARN(unsupported C/Fortran compilers combination)
;;
esac
# check Fortran compiler flags
have_cpp=0
xlf_flags=0
case "$arch:$f90" in
linux64:ifort* )
try_fflags="-O2 -assume byterecl"
try_f90flags="\$(FFLAGS) -nomodule"
try_fflags_noopt="-O0 -assume byterecl"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -nomodule"
try_ldflags=""
try_ldflags_static="-static"
try_dflags="$try_dflags -D__INTEL"
pre_fdflags="-fpp "
have_cpp=1
;;
linux64:ifc* )
try_fflags="-Vaxlib -O2"
try_f90flags="\$(FFLAGS) -nomodule"
try_fflags_noopt="-O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -nomodule"
try_ldflags="-Vaxlib"
try_ldflags_static="-static"
try_dflags="$try_dflags -D__INTEL"
pre_fdflags="-fpp "
have_cpp=1
;;
linux64:pgf* )
try_fflags="-fast -r8"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags=""
try_ldflags_static="-Bstatic"
try_dflags="$try_dflags -D__PGI"
;;
linux32:ifort* )
try_fflags="-O2 -tpp6 -assume byterecl"
try_f90flags="\$(FFLAGS) -nomodule"
try_fflags_noopt="-O0 -assume byterecl"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -nomodule"
try_ldflags=""
try_ldflags_static="-static"
try_dflags="$try_dflags -D__INTEL"
pre_fdflags="-fpp "
have_cpp=1
;;
linux32:ifc* )
try_fflags="-Vaxlib -O2 -tpp6"
try_f90flags="\$(FFLAGS) -nomodule"
try_fflags_noopt="-O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -nomodule"
try_ldflags="-Vaxlib"
try_ldflags_static="-static"
try_dflags="$try_dflags -D__INTEL"
pre_fdflags="-fpp "
have_cpp=1
if test `echo $version | sed 's/\..*//'` -lt 7
then
# old versions of ifc require this stuff
echo $ECHO_N "setting up ifc environment... $ECHO_C"
try_f90flags="\$(FFLAGS) -cl,./intel.pcl"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -cl,./intel.pcl"
pcl_ph="D3 Raman"
pcl_pw="PH PP Gamma PWCOND pwtools $pcl_ph"
pcl_modules="PW CPV flib upftools atomic $pcl_pw"
pcl_dot=". Modules $pcl_modules"
for dir in $pcl_dot
do
echo work.pc > $topdir/$dir/intel.pcl
done
for dir in $pcl_modules
do
echo ../Modules/work.pc >> $topdir/$dir/intel.pcl
done
for dir in $pcl_pw
do
echo ../PW/work.pc >> $topdir/$dir/intel.pcl
done
for dir in $pcl_ph
do
echo ../PH/work.pc >> $topdir/$dir/intel.pcl
done
echo "${ECHO_T}done"
fi
;;
linux32:pgf* )
try_fflags="-fast -r8"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags=""
try_ldflags_static="-Bstatic"
try_dflags="$try_dflags -D__PGI"
;;
linux*:g95 )
try_fflags="-O3 -cpp"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-O0 -cpp"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags=""
#try_ldflags_static="-static"
try_dflags="$try_dflags -D__G95"
have_cpp=1
;;
cygwin:g95 )
try_fflags="-O3 -cpp"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-O0 -cpp"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags=""
#try_ldflags_static="-static"
try_dflags="$try_dflags -D__G95"
have_cpp=1
;;
aix:*xlf* )
try_fflags="-q64 -qalias=noaryovrlp -O3 -qstrict \
-qarch=auto -qtune=auto -qdpc -Q -qalias=nointptr"
try_f90flags="\$(FFLAGS) -qsuffix=cpp=f90 -qfree=f90"
try_fflags_noopt="-q64 -O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -qsuffix=cpp=f90 -qfree=f90"
try_ldflags="-q64"
# try_ldflags_static="-bstatic"
pre_fdflags="-WF,"
xlf_flags=1
have_cpp=1
;;
mips:f90 )
try_fflags="-mips4 -64 -O2 -r10000 -r8"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-mips4 -64 -O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags="-mips4 -64"
pre_fdflags="-cpp "
have_cpp=1
;;
alinux:fort )
have_cpp=1
pre_fdflags="-cpp "
try_fflags="-O -r8 -align dcommons -align records"
try_f90flags="\$(FFLAGS) -free"
try_fflags_noopt="-O0 -r8 -align dcommons -align records"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -free"
try_ldflags_static="-non_shared"
;;
alpha:f90 )
have_cpp=1
pre_fdflags="-cpp "
try_fflags="-O -real_size 64 -align dcommons -align records"
try_f90flags="\$(FFLAGS) -free"
try_fflags_noopt="-O0 -real_size 64 -align dcommons -align records"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -free"
;;
sparc:mpf90 | 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_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags=""
imod="-M"
;;
crayx1:ftn )
try_fflags="-s default64 -dp -rma -e0 \
-O scalar3,stream3,vector3,nointerchange -Z -O inline5"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-s default64 -dp -rma -e0 -O0 -Z"
try_f90flags_noopt="\$(FFLAGS_NOOPT)"
try_ldflags="-s default64 -f nan64"
try_dflags="$try_dflags -D__X1_COA"
pre_fdflags="-e Z -F"
have_cpp=1
;;
mac:* )
try_fflags="-O4 -qarch=auto -qtune=auto -qsuffix=cpp=f90 \
-qdpc -qalias=nointptr"
try_f90flags="\$(FFLAGS) -qfree=f90"
try_fflags_noopt="-O0"
try_f90flags_noopt="\$(FFLAGS_NOOPT) -qfree=f90"
try_ldflags=""
pre_fdflags="-WF,"
xlf_flags=1
have_cpp=1
;;
* )
# unknown, try these
try_fflags="-O"
try_f90flags="\$(FFLAGS)"
try_fflags_noopt="-O0"
try_f90flags_noopt="$\(FFLAGS_NOOPT)"
try_ldflags=""
;;
esac
if test "$use_shared" -eq 0 ; then
try_ldflags="$try_ldflags $try_ldflags_static" ; 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
if test "$f90flags_noopt" = "" ; then f90flags_noopt=$try_f90flags_noopt ; fi
echo setting FFLAGS... $fflags
echo setting F90FLAGS... $f90flags
echo setting FFLAGS_NOOPT... $fflags_noopt
echo setting F90FLAGS_NOOPT... $f90flags_noopt
if test "$imod" = "" ; then imod="-I" ; fi
case "$arch:$cc" in
linux*:icc )
try_cflags="-O3"
c_ldflags=""
;;
linux*:pgcc )
try_cflags="-fast"
c_ldflags=""
try_cpp="cpp"
;;
linux*:gcc )
try_cflags="-O3 -fomit-frame-pointer"
c_ldflags=""
try_cpp="cpp"
;;
cygwin:gcc )
try_cflags="-O3 -fomit-frame-pointer"
c_ldflags=""
try_cpp="cpp"
;;
aix:mpcc* | aix:xlc* | aix:cc )
try_cflags="-q64 -O2"
c_ldflags="-q64"
;;
mips:cc )
try_cflags="-mips4 -64 -O2 -r10000"
;;
alpha:cc )
try_cflags="-O"
;;
sparc:mpcc | sparc:cc )
try_cflags="-fast -dalign -xchip=ultra3 -xarch=v8plusb \
-xlic_lib=sunperf"
try_cpp="fpp"
;;
crayx1:cc )
try_cflags=""
c_ldflags=""
;;
mac:gcc )
try_cflags="-O3 -fomit-frame-pointer -I/usr/include/malloc"
try_cpp="cpp"
;;
mac:* )
try_cflags="-O4"
;;
*:gcc )
try_cflags="-O3 -fomit-frame-pointer"
try_cpp="cpp"
;;
* )
try_cflags="-O"
;;
esac
if test "$cflags" = "" ; then cflags=$try_cflags ; fi
echo setting CFLAGS... $cflags
# preprocessor
AC_PROG_CPP
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'`"
AC_LANG_PUSH(Fortran 77)
F77=$f90 # use Fortran 90 actually (autoconf only knows Fortran 77!)
# search for libraries
have_blas=0
have_mkl=0
have_lapack=0
have_essl=0
have_fft=0
have_fftw=0
have_fftw_h=0
have_mpi=0
# check for blas
# supported vendor replacements:
# mkl on linux
# essl on aix
# complib.sgimath on mips
# cxml on alpha
# SUNperf on sparc
# atlas is used over blas if available
# internal version is used if none is found
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'`
# build list of directories to search
case "$arch" in
mac ) try_libdirs="/usr/local/lib /sw/lib" ;;
*) try_libdirs="/usr/local/lib" ;;
esac
# search
case "$arch:$f90" in
linux*: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")
;;
linux64:* )
mklname=mkl
case $host in
ia64-*-linux-gnu)
# check for mkl (in several directories)
try_libdirs="/opt/intel/mkl/8.0/lib/64
/opt/intel/mkl721/lib/64
/opt/intel/mkl72/lib/64
/opt/intel/mkl701/lib/64
/opt/intel/mkl70/lib/64
/opt/intel/mkl/mkl61/lib/64
/opt/intel/mkl/lib/64
/opt/intel/mkl61/lib/64"
mklname=mkl_ipf
;;
x86_64-*-linux-gnu)
try_libdirs="/opt/intel/mkl/8.0/lib/em64t
/opt/intel/mkl721/lib/em64t"
mklname=mkl_em64t
;;
esac
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="-lguide -lpthread"
AC_SEARCH_LIBS(dgemm, "$mklname", have_blas=1 have_mkl=1
blas_libs="$try_loption $LIBS")
if test "$ac_cv_search_dgemm" != "no"
then break ; fi
done
;;
linux32:* )
# check for mkl (in several directories)
try_libdirs="/opt/intel/mkl/8.0/lib/32
/opt/intel/mkl721/lib/32
/opt/intel/mkl72/lib/32
/opt/intel/mkl701/lib/32
/opt/intel/mkl70/lib/32
/opt/intel/mkl/mkl61/lib/32
/opt/intel/mkl/lib/32
/opt/intel/mkl61/lib/32
/cineca/prod/intel/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="-lguide -lpthread"
AC_SEARCH_LIBS(dgemm, mkl_ia32, have_blas=1 have_mkl=1
blas_libs="$try_loption $LIBS")
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_essl=1 have_blas=1
blas_libs="$LIBS")
;;
mips:* )
# check for complib.sgimath
unset ac_cv_search_dgemm # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS=""
AC_SEARCH_LIBS(dgemm, complib.sgimath, have_blas=1
blas_libs="$LIBS")
;;
alpha:* | alinux:* )
# check for cxml
unset ac_cv_search_dgemm # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS=""
AC_SEARCH_LIBS(dgemm, cxml, have_blas=1 blas_libs="$LIBS")
;;
sparc:* )
# check for SUNperf library
unset ac_cv_search_zggev # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS=""
AC_SEARCH_LIBS(dgemm, sunperf, have_blas=1
blas_libs="-xlic_lib=sunperf $LIBS")
;;
esac
if test "$have_blas" -eq 0
then
# check for atlas (in several directories)
case "$f90" in
ifort* | ifc* )
try_libdirs="/usr/local/lib /cineca/prod/intel/lib" ;;
pgf* ) try_libdirs="/usr/local/lib /cineca/prod/pgi/lib" ;;
g95 ) try_libdirs="/usr/local/lib /cineca/prod/gnu/lib" ;;
* ) try_libdirs="/usr/local/lib" ;;
esac
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 -lg2c"
AC_SEARCH_LIBS(dgemm, f77blas, have_blas=1
blas_libs="$try_loption $LIBS")
if test "$ac_cv_search_dgemm" != "no"
then break ; fi
done
fi
if test "$have_blas" -eq 0
then
# check for blas (in several directories)
case "$f90" in
ifort* | ifc* )
try_libdirs="/usr/local/lib /cineca/prod/intel/lib" ;;
pgf* ) try_libdirs="/usr/local/lib /cineca/prod/pgi/lib" ;;
g95 ) try_libdirs="/usr/local/lib /cineca/prod/gnu/lib" ;;
* ) try_libdirs="/usr/local/lib" ;;
esac
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, have_blas=1
blas_libs="$try_loption $LIBS")
if test "$ac_cv_search_dgemm" != "no"
then break ; fi
done
fi
fi
echo setting BLAS_LIBS... $blas_libs
# check for lapack
# supported vendor replacements:
# mkl on linux
# SUNperf on sparc
# internal version is used if none is found
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'`
# build list of directories to search
case "$arch" in
mac ) try_libdirs="/usr/local/lib /sw/lib" ;;
*) try_libdirs="/usr/local/lib" ;;
esac
# search
case "$arch:$f90" in
linux64:* )
# check for mkl_lapack
if test "$have_mkl" -ne 0
then
unset ac_cv_search_zggev # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS="$blas_libs"
AC_SEARCH_LIBS(zggev, mkl_lapack, have_lapack=1
lapack_libs="-lmkl_lapack")
fi
;;
linux32:* )
# check for mkl_lapack
if test "$have_mkl" -ne 0
then
unset ac_cv_search_zggev # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS="$blas_libs"
AC_SEARCH_LIBS(zggev, mkl_lapack, have_lapack=1
lapack_libs="-lmkl_lapack")
fi
;;
sparc:* )
# check for SUNperf library
unset ac_cv_search_zggev # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS="$blas_libs"
AC_SEARCH_LIBS(zggev, sunperf, have_lapack=1
lapack_libs="-xlic_lib=sunperf $LIBS")
;;
esac
if test "$have_lapack" -eq 0
then
# check for lapack (in several directories)
case "$f90" in
ifort* | ifc* )
try_libdirs="/usr/local/lib /cineca/prod/intel/lib" ;;
pgf* ) try_libdirs="/usr/local/lib /cineca/prod/pgi/lib" ;;
g95 ) try_libdirs="/usr/local/lib /cineca/prod/gnu/lib" ;;
*xlf* ) try_libdirs="/usr/local/lib /cineca/lib" ;;
* ) try_libdirs="/usr/local/lib" ;;
esac
try_libdirs="$libdirs $try_libdirs $ld_library_path"
for dir in none $try_libdirs
do
unset ac_cv_search_zggev # 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(zggev, lapack, have_lapack=1
lapack_libs="$try_loption -llapack")
if test "$ac_cv_search_zggev" != "no"
then break ; fi
done
fi
# essl must precede lapack (if present)
if test "$have_essl" -ne 0 && test "$have_lapack" -ne 0
then lapack_libs="-lessl $lapack_libs" ; fi
fi
echo setting LAPACK_LIBS... $lapack_libs
# check for fftw
# supported vendor replacements:
# essl on aix
# SUNperf on sparc
# internal version is used if none is found
if test "$fft_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'`
# build list of directories to search
case "$arch" in
mac ) try_libdirs="/usr/local/lib /sw/lib" ;;
*) try_libdirs="/usr/local/lib" ;;
esac
# search
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")
;;
sparc )
# check for SUNperf library
unset ac_cv_search_zfft3i # clear cached value
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
LIBS="$libs"
AC_SEARCH_LIBS(zfft3i, sunperf, have_fft=1
fft_libs="-xlic_lib=sunperf $LIBS")
;;
esac
if test "$have_fft" -eq 0
then
AC_LANG_PUSH(C)
# check for fftw (in several directories)
case "$f90" in
ifort* | ifc* )
try_libdirs="/usr/local/lib /cineca/prod/intel/lib" ;;
pgf* ) try_libdirs="/usr/local/lib /cineca/prod/pgi/lib" ;;
* ) try_libdirs="/usr/local/lib /cineca/prod/gnu/lib" ;;
esac
try_libdirs="$libdirs $try_libdirs $ld_library_path"
for dir in none $try_libdirs
do
unset ac_cv_search_fftwnd # 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(fftwnd, fftw, have_fftw=1
fft_libs="$try_loption $LIBS", , -lm)
if test "$ac_cv_search_fftwnd" != "no"
then break ; fi
done
AC_LANG_POP(C)
fi
fi
echo setting FFT_LIBS... $fft_libs
# 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'`
# build list of directories to search
case "$arch" in
mac ) try_libdirs="/usr/local/lib /sw/lib" ;;
*) try_libdirs="/usr/local/lib" ;;
esac
# search
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" \
-or "$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
;;
esac
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'`
# build list of directories to search
case "$arch" in
mac ) try_libdirs="/usr/local/lib /sw/lib" ;;
*) try_libdirs="/usr/local/lib" ;;
esac
# search
if test "$use_parallel" -ne 0
then
case "$arch" in
alpha )
AC_LANG_PUSH(C)
CFLAGS="$test_cflags"
CPPFLAGS="$test_cppflags"
LDFLAGS="$c_ldflags"
LIBS=""
AC_SEARCH_LIBS(elan_baseInit, elan, mpi_libs="$LIBS")
LIBS="-lmpi $mpi_libs"
AC_SEARCH_LIBS(mpi_waitany_, fmpi, have_mpi=1
mpi_libs="$LIBS")
AC_LANG_POP(C)
LIBS="$mpi_libs"
AC_SEARCH_LIBS(pmpi_init, pmpi, mpi_libs="$LIBS")
;;
esac
if test "$have_mpi" -eq 0
then
# check for mpi
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 checks on available libraries
F77=$f90
FFLAGS="$test_fflags"
LDFLAGS="$test_ldflags"
parallel=0
if test "`echo $lapack_libs | grep mkl`" != ""
then
mylib="lapack_mkl"
else
LIBS="$lapack_libs $blas_libs"
AC_SEARCH_LIBS(zggev, "", , mylib="lapack")
AC_SEARCH_LIBS(dgemm, "", , mylib="blas_and_lapack")
fi
LIBS="$mass_libs"
AC_SEARCH_LIBS(vexp, "", try_dflags="$try_dflags -D__MASS")
if test "$arch" = "aix"
then
LIBS="$fft_libs"
AC_SEARCH_LIBS(dcft, "", have_fft=1)
fi
if test "$have_fft" -eq 0
then
AC_LANG_PUSH(C)
if test "$have_fft" -eq 0
then
try_dflags="$try_dflags -D__FFTW"
CFLAGS="$test_cflags"
LDFLAGS="$c_ldflags"
LIBS="$fft_libs"
AC_SEARCH_LIBS(fftwnd, "", have_fft=1 have_fftw=1)
fi
# find location of fftw.h (if needed)
if test "$have_fftw" -ne 0
then
if test "$includefftw" = ""
then
# if libfftw is in /some/path/lib, then fftw.h is
# probably in /some/path/include
includefftw=`echo $fft_libs |
sed 's/.*-L\([[^ ]]*\) *-lfftw.*/\1/
s/lib/include/'`
fi
try_includedirs="$includefftw /usr/local/include \
/cineca/lib/fftw-2.1.3/fftw"
for dir in none $try_includedirs
do
unset ac_cv_header_fftw_h # clear cached value
if test "$dir" = "none"
then
try_ioption=
else
echo $ECHO_N "in $dir: " $ECHO_C
try_ioption="-I$dir"
fi
CFLAGS="$test_cflags $try_ioption"
CPPFLAGS="$test_cppflags $try_ioption"
LDFLAGS="$c_ldflags"
LIBS="$fft_libs"
AC_CHECK_HEADER(fftw.h, have_fftw_h=1
ifftw="$try_ioption")
if test "$ac_cv_header_fftw_h" != "no"
then break ; fi
done
fi
# if no valid FFT library was found, use our implementation
if test "$have_fft" -eq 0
then
try_dflags="$try_dflags -D__USE_INTERNAL_FFTW"
fi
if test "$have_fftw" -ne 0 && test "$have_fftw_h" -eq 0
then
try_dflags="$try_dflags -D__USE_INTERNAL_FFTW"
AC_MSG_WARN([fftw library detected, but fftw.h not found])
fi
AC_LANG_POP(C)
fi
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")
fi
AC_LANG_POP(Fortran 77)
if test "$dflags" = "" ; then dflags="$try_dflags" ; fi
echo setting DFLAGS... $dflags
# 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" = "" ; then ranlib=echo ; fi
echo setting RANLIB... $ranlib
echo setting MYLIB... $mylib
# generate dependencies
if test -x $topdir/makedeps.sh
then
echo checking dependencies...
( cd $topdir ; ./makedeps.sh )
fi
# configure output messages
blas_line="BLAS_LIBS=$blas_libs"
lapack_line="LAPACK_LIBS=$lapack_libs"
fft_line="FFT_LIBS=$fft_libs"
if test "$have_fft" -ne 0 && test "$have_fftw" -ne 0 &&
test "$have_fftw_h" -eq 0
then
fft_line="$fft_line FFT_LIBS=$fft_libs\\
WARNING: fftw library detected, but fftw.h not found"
fi
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(mpicc)
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(f90flags_noopt)
AC_SUBST(f77)
AC_SUBST(mpif77)
AC_SUBST(fflags)
AC_SUBST(fflags_noopt)
AC_SUBST(pre_fdflags)
AC_SUBST(imod)
AC_SUBST(ifftw)
AC_SUBST(ld)
AC_SUBST(ldflags)
AC_SUBST(blas_libs)
AC_SUBST(lapack_libs)
AC_SUBST(fft_libs)
AC_SUBST(mpi_libs)
AC_SUBST(mass_libs)
AC_SUBST(mylib)
AC_SUBST(ar)
AC_SUBST(arflags)
AC_SUBST(ranlib)
AC_SUBST(f90rule)
AC_SUBST(blas_line)
AC_SUBST(lapack_line)
AC_SUBST(fft_line)
AC_SUBST(mpi_line)
AC_SUBST(mass_line)
AC_SUBST(parallel_report)
AC_CONFIG_FILES(make.sys)
AC_CONFIG_FILES(configure.msg)
AC_OUTPUT
# final messages
sed '/@delete@/d' configure.msg
echo configure: success