
It should now be possible to build a static version of musrfit and shared libraries for the user functions. This is needed on systems which do not support linking static libraries to shared ones (like Cygwin). These changes still need to be tested on Cygwin, especially with user functions implementing the "global interface".
814 lines
29 KiB
Plaintext
814 lines
29 KiB
Plaintext
AC_REVISION($Id$)
|
|
|
|
AC_PREREQ(2.59)
|
|
AC_INIT(musrfit, 0.9.0, andreas.suter@psi.ch)
|
|
AC_CONFIG_AUX_DIR(admin)
|
|
AC_CANONICAL_HOST
|
|
#AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}])
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Check if pkg-config is installed
|
|
dnl -----------------------------------------------
|
|
|
|
#PKG_PROG_PKG_CONFIG([0.9])
|
|
#The above macro does not work if pkg-config is not installed, therefore, for the moment we stay with the solution below:
|
|
m4_ifdef([PKG_CHECK_MODULES],[],AC_MSG_ERROR([Please install pkg-config before configuring musrfit!]))
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Package names and version numbers
|
|
dnl -----------------------------------------------
|
|
|
|
MUSR_PROGRAM_NAME=musrfit
|
|
MUSR_LIBRARY_NAME=PMusr
|
|
LEM_LIBRARY_NAME=TLemRunHeader
|
|
PSIBIN_LIBRARY_NAME=Class_MuSR_PSI
|
|
MUD_LIBRARY_NAME=mud
|
|
PNEXUS_LIBRARY_NAME=PNeXus
|
|
CUBA_LIBRARY_NAME=cuba
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Optional plug-ins
|
|
dnl -----------------------------------------------
|
|
|
|
|
|
#release versioning
|
|
MUSR_MAJOR_VERSION=0
|
|
MUSR_MINOR_VERSION=9
|
|
MUSR_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
LEM_MAJOR_VERSION=1
|
|
LEM_MINOR_VERSION=5
|
|
LEM_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
PSIBIN_MAJOR_VERSION=0
|
|
PSIBIN_MINOR_VERSION=1
|
|
PSIBIN_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
MUD_MAJOR_VERSION=0
|
|
MUD_MINOR_VERSION=0
|
|
MUD_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
PNEXUS_MAJOR_VERSION=0
|
|
PNEXUS_MINOR_VERSION=9
|
|
PNEXUS_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
PLUGIN_MAJOR_VERSION=1
|
|
PLUGIN_MINOR_VERSION=0
|
|
PLUGIN_MICRO_VERSION=0
|
|
|
|
#release versioning
|
|
CUBA_MAJOR_VERSION=2
|
|
CUBA_MINOR_VERSION=1
|
|
CUBA_MICRO_VERSION=0
|
|
|
|
#API version
|
|
MUSR_API_VERSION=$MUSR_MAJOR_VERSION.$MUSR_MINOR_VERSION
|
|
AC_SUBST(MUSR_API_VERSION)
|
|
|
|
LEM_API_VERSION=$LEM_MAJOR_VERSION.$LEM_MINOR_VERSION
|
|
AC_SUBST(LEM_API_VERSION)
|
|
|
|
PSIBIN_API_VERSION=$PSIBIN_MAJOR_VERSION.$PSIBIN_MINOR_VERSION
|
|
AC_SUBST(PSIBIN_API_VERSION)
|
|
|
|
MUD_API_VERSION=$MUD_MAJOR_VERSION.$MUD_MINOR_VERSION
|
|
AC_SUBST(MUD_API_VERSION)
|
|
|
|
PNEXUS_API_VERSION=$PNEXUS_MAJOR_VERSION.$PNEXUS_MINOR_VERSION
|
|
AC_SUBST(PNEXUS_API_VERSION)
|
|
|
|
PLUGIN_API_VERSION=$PLUGIN_MAJOR_VERSION.$PLUGIN_MINOR_VERSION
|
|
AC_SUBST(PLUGIN_API_VERSION)
|
|
|
|
CUBA_API_VERSION=$CUBA_MAJOR_VERSION.$CUBA_MINOR_VERSION
|
|
AC_SUBST(CUBA_API_VERSION)
|
|
|
|
#shared library versioning
|
|
CUBA_LIBRARY_VERSION=$CUBA_MAJOR_VERSION:$CUBA_MINOR_VERSION:$CUBA_MICRO_VERSION
|
|
PLUGIN_LIBRARY_VERSION=$PLUGIN_MAJOR_VERSION:$PLUGIN_MINOR_VERSION:$PLUGIN_MICRO_VERSION
|
|
LEM_LIBRARY_VERSION=$LEM_MAJOR_VERSION:$LEM_MINOR_VERSION:$LEM_MICRO_VERSION
|
|
PSIBIN_LIBRARY_VERSION=$PSIBIN_MAJOR_VERSION:$PSIBIN_MINOR_VERSION:$PSIBIN_MICRO_VERSION
|
|
MUD_LIBRARY_VERSION=$MUD_MAJOR_VERSION:$MUD_MINOR_VERSION:$MUD_MICRO_VERSION
|
|
PNEXUS_LIBRARY_VERSION=$PNEXUS_MAJOR_VERSION:$PNEXUS_MINOR_VERSION:$PNEXUS_MICRO_VERSION
|
|
MUSR_LIBRARY_VERSION=$MUSR_MAJOR_VERSION:$MUSR_MINOR_VERSION:$MUSR_MICRO_VERSION
|
|
|
|
# This is definitely handled wrongly at the moment and needs to be fixed...
|
|
#XXX_LIBRARY_VERSION=X:Y:Z
|
|
# | | |
|
|
# +------+ | +---+
|
|
# | | |
|
|
# current:revision:age
|
|
# | | |
|
|
# | | +- increment if interfaces have been added
|
|
# | | set to zero if interfaces have been removed
|
|
# or changed
|
|
# | +- increment if source code has changed
|
|
# | set to zero if current is incremented
|
|
# +- increment if interfaces have been added, removed or changed
|
|
|
|
AC_SUBST(MUSR_LIBRARY_VERSION)
|
|
AC_SUBST(LEM_LIBRARY_VERSION)
|
|
AC_SUBST(PSIBIN_LIBRARY_VERSION)
|
|
AC_SUBST(MUD_LIBRARY_VERSION)
|
|
AC_SUBST(PNEXUS_LIBRARY_VERSION)
|
|
AC_SUBST(PLUGIN_LIBRARY_VERSION)
|
|
AC_SUBST(CUBA_LIBRARY_VERSION)
|
|
|
|
PACKAGE=$MUSR_PROGRAM_NAME
|
|
AC_SUBST(MUSR_LIBRARY_NAME)
|
|
AC_SUBST(LEM_LIBRARY_NAME)
|
|
AC_SUBST(PSIBIN_LIBRARY_NAME)
|
|
AC_SUBST(MUD_LIBRARY_NAME)
|
|
AC_SUBST(PNEXUS_LIBRARY_NAME)
|
|
AC_SUBST(CUBA_LIBRARY_NAME)
|
|
|
|
PSIBIN_VERSION=$PSIBIN_MAJOR_VERSION.$PSIBIN_MINOR_VERSION.$PSIBIN_MICRO_VERSION
|
|
PSIBIN_RELEASE=$PSIBIN_MAJOR_VERSION.$PSIBIN_MINOR_VERSION
|
|
AC_SUBST(PSIBIN_RELEASE)
|
|
AC_SUBST(PSIBIN_VERSION)
|
|
|
|
MUD_VERSION=$MUD_MAJOR_VERSION.$MUD_MINOR_VERSION.$MUD_MICRO_VERSION
|
|
MUD_RELEASE=$MUD_MAJOR_VERSION.$MUD_MINOR_VERSION
|
|
AC_SUBST(MUD_RELEASE)
|
|
AC_SUBST(MUD_VERSION)
|
|
|
|
PNEXUS_VERSION=$PNEXUS_MAJOR_VERSION.$PNEXUS_MINOR_VERSION.$PNEXUS_MICRO_VERSION
|
|
PNEXUS_RELEASE=$PNEXUS_MAJOR_VERSION.$PNEXUS_MINOR_VERSION
|
|
AC_SUBST(PNEXUS_RELEASE)
|
|
AC_SUBST(PNEXUS_VERSION)
|
|
|
|
LEM_VERSION=$LEM_MAJOR_VERSION.$LEM_MINOR_VERSION.$LEM_MICRO_VERSION
|
|
LEM_RELEASE=$LEM_MAJOR_VERSION.$LEM_MINOR_VERSION
|
|
AC_SUBST(LEM_RELEASE)
|
|
AC_SUBST(LEM_VERSION)
|
|
|
|
MUSR_VERSION=$MUSR_MAJOR_VERSION.$MUSR_MINOR_VERSION.$MUSR_MICRO_VERSION
|
|
MUSR_RELEASE=$MUSR_MAJOR_VERSION.$MUSR_MINOR_VERSION
|
|
AC_SUBST(MUSR_RELEASE)
|
|
AC_SUBST(MUSR_VERSION)
|
|
|
|
PLUGIN_VERSION=$PLUGIN_MAJOR_VERSION.$PLUGIN_MINOR_VERSION.$PLUGIN_MICRO_VERSION
|
|
PLUGIN_RELEASE=$PLUGIN_MAJOR_VERSION.$PLUGIN_MINOR_VERSION
|
|
AC_SUBST(PLUGIN_RELEASE)
|
|
AC_SUBST(PLUGIN_VERSION)
|
|
AC_SUBST(PLUGIN_MAJOR_VERSION)
|
|
AC_SUBST(PLUGIN_MINOR_VERSION)
|
|
|
|
CUBA_VERSION=$CUBA_MAJOR_VERSION.$CUBA_MINOR_VERSION.$CUBA_MICRO_VERSION
|
|
CUBA_RELEASE=$CUBA_MAJOR_VERSION.$CUBA_MINOR_VERSION
|
|
AC_SUBST(CUBA_RELEASE)
|
|
AC_SUBST(CUBA_VERSION)
|
|
|
|
VERSION=$MUSR_VERSION
|
|
|
|
# Wordaround for gcc-bugs causing problems building libCuba
|
|
# which should be change when a real solution appears
|
|
# Set CFLAGS to "" and pass any user-CFLAGS to the mud-building
|
|
# user-CFLAGS will not be passed to the libCuba building process
|
|
# mud and cuba are currently the only C-routines
|
|
USER_CFLAGS="$CFLAGS"
|
|
CFLAGS=
|
|
if test "$USER_CFLAGS" == ""; then
|
|
USER_CFLAGS="-g -O2"
|
|
fi
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Automake initialization and program checks
|
|
dnl -----------------------------------------------
|
|
|
|
AM_INIT_AUTOMAKE(@PACKAGE_NAME@, @PACKAGE_VERSION@)
|
|
AC_CONFIG_HEADER([config.h])
|
|
AC_LANG([C++])
|
|
AC_PROG_LN_S
|
|
AC_PROG_INSTALL
|
|
|
|
m4_ifdef([LT_INIT],
|
|
[LT_INIT([disable-static])
|
|
LT_LANG([C++])
|
|
LT_LANG([C])],
|
|
[m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
|
|
AM_DISABLE_STATIC
|
|
AM_PROG_LIBTOOL
|
|
AC_PROG_CXX
|
|
AC_PROG_CC])
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Ask user for path to fftw3
|
|
dnl -----------------------------------------------
|
|
|
|
FFTW3_FOUND=0
|
|
AC_ARG_WITH([fftw3],
|
|
[AC_HELP_STRING([--with-fftw3],[prefix of FFTW3 installation, e.g. /usr/local or /usr])],
|
|
[FFTW3_PREFIX=$with_fftw3
|
|
AC_MSG_CHECKING([whether FFTW3 can be found at the specified location])
|
|
if !(test -r ${FFTW3_PREFIX}/include/fftw3.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([FFTW3 cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${FFTW3_PREFIX}])],
|
|
[PKG_CHECK_MODULES(FFTW3, fftw3 >= 3.1.0, [FFTW3_FOUND=1],
|
|
[AC_MSG_CHECKING([whether FFTW3 is installed in a standard location])
|
|
if test -r /usr/local/include/fftw3.h; then
|
|
FFTW3_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${FFTW3_PREFIX}])
|
|
elif test -r /usr/include/fftw3.h; then
|
|
FFTW3_PREFIX="/usr"
|
|
AC_MSG_RESULT([${FFTW3_PREFIX}])
|
|
elif test -r /sw/include/fftw3.h; then
|
|
FFTW3_PREFIX="/sw"
|
|
AC_MSG_RESULT([${FFTW3_PREFIX}])
|
|
elif test -r /opt/local/include/fftw3.h; then
|
|
FFTW3_PREFIX="/opt/local"
|
|
AC_MSG_RESULT([${FFTW3_PREFIX}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[FFTW3 not found. Please call configure with the --with-fftw3 option.
|
|
This tells configure where to find the FFTW3 C libraries and headers,
|
|
e.g. --with-fftw3=/usr/local or --with-fftw3=/usr]
|
|
)
|
|
fi
|
|
]
|
|
)
|
|
]
|
|
)
|
|
AC_SUBST(FFTW3_PREFIX)
|
|
if test "${FFTW3_FOUND}" != "1"; then
|
|
FFTW3_LIBS="-L${FFTW3_PREFIX}/lib -lfftw3 -lm"
|
|
FFTW3_CFLAGS="-I${FFTW3_PREFIX}/include"
|
|
fi
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Ask user for path to gsl
|
|
dnl -----------------------------------------------
|
|
|
|
GSL_FOUND=0
|
|
AC_ARG_WITH([gsl],
|
|
[AC_HELP_STRING([--with-gsl],[prefix of GSL installation. e.g. /usr/local or /usr])],
|
|
[GSL_PREFIX=$with_gsl
|
|
AC_MSG_CHECKING([whether GSL can be found at the specified location])
|
|
if !(test -r ${GSL_PREFIX}/include/gsl/gsl_sf_hyperg.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([GSL cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${GSL_PREFIX}])],
|
|
[PKG_CHECK_MODULES(GSL, gsl >= 1.9, [GSL_FOUND=1],
|
|
[AC_MSG_CHECKING([whether GSL is installed in a standard location])
|
|
if test -r /usr/local/include/gsl/gsl_sf_hyperg.h; then
|
|
GSL_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${GSL_PREFIX}])
|
|
elif test -r /usr/include/gsl/gsl_sf_hyperg.h; then
|
|
GSL_PREFIX="/usr"
|
|
AC_MSG_RESULT([${GSL_PREFIX}])
|
|
elif test -r /sw/include/gsl/gsl_sf_hyperg.h; then
|
|
GSL_PREFIX="/sw"
|
|
AC_MSG_RESULT([${GSL_PREFIX}])
|
|
elif test -r /opt/local/include/gsl/gsl_sf_hyperg.h; then
|
|
GSL_PREFIX="/opt/local"
|
|
AC_MSG_RESULT([${GSL_PREFIX}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[GSL not found. Please call configure with the --with-gsl option.
|
|
This tells configure where to find the GSL C libraries and headers,
|
|
e.g. --with-gsl=/usr/local or --with-gsl=/usr]
|
|
)
|
|
fi
|
|
]
|
|
)
|
|
]
|
|
)
|
|
AC_SUBST(GSL_PREFIX)
|
|
if test "${GSL_FOUND}" != "1"; then
|
|
GSL_LIBS="-L${GSL_PREFIX}/lib -lgsl -lgslcblas -lm"
|
|
GSL_CFLAGS="-I${GSL_PREFIX}/include/gsl"
|
|
fi
|
|
AC_SUBST(GSL_LIBS)
|
|
AC_SUBST(GSL_CFLAGS)
|
|
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Ask user for path to boost
|
|
dnl -----------------------------------------------
|
|
|
|
BOOST_FOUND=0
|
|
AC_ARG_WITH([boostinc],
|
|
[AC_HELP_STRING([--with-boostinc],[path to the header files of the BOOST installation, e.g. /usr/local/include or /usr/include])],
|
|
[BOOST_INCLUDE=$with_boostinc
|
|
AC_MSG_CHECKING([whether BOOST can be found at the specified location])
|
|
if !(test -r ${BOOST_INCLUDE}/boost/spirit.hpp) && !(test -r ${BOOST_INCLUDE}/boost/spirit/include/classic_spirit.hpp); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([BOOST cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${BOOST_INCLUDE}])],
|
|
[PKG_CHECK_MODULES(BOOST, boost >= 1.30, [BOOST_FOUND=1],
|
|
[AC_MSG_CHECKING([whether BOOST is installed in a standard location])
|
|
if test -r /usr/local/include/boost/spirit.hpp || test -r /usr/local/include/boost/spirit/include/classic_spirit.hpp; then
|
|
BOOST_INCLUDE="/usr/local/include"
|
|
AC_MSG_RESULT([${BOOST_INCLUDE}])
|
|
elif test -r /usr/include/boost/spirit.hpp || test -r /usr/include/boost/spirit/include/classic_spirit.hpp; then
|
|
BOOST_INCLUDE="/usr/include"
|
|
AC_MSG_RESULT([${BOOST_INCLUDE}])
|
|
elif test -r /sw/include/boost/spirit.hpp || test -r /sw/include/boost/spirit/include/classic_spirit.hpp; then
|
|
BOOST_INCLUDE="/sw/include"
|
|
AC_MSG_RESULT([${BOOST_INCLUDE}])
|
|
elif test -r /opt/local/include/boost/spirit.hpp || test -r /opt/local/include/boost/spirit/include/classic_spirit.hpp; then
|
|
BOOST_INCLUDE="/opt/local/include"
|
|
AC_MSG_RESULT([${BOOST_INCLUDE}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[BOOST not found. Please call configure with the --with-boostinc option.
|
|
This tells configure where to find the BOOST C++ headers,
|
|
e.g. --with-boostinc=/usr/local/include or --with-boostinc=/usr/include or --with-boostinc=/usr/include/boost-1_33_0]
|
|
)
|
|
fi
|
|
]
|
|
)
|
|
]
|
|
)
|
|
AC_SUBST(BOOST_INCLUDE)
|
|
if test "${BOOST_FOUND}" != "1"; then
|
|
BOOST_LIBS=""
|
|
BOOST_CFLAGS="-I${BOOST_INCLUDE}"
|
|
fi
|
|
AC_SUBST(BOOST_LIBS)
|
|
AC_SUBST(BOOST_CFLAGS)
|
|
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Check for ROOT
|
|
dnl -----------------------------------------------
|
|
|
|
ROOT_PATH([5.22/00], [], AC_MSG_ERROR([Either ROOT is not installed correctly or the version is too old... please check!]))
|
|
|
|
ROOT_LIBS="-L${ROOTLIBDIR} ${ROOTGLIBS} ${ROOTAUXLIBS} -lMinuit2 -lMathMore -lXMLParser"
|
|
ROOT_CFLAGS="-I${ROOTINCDIR} ${ROOTCFLAGS} ${ROOTAUXCFLAGS}"
|
|
|
|
# Check if Minuit2 has been enabled during the ROOT configuration
|
|
|
|
AC_MSG_CHECKING([for Minuit2 in ROOT])
|
|
if [[[ $(${ROOTCONF} --config) == *--enable-minuit2* ]]]; then
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([Minuit2 not included in the ROOT installation... Please configure ROOT with the --enable-minuit2 option!])
|
|
fi
|
|
|
|
AC_SUBST(ROOT_LIBS)
|
|
AC_SUBST(ROOT_CFLAGS)
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Check for NeXus, HDF5, etc.
|
|
dnl -----------------------------------------------
|
|
AC_ARG_ENABLE([NeXus], [AC_HELP_STRING([--enable-NeXus], [build optional NeXus support [default=no]])],
|
|
[
|
|
# checking for hdf4
|
|
AC_ARG_WITH([hdf4],
|
|
[AC_HELP_STRING([--with-hdf4], [prefix of the HDF4 installation (needed for NeXus), e.g. /usr/local/hdf4 or /opt/hdf4])],
|
|
[HDF4_PREFIX=$with_hdf4
|
|
AC_MSG_CHECKING([whether HDF4 can be found at the specified location])
|
|
if !(test -r ${HDF4_PREFIX}/include/hdf.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([HDF4 cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])],
|
|
[AC_MSG_CHECKING([whether HDF4 is installed in a standard location])
|
|
if test -r /usr/local/include/hdf.h; then
|
|
HDF4_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
elif test -r /usr/local/hdf/include/hdf.h; then
|
|
HDF4_PREFIX="/usr/local/hdf"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
elif test -r /usr/include/hdf.h; then
|
|
HDF4_PREFIX="/usr"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
elif test -r /usr/include/hdf/hdf.h; then
|
|
HDF4_PREFIX="/usr/include/"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
elif test -r /sw/hdf/include/hdf.h; then
|
|
HDF4_PREFIX="/sw/hdf"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
elif test -r /opt/hdf/include/hdf.h; then
|
|
HDF4_PREFIX="/opt/hdf"
|
|
AC_MSG_RESULT([${HDF4_PREFIX}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[HDF4 not found (needed for NeXus). Please call configure with the --with-hdf4 option.
|
|
This tells configure where to find the HDF4 C++ headers,
|
|
e.g. --with-hdf4=/usr/local/hdf]
|
|
)
|
|
fi
|
|
]
|
|
)
|
|
|
|
# checking for hdf5
|
|
AC_ARG_WITH([hdf5],
|
|
[AC_HELP_STRING([--with-hdf5], [prefix of the HDF5 installation (needed for NeXus), e.g. /usr/local/hdf5 or /opt/hdf5])],
|
|
[HDF5_PREFIX=$with_hdf5
|
|
AC_MSG_CHECKING([whether HDF5 can be found at the specified location])
|
|
if !(test -r ${HDF5_PREFIX}/include/hdf5.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([HDF5 cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])],
|
|
[AC_MSG_CHECKING([whether HDF5 is installed in a standard location])
|
|
if test -r /usr/local/include/hdf5.h; then
|
|
HDF5_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])
|
|
elif test -r /usr/local/hdf5/include/hdf5.h; then
|
|
HDF5_PREFIX="/usr/local/hdf5"
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])
|
|
elif test -r /usr/include/hdf5.h; then
|
|
HDF5_PREFIX="/usr"
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])
|
|
elif test -r /sw/hdf5/include/hdf5.h; then
|
|
HDF5_PREFIX="/sw/hdf5"
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])
|
|
elif test -r /opt/hdf5/include/hdf5.h; then
|
|
HDF5_PREFIX="/opt/hdf5"
|
|
AC_MSG_RESULT([${HDF5_PREFIX}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[HDF5 not found (needed for NeXus). Please call configure with the --with-hdf5 option.
|
|
This tells configure where to find the HDF5 C++ headers,
|
|
e.g. --with-hdf5=/usr/local/hdf5]
|
|
)
|
|
fi
|
|
]
|
|
)
|
|
|
|
# checking for NeXus
|
|
NEXUS_FOUND=0
|
|
AC_ARG_WITH([nexus],
|
|
[AC_HELP_STRING([--with-nexus], [prefix of the NeXus installation, e.g. /usr/local])],
|
|
[NEXUS_PREFIX=$with_nexus
|
|
AC_MSG_CHECKING([whether NeXus can be found at the specified location])
|
|
if !(test -r ${NEXUS_PREFIX}/include/napi.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([NeXus cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])],
|
|
[PKG_CHECK_MODULES(NEXUS, nexus >= 4.1, [NEXUS_FOUND=1],
|
|
[AC_MSG_CHECKING([whether NeXus is installed in a standard location])
|
|
if test -r /usr/local/include/napi.h; then
|
|
NEXUS_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])
|
|
elif test -r /usr/local/nexus/include/napi.h; then
|
|
NEXUS_PREFIX="/usr/local/nexus"
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])
|
|
elif test -r /usr/include/napi.h; then
|
|
NEXUS_PREFIX="/usr"
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])
|
|
elif test -r /sw/nexus/include/napi.h; then
|
|
NEXUS_PREFIX="/sw/nexus"
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])
|
|
elif test -r /opt/local/nexus/include/napi.h; then
|
|
NEXUS_PREFIX="/opt/local/nexus"
|
|
AC_MSG_RESULT([${NEXUS_PREFIX}])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR(
|
|
[NeXus not found. Please call configure with the --with-nexus option.
|
|
This tells configure where to find the NeXus headers,
|
|
e.g. --with-nexus=/usr/local/nexus]
|
|
)
|
|
fi
|
|
]
|
|
)]
|
|
)
|
|
AC_SUBST(NEXUS_PREFIX)
|
|
if test "${NEXUS_FOUND}" != "1"; then
|
|
NEXUS_LIBS="-L${NEXUS_PREFIX}/lib -lNeXus"
|
|
NEXUS_CFLAGS="-I${NEXUS_PREFIX}/include"
|
|
fi
|
|
AC_SUBST(NEXUS_LIBS)
|
|
AC_SUBST(NEXUS_CFLAGS)
|
|
|
|
PNEXUS_ENABLED=1
|
|
],
|
|
[PNEXUS_ENABLED=0]
|
|
)
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Ask user if BMWlibs should be built and where to find the CUBA installation
|
|
dnl -----------------------------------------------
|
|
|
|
AC_ARG_ENABLE([BMWlibs], [AC_HELP_STRING([--enable-BMWlibs],[build optional BMW plug-ins [default=no]])],
|
|
[CUBA_FOUND=0
|
|
BUILD_CUBA=0
|
|
AC_ARG_WITH([cuba],
|
|
[AC_HELP_STRING([--with-cuba],[prefix of CUBA installation, e.g. /usr/local or /usr])],
|
|
[CUBA_PREFIX=$with_cuba
|
|
AC_MSG_CHECKING([whether CUBA can be found at the specified location])
|
|
if !(test -r ${CUBA_PREFIX}/include/cuba.h); then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([CUBA cannot be found at the specified path!])
|
|
fi
|
|
AC_MSG_RESULT([${CUBA_PREFIX}])],
|
|
[PKG_CHECK_MODULES(CUBA, cuba >= 1.6, [CUBA_FOUND=1],
|
|
[AC_MSG_CHECKING([whether CUBA is installed in a standard location])
|
|
if test -r /usr/local/include/cuba.h; then
|
|
CUBA_PREFIX="/usr/local"
|
|
AC_MSG_RESULT([${CUBA_PREFIX}])
|
|
elif test -r /usr/include/cuba.h; then
|
|
CUBA_PREFIX="/usr"
|
|
AC_MSG_RESULT([${CUBA_PREFIX}])
|
|
elif test -r /sw/include/cuba.h; then
|
|
CUBA_PREFIX="/sw"
|
|
AC_MSG_RESULT([${CUBA_PREFIX}])
|
|
elif test -r /opt/local/include/cuba.h; then
|
|
CUBA_PREFIX="/opt/local"
|
|
AC_MSG_RESULT([${CUBA_PREFIX}])
|
|
else
|
|
BUILD_CUBA=1
|
|
AC_MSG_RESULT([builtin-cuba])
|
|
fi
|
|
]
|
|
)
|
|
]
|
|
)
|
|
|
|
if test "${BUILD_CUBA}" = "1"; then
|
|
AS_IF([test "x$GCC" = "xyes"],
|
|
[case "$($CC --version 2>&1 < /dev/null)" in
|
|
*gcc*4.2* | *gcc*4.4.3*)
|
|
opt=-O0
|
|
;;
|
|
*)
|
|
opt=-O3
|
|
;;
|
|
esac
|
|
CUBA_BUILD_CFLAGS="$opt -fomit-frame-pointer -ffast-math"],
|
|
[CUBA_BUILD_CFLAGS="-O"])
|
|
|
|
AC_LANG_PUSH([C])
|
|
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_LONG_DOUBLE
|
|
|
|
AC_CHECK_FUNCS([powl])
|
|
AC_CHECK_FUNCS([erf])
|
|
|
|
MAXDIM=${MAXDIM:-16}
|
|
AC_ARG_WITH(maxdim,
|
|
[AS_HELP_STRING([--with-maxdim=N],
|
|
[[Cuba option] the maximum dimension for integration,
|
|
if variable-size array are not supported])],
|
|
[MAXDIM=$withval])
|
|
|
|
MAXCOMP=${MAXCOMP:-4}
|
|
AC_ARG_WITH(maxcomp,
|
|
[AS_HELP_STRING([--with-maxcomp=N],
|
|
[[Cuba option] the maximum number of components of the integrand,
|
|
if variable-size array are not supported])],
|
|
[MAXCOMP=$withval])
|
|
|
|
AC_MSG_CHECKING([for variable-size arrays])
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE(,[[
|
|
void test(int n)
|
|
{
|
|
char s[n];
|
|
}
|
|
]])],
|
|
[AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([no, using MAXDIM=$MAXDIM and MAXCOMP=$MAXCOMP])
|
|
AC_DEFINE_UNQUOTED([NDIM], [$MAXDIM], [Maximum number of components])
|
|
AC_DEFINE_UNQUOTED([NCOMP], [$MAXCOMP], [Maximum number of dimensions])]
|
|
)
|
|
|
|
AC_LANG_POP([C])
|
|
|
|
CUBA_SRCDIR="$(pwd)/src/external/libCuba/src"
|
|
CUBA_LIBS="${CUBA_SRCDIR}/libcuba.la"
|
|
CUBA_CFLAGS="-I${CUBA_SRCDIR}"
|
|
else
|
|
if test "${CUBA_FOUND}" != "1"; then
|
|
CUBA_LIBS="-L${CUBA_PREFIX}/lib -lcuba -lm"
|
|
CUBA_CFLAGS="-I${CUBA_PREFIX}/include"
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(CUBA_PREFIX)
|
|
AC_SUBST(CUBA_LIBS)
|
|
AC_SUBST(CUBA_CFLAGS)
|
|
|
|
BUILD_BMW_LIBS=1
|
|
],
|
|
[BUILD_BMW_LIBS=0]
|
|
)
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Ask user if ASlibs should be built
|
|
dnl -----------------------------------------------
|
|
|
|
AC_ARG_ENABLE([ASlibs], [AC_HELP_STRING([--enable-ASlibs],[build optional AS plug-ins [default=no]])],[BUILD_AS_LIBS=1], [BUILD_AS_LIBS=0])
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Set some paths and flags for PMusr, TLemRunHeader, Class_MuSR_PSI, mud, NeXus (if enabled), etc.
|
|
dnl -----------------------------------------------
|
|
|
|
SRCDIR="$(pwd)/src"
|
|
|
|
PSIBIN_SRCDIR="${SRCDIR}/external/MuSR_software/Class_MuSR_PSI"
|
|
PSIBIN_LIBS="${PSIBIN_SRCDIR}/lib${PSIBIN_LIBRARY_NAME}.la"
|
|
PSIBIN_CFLAGS="-I${PSIBIN_SRCDIR}"
|
|
AC_SUBST(PSIBIN_LIBS)
|
|
AC_SUBST(PSIBIN_CFLAGS)
|
|
|
|
MUD_SRCDIR="${SRCDIR}/external/mud/src"
|
|
MUD_LIBS="${MUD_SRCDIR}/lib${MUD_LIBRARY_NAME}.la"
|
|
MUD_CFLAGS="-I${MUD_SRCDIR}"
|
|
AC_SUBST(MUD_LIBS)
|
|
AC_SUBST(MUD_CFLAGS)
|
|
|
|
LEM_SRCDIR="${SRCDIR}/external/TLemRunHeader"
|
|
LEM_LIBS="${LEM_SRCDIR}/lib${LEM_LIBRARY_NAME}.la"
|
|
LEM_CFLAGS="-I${LEM_SRCDIR}"
|
|
AC_SUBST(LEM_LIBS)
|
|
AC_SUBST(LEM_CFLAGS)
|
|
|
|
PMUSR_LIBS="${SRCDIR}/classes/lib${MUSR_LIBRARY_NAME}.la"
|
|
PMUSR_CFLAGS="-I${SRCDIR}/include"
|
|
AC_SUBST(PMUSR_LIBS)
|
|
AC_SUBST(PMUSR_CFLAGS)
|
|
|
|
if test "${PNEXUS_ENABLED}" = "1"; then
|
|
AC_DEFINE([PNEXUS_ENABLED], [1], [Define to 1 if NeXus is enabled])
|
|
PNEXUS_SRCDIR="${SRCDIR}/external/nexus"
|
|
PNEXUS_LIBS="${PNEXUS_SRCDIR}/lib${PNEXUS_LIBRARY_NAME}.la"
|
|
PNEXUS_CXXFLAGS="-I${PNEXUS_SRCDIR}"
|
|
AC_SUBST(PNEXUS_LIBS)
|
|
AC_SUBST(PNEXUS_CXXFLAGS)
|
|
fi
|
|
|
|
if test "${BUILD_BMW_LIBS}" = "1"; then
|
|
BMWTOOLS_SRCDIR="${SRCDIR}/external/BMWtools"
|
|
BMWTOOLS_LIBS="${BMWTOOLS_SRCDIR}/libBMWtools.la"
|
|
BMWTOOLS_CFLAGS="-I${BMWTOOLS_SRCDIR}"
|
|
AC_SUBST(BMWTOOLS_LIBS)
|
|
AC_SUBST(BMWTOOLS_CFLAGS)
|
|
|
|
FITPOFB_SRCDIR="${SRCDIR}/external/libFitPofB"
|
|
FITPOFB_LIBS="${FITPOFB_SRCDIR}/classes/libFitPofB.la"
|
|
FITPOFB_CFLAGS="-I${FITPOFB_SRCDIR}/include"
|
|
AC_SUBST(FITPOFB_LIBS)
|
|
AC_SUBST(FITPOFB_CFLAGS)
|
|
|
|
# Check for fftw3_threads-library. If available musrfit is also linked against it (used in libTFitPofB).
|
|
SAVED_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $FFTW3_CFLAGS"
|
|
SAVED_LIBSS="$LIBS"
|
|
LIBS="$LIBS $FFTW3_LIBS"
|
|
AC_SEARCH_LIBS([fftw_init_threads], [fftw3_threads], [FFTW3_LIBS="$FFTW3_LIBS -lfftw3_threads -lpthread"
|
|
AC_DEFINE([HAVE_LIBFFTW3_THREADS], [1], [Define to 1 if fftw3_threads are available])], [], [-lpthread])
|
|
# Check for fftw3f library. If it is not available the BMWlibs will not be built!
|
|
AC_SEARCH_LIBS([fftwf_malloc], [fftw3f], [FFTW3_LIBS="$FFTW3_LIBS -lfftw3f"], [BUILD_BMW_LIBS=0
|
|
AC_MSG_ERROR([The float version of FFTW3 is not available. When building FFTW3 from source it should be configured with the options
|
|
--enable-shared --enable-float. Without this library the BMWlibs cannot be built!])], [])
|
|
if test "${BUILD_BMW_LIBS}" = "1"; then
|
|
AC_SEARCH_LIBS([fftwf_init_threads], [fftw3f_threads], [FFTW3_LIBS="$FFTW3_LIBS -lfftw3f_threads -lpthread"
|
|
AC_DEFINE([HAVE_LIBFFTW3F_THREADS], [1], [Define to 1 if fftw3f_threads are available])], [], [-lpthread])
|
|
fi
|
|
|
|
CFLAGS="$SAVED_CFLAGS"
|
|
LIBS="$SAVED_LIBS"
|
|
|
|
# Check for gomp-library. If available musrfit is also linked against it (used in libTFitPofB).
|
|
SAVED_CXXFLAGS="$CXXFLAGS"
|
|
CXXFLAGS="$CXXFLAGS -fopenmp"
|
|
SAVED_LIBSS="$LIBS"
|
|
LIBS="$LIBS -fopenmp -lgomp"
|
|
AC_SEARCH_LIBS([omp_get_num_procs], [gomp], [AC_DEFINE([HAVE_GOMP], [1], [Define to 1 if gomp is available])],
|
|
[CXXFLAGS="$SAVED_CXXFLAGS" LIBS="$SAVED_LIBS"], [])
|
|
fi
|
|
AC_SUBST(FFTW3_LIBS)
|
|
AC_SUBST(FFTW3_CFLAGS)
|
|
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Set host specific compiler and linker flags
|
|
dnl -----------------------------------------------
|
|
|
|
case "${host_cpu}" in
|
|
x86_64)
|
|
CPUFLAGS="-m64 -fPIC -DPIC"
|
|
;;
|
|
*)
|
|
CPUFLAGS=
|
|
;;
|
|
esac
|
|
|
|
LOCAL_BIN_CXXFLAGS="${CPUFLAGS} -Wall -Wno-trigraphs"
|
|
LOCAL_LIB_CXXFLAGS="${LOCAL_BIN_CXXFLAGS}"
|
|
LOCAL_PSIBIN_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS}"
|
|
LOCAL_MUD_LIB_CFLAGS="${LOCAL_LIB_CXXFLAGS} ${USER_CFLAGS}"
|
|
LOCAL_PNEXUS_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS}"
|
|
LOCAL_CUBA_LIB_CFLAGS="${LOCAL_LIB_CXXFLAGS} ${CUBA_BUILD_CFLAGS}"
|
|
LOCAL_BIN_LDFLAGS=
|
|
LOCAL_LIB_LDFLAGS=
|
|
|
|
case "$host" in
|
|
*-*-cygwin)
|
|
ARCH=CYGWIN
|
|
LOCAL_BIN_CXXFLAGS="${LOCAL_BIN_CXXFLAGS}"
|
|
LOCAL_LIB_CXXFLAGS="${LOCAL_BIN_CXXFLAGS} -D_DLL"
|
|
LOCAL_PSIBIN_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS} -D_WIN32GCC"
|
|
LOCAL_MUD_LIB_CFLAGS="${LOCAL_LIB_CXXFLAGS} ${USER_CFLAGS}"
|
|
LOCAL_PNEXUS_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS}"
|
|
LOCAL_CUBA_LIB_CFLAGS="${LOCAL_LIB_CXXFLAGS} ${CUBA_BUILD_CFLAGS}"
|
|
LOCAL_BIN_LDFLAGS="${LOCAL_BIN_LDFLAGS} -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc"
|
|
LOCAL_LIB_LDFLAGS="-no-undefined ${LOCAL_BIN_LDFLAGS} -Wl,--export-all-symbols"
|
|
;;
|
|
*-*-darwin*)
|
|
ARCH=DARWIN
|
|
LOCAL_PSIBIN_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS} -D__linux__"
|
|
;;
|
|
*)
|
|
ARCH=OTHERUNIX
|
|
LOCAL_PSIBIN_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS} -D__linux__"
|
|
;;
|
|
esac
|
|
|
|
|
|
AC_SUBST(LOCAL_BIN_CXXFLAGS)
|
|
AC_SUBST(LOCAL_LIB_CXXFLAGS)
|
|
AC_SUBST(LOCAL_PSIBIN_LIB_CXXFLAGS)
|
|
AC_SUBST(LOCAL_MUD_LIB_CFLAGS)
|
|
AC_SUBST(LOCAL_PNEXUS_LIB_CXXFLAGS)
|
|
AC_SUBST(LOCAL_CUBA_LIB_CFLAGS)
|
|
AC_SUBST(LOCAL_BIN_LDFLAGS)
|
|
AC_SUBST(LOCAL_LIB_LDFLAGS)
|
|
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Some standard checks for header files and libraries
|
|
dnl Since these checks are not further used at the moment, they are commented
|
|
dnl -----------------------------------------------
|
|
|
|
# Checks for header files.
|
|
#AC_HEADER_STDC
|
|
#AC_CHECK_HEADERS([stddef.h stdlib.h string.h sys/time.h unistd.h])
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
#AC_HEADER_STDBOOL
|
|
#AC_C_CONST
|
|
#AC_C_INLINE
|
|
#AC_TYPE_SIZE_T
|
|
#AC_HEADER_TIME
|
|
|
|
# Checks for library functions.
|
|
#AC_FUNC_MALLOC
|
|
#AC_FUNC_STAT
|
|
#AC_CHECK_FUNCS([floor gettimeofday memset pow sqrt strstr])
|
|
|
|
|
|
dnl -----------------------------------------------
|
|
dnl Specify the files that are going to be created by configure
|
|
dnl -----------------------------------------------
|
|
|
|
AM_CONDITIONAL([IS_DARWIN], [test "${ARCH}" = "DARWIN"])
|
|
AM_CONDITIONAL([IS_CYGWIN], [test "${ARCH}" = "CYGWIN"])
|
|
|
|
AM_CONDITIONAL([PNEXUS_ENABLED], [test "${PNEXUS_ENABLED}" = "1"])
|
|
AM_CONDITIONAL([BUILD_CUBALIB], [test "${BUILD_CUBA}" = "1"])
|
|
AM_CONDITIONAL([BUILD_BMWLIBS], [test "${BUILD_BMW_LIBS}" = "1"])
|
|
AM_CONDITIONAL([BUILD_ASLIBS], [test "${BUILD_AS_LIBS}" = "1"])
|
|
|
|
AC_CONFIG_FILES([Makefile \
|
|
src/Makefile \
|
|
src/classes/Makefile \
|
|
src/classes/PMusr.pc \
|
|
src/external/Makefile \
|
|
src/external/TLemRunHeader/Makefile \
|
|
src/external/TLemRunHeader/TLemRunHeader.pc \
|
|
src/external/MuSR_software/Makefile \
|
|
src/external/MuSR_software/Class_MuSR_PSI/Makefile \
|
|
src/external/MuSR_software/Class_MuSR_PSI/Class_MuSR_PSI.pc \
|
|
src/external/mud/Makefile \
|
|
src/external/mud/src/Makefile \
|
|
src/external/mud/src/mud.pc \
|
|
src/external/nexus/Makefile \
|
|
src/external/nexus/PNeXus.pc \
|
|
src/external/libCuba/Makefile \
|
|
src/external/libCuba/src/Makefile \
|
|
src/external/libCuba/src/cuba.pc \
|
|
src/external/BMWtools/Makefile \
|
|
src/external/libFitPofB/Makefile \
|
|
src/external/libFitPofB/classes/Makefile \
|
|
src/external/libLFRelaxation/Makefile \
|
|
src/external/libGapIntegrals/Makefile \
|
|
src/external/libCalcMeanFieldsLEM/Makefile \
|
|
src/external/Nonlocal/Makefile \
|
|
src/external/MagProximity/Makefile])
|
|
|
|
AC_OUTPUT
|