musrfit/configure.ac

1476 lines
52 KiB
Plaintext

AC_REVISION([m4_esyscmd_s([git describe --always])])
AC_PREREQ(2.63)
AC_INIT([musrfit],[1.4.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
USERFCN_LIBRARY_NAME=PUserFcnBase
MUSR_ROOT_LIBRARY_NAME=TMusrRunHeader
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=1
MUSR_MINOR_VERSION=4
MUSR_MICRO_VERSION=0
#release versioning
MUSR_ROOT_MAJOR_VERSION=1
MUSR_ROOT_MINOR_VERSION=0
MUSR_ROOT_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=1
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=4
CUBA_MINOR_VERSION=2
CUBA_MICRO_VERSION=0
#API version
MUSR_API_VERSION=$MUSR_MAJOR_VERSION.$MUSR_MINOR_VERSION
AC_SUBST(MUSR_API_VERSION)
MUSR_ROOT_API_VERSION=$MUSR_ROOT_MAJOR_VERSION.$MUSR_ROOT_MINOR_VERSION
AC_SUBST(MUSR_ROOT_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
MUSR_ROOT_LIBRARY_VERSION=$MUSR_ROOT_MAJOR_VERSION:$MUSR_ROOT_MINOR_VERSION:$MUSR_ROOT_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(MUSR_ROOT_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(USERFCN_LIBRARY_NAME)
AC_SUBST(MUSR_ROOT_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_ROOT_VERSION=$MUSR_ROOT_MAJOR_VERSION.$MUSR_ROOT_MINOR_VERSION.$MUSR_ROOT_MICRO_VERSION
MUSR_ROOT_RELEASE=$MUSR_ROOT_MAJOR_VERSION.$MUSR_ROOT_MINOR_VERSION
AC_SUBST(MUSR_ROOT_RELEASE)
AC_SUBST(MUSR_ROOT_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
# m4_ifdef([AM_SILENT_RULES],
# [AM_SILENT_RULES([yes])])
AC_CONFIG_HEADER([config.h])
AC_LANG([C++])
AC_PROG_LN_S
AC_PROG_INSTALL
m4_ifdef([AC_PROG_MKDIR_P],
[AC_PROG_MKDIR_P],
[MKDIR_P="mkdir -p"
AC_SUBST(MKDIR_P)])
m4_ifdef([LT_INIT],
[LT_INIT([disable-static])
LT_LANG([C++])
LT_LANG([C])],
[m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
AC_DISABLE_STATIC([])
LT_INIT
AC_PROG_CXX
AC_PROG_CC])
dnl -----------------------------------------------
dnl Ask user for path to fftw3
dnl -----------------------------------------------
FFTW3_FOUND=0
AC_ARG_WITH([fftw3],
[AS_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],
[AS_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],
[AS_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 Ask user for path to libxml2
dnl -----------------------------------------------
LIBXML2_FOUND=0
AC_ARG_WITH([libxml2],
[AS_HELP_STRING([--with-libxml2],[prefix of the libxml2 installation, e.g. /usr/local/include])],
[LIBXML2_PREFIX=$with_libxml2
AC_MSG_CHECKING([whether libxml2 can be found at the specified location])
if !(test -r ${LIBXML2_PREFIX}/libxml2/libxml/xmlreader.h) && !(test -r ${LIBXML2_PREFIX}/libxml2/libxml/parser.h) && !(test -r ${LIBXML2_PREFIX}/libxml2/libxml/xmlschemas.h); then
AC_MSG_RESULT([no])
AC_MSG_ERROR([libxml2 cannot be found at the specified path!])
fi
AC_MSG_RESULT([${LIBXML2_PREFIX}])],
[PKG_CHECK_MODULES(LIBXML2, libxml2 >= 2.6.26, [LIBXML2_FOUND=1],
[AC_MSG_CHECKING([whether libxml2 is installed in a standard location])
if test -r /usr/local/include/libxml2/libxml/xmlreader.h || test -r /usr/local/include/libxml2/libxml/parser.h || \
test -r /usr/local/include/libxml2/libxml/xmlschemas.h; then
LIBXML2_PREFIX="/usr/local/include"
AC_MSG_RESULT([${LIBXML2_PREFIX}])
elif test -r /usr/include/libxml2/libxml/xmlreader.h || test -r /usr/include/libxml2/libxml/parser.h || \
test -r /usr/include/libxml2/libxml/xmlschemas.h; then
LIBXML2_PREFIX="/usr/include"
AC_MSG_RESULT([${LIBXML2_PREFIX}])
elif test -r /sw/include/libxml2/libxml/xmlreader.h || test -r /sw/include/libxml2/libxml/parser.h || \
test -r /sw/include/libxml2/libxml/xmlschemas.h; then
LIBXML2_PREFIX="/sw/include"
AC_MSG_RESULT([${LIBXML2_PREFIX}])
elif test -r /opt/local/include/libxml2/libxml/xmlreader.h || test -r /opt/local/include/libxml2/libxml/parser.h || \
test -r /opt/local/include/libxml2/libxml/xmlschemas.h; then
LIBXML2_PREFIX="/opt/local/include"
AC_MSG_RESULT([${LIBXML2_PREFIX}])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR(
[libxml2 not found. Please call configure with the --with-libxml2 option.
This tells configure where to find the libxml2 headers,
e.g. --with-libxml2=/usr/local/include or --with-libxml2=/usr/include/libxml2]
)
fi
]
)
]
)
AC_SUBST(LIBXML2_PREFIX)
if test "${LIBXML2_FOUND}" != "1"; then
LIBXML2_LIBS="-L${LIBXML2_PREFIX}/lib -lxml2"
LIBXML2_CFLAGS="-I${LIBXML2_PREFIX}/libxml2"
fi
AC_SUBST(LIBXML2_LIBS)
AC_SUBST(LIBXML2_CFLAGS)
dnl -----------------------------------------------
dnl Check for ROOT
dnl -----------------------------------------------
ROOT_PATH([6.06/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 test "x$(${ROOTCONF} --has-minuit2)" = "xyes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Minuit2 is not included in the ROOT installation... Please configure ROOT with the --enable-minuit2 option!])
fi
AC_MSG_CHECKING([for MathMore in ROOT])
if test "x$(${ROOTCONF} --has-mathmore)" = "xyes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([MathMore is not included in the ROOT installation... Please configure ROOT with the --enable-mathmore option and check that the feature is actually built!])
fi
AC_MSG_CHECKING([for XML support in ROOT])
if test "x$(${ROOTCONF} --has-xml)" = "xyes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([XML support is not included in the ROOT installation... Please configure ROOT with the --enable-xml option and check that the feature is actually built!])
fi
AC_MSG_CHECKING([for image processing support in ROOT])
if test "x$(${ROOTCONF} --has-asimage)" = "xyes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([image processing support is not included in the ROOT installation... Please configure ROOT with the --enable-asimage option and check that the feature is actually built!])
fi
AC_SUBST(ROOT_LIBS)
AC_SUBST(ROOT_CFLAGS)
dnl -----------------------------------------------
dnl Check for NeXus, HDF5, etc.
dnl -----------------------------------------------
AC_ARG_ENABLE([NeXus], [AS_HELP_STRING([--enable-NeXus],[build optional NeXus support [default=no]])],
[
# checking for hdf4
AC_ARG_WITH([hdf4],
[AS_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/include/hdf.h; then
HDF4_PREFIX="/sw"
AC_MSG_RESULT([${HDF4_PREFIX}])
elif test -r /opt/local/include/hdf.h; then
HDF4_PREFIX="/opt/local"
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],
[AS_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/serial/hdf5.h; then
HDF5_PREFIX="/usr/include/hdf5/serial"
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/include/hdf5.h; then
HDF5_PREFIX="/sw"
AC_MSG_RESULT([${HDF5_PREFIX}])
elif test -r /opt/local/include/hdf5.h; then
HDF5_PREFIX="/opt/local"
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],
[AS_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/nexus/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.4, [NEXUS_FOUND=1],
[AC_MSG_CHECKING([whether NeXus is installed in a standard location])
if test -r /usr/local/include/nexus/napi.h; then
NEXUS_PREFIX="/usr/local"
AC_MSG_RESULT([${NEXUS_PREFIX}])
elif test -r /sw/include/nexus/napi.h; then
NEXUS_PREFIX="/sw"
AC_MSG_RESULT([${NEXUS_PREFIX}])
elif test -r /opt/local/include/nexus/napi.h; then
NEXUS_PREFIX="/opt/local"
AC_MSG_RESULT([${NEXUS_PREFIX}])
elif test -r /opt/nexus/include/nexus/napi.h; then
NEXUS_PREFIX="/opt/nexus"
AC_MSG_RESULT([${NEXUS_PREFIX}])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR(
[NeXus Version >= 4.4 not found. Please call configure with the --with-nexus option.
This tells configure where to find the NeXus headers,
e.g. --with-nexus=/opt/nexus]
)
fi
]
)]
)
AC_SUBST(NEXUS_PREFIX)
if test "${NEXUS_FOUND}" != "1"; then
dnl get suffix for the NeXus library depending on the OS
AC_REQUIRE([AC_CANONICAL_HOST])
AS_CASE([$host_os],
[linux*], [NEXUS_SUFFIX="so"],
[darwin*], [NEXUS_SUFFIX="dylib"],
[*cygwin*], [NEXUS_SUFFIX="dll"],
[AC_MSG_ERROR([NeXus check: Your platform is not currently supported])]
)
AC_MSG_NOTICE([NeXus Suffix Result: "${NEXUS_SUFFIX}"])
if test -r ${NEXUS_PREFIX}/lib/libNeXus.${NEXUS_SUFFIX}; then
NEXUS_LIB_DIR="lib"
elif test -r ${NEXUS_PREFIX}/lib64/libNeXus.${NEXUS_SUFFIX}; then
NEXUS_LIB_DIR="lib64"
else
AC_MSG_ERROR(
[Couldn't find the NeXus library.]
)
fi
NEXUS_LIBS="-L${NEXUS_PREFIX}/${NEXUS_LIB_DIR} -lNeXus"
NEXUS_CFLAGS="-I${NEXUS_PREFIX}/include/nexus"
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], [AS_HELP_STRING([--enable-BMWlibs],[build optional BMW plug-ins [default=no]])],
[CUBA_FOUND=0
BUILD_CUBA=0
AC_ARG_WITH([cuba],
[AS_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_DIAGNOSE([obsolete],[The macro `AC_C_LONG_DOUBLE' is obsolete.
You should use `AC_TYPE_LONG_DOUBLE' or `AC_TYPE_LONG_DOUBLE_WIDER' instead.
])dnl
AC_TYPE_LONG_DOUBLE_WIDER
ac_cv_c_long_double=$ac_cv_type_long_double_wider
if test $ac_cv_c_long_double = yes; then
AC_DEFINE([HAVE_LONG_DOUBLE],[1],[Define to 1 if the type `long double' works and has more range or
precision than `double'.])
fi
AC_CHECK_FUNCS([powl])
AC_CHECK_FUNCS([erf])
# AC_FUNC_FORK
AC_FUNC_ALLOCA
AC_DEFUN([chk_shmget], [dnl
AC_REQUIRE([AC_CANONICAL_HOST])
AS_CASE([$host_os],
[*cygwin*], [],
[AC_CHECK_FUNCS([shmget])])
])
chk_shmget
AC_CHECK_FUNCS([getloadavg])
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], [AS_HELP_STRING([--enable-ASlibs],[build optional AS plug-ins [default=no]])],[BUILD_AS_LIBS=1], [BUILD_AS_LIBS=0])
dnl -----------------------------------------------
dnl Ask user if BNMRlibs should be built
dnl -----------------------------------------------
AC_ARG_ENABLE([BNMRlibs], [AS_HELP_STRING([--enable-BNMRlibs],[build optional BNMR plug-ins [default=no]])],[BUILD_BNMR_LIBS=1], [BUILD_BNMR_LIBS=0])
dnl -----------------------------------------------
dnl Set some paths and flags for PMusr, MusrRoot, 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)
MUSR_ROOT_SRCDIR="${SRCDIR}/external/MusrRoot"
MUSR_ROOT_LIBS="${MUSR_ROOT_SRCDIR}/lib${MUSR_ROOT_LIBRARY_NAME}.la"
MUSR_ROOT_CFLAGS="-I${MUSR_ROOT_SRCDIR}"
AC_SUBST(MUSR_ROOT_LIBS)
AC_SUBST(MUSR_ROOT_CFLAGS)
PMUSR_LIBS="${SRCDIR}/classes/lib${MUSR_LIBRARY_NAME}.la"
PMUSR_CFLAGS="-I${SRCDIR}/include"
AC_SUBST(PMUSR_LIBS)
AC_SUBST(PMUSR_CFLAGS)
USERFCN_LIBS="${SRCDIR}/classes/lib${USERFCN_LIBRARY_NAME}.la"
AC_SUBST(USERFCN_LIBS)
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_BNMR_LIBS}" = "1"; then
BNMRLIBS_SRCDIR="${SRCDIR}/external/libBNMR"
BNMRLIBS_LIBS="${BNMRLIBS_SRCDIR}/libBNMR.la"
BNMRLIBS_CFLAGS="-I${BNMRLIBS_SRCDIR}"
AC_SUBST(BNMRLIBS_LIBS)
AC_SUBST(BNMRLIBS_CFLAGS)
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 libFitPofB).
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"
fi
AC_SUBST(FFTW3_LIBS)
AC_SUBST(FFTW3_CFLAGS)
dnl -----------------------------------------------
dnl Ask user if OpenMP support should be disabled (used for parallel chisq calculation and in libFitPofB)
dnl -----------------------------------------------
AC_ARG_ENABLE([omp], [AS_HELP_STRING([--enable-omp],[build musrfit with OpenMP support [default=yes]])])
if test "x$enable_omp" != "xno"; then
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
dnl -----------------------------------------------
dnl Ask user if the building of musredit/musrgui should be disabled
dnl -----------------------------------------------
AC_ARG_ENABLE([editor], [AS_HELP_STRING([--enable-editor],[check for Qt and build musredit or musrgui [default=yes]])])
if test "x$enable_editor" != "xno"; then
echo "Additional checks for musredit/musrgui ..."
QT5MINVER=5.4
case "$host" in
*-*-cygwin)
QT4MINVER=4.5
;;
*)
QT4MINVER=4.6
;;
esac
QT3_FOUND=no
QT3MT_FOUND=no
QT4_FOUND=no
QT5_FOUND=no
QMAKEBIN=""
QTEDITOR=none
AC_ARG_WITH([qt3],
[AS_HELP_STRING([--with-qt3],[prefix of the Qt3 installation, e.g. /usr/lib/qt-3.3])],
[QT3_PREFIX=$with_qt3
AC_MSG_CHECKING([whether qmake for Qt3 can be found at the specified location])
for QMAKE in qmake qmake-qt3
do
if test -x "${QT3_PREFIX}/bin/${QMAKE}"; then
QMAKEVERSIONSTRING="$(${QT3_PREFIX}/bin/${QMAKE} -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "3."; then
QMAKEBIN="${QT3_PREFIX}/bin/${QMAKE}"
QTEDITOR=musrgui
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" != "x"; then
break
fi
fi
done
if test "x${QMAKEBIN}" = "x"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([qmake for Qt3 cannot be found in ${QT3_PREFIX}/bin!])
fi]
)
AC_ARG_WITH([qt4],
[AS_HELP_STRING([--with-qt4],[prefix of the Qt4 installation, e.g. /opt/qt-4.7])],
[QT4_PREFIX=$with_qt4
AC_MSG_CHECKING([whether qmake for Qt4 can be found at the specified location])
for QMAKE in qmake qmake-qt4
do
if test -x "${QT4_PREFIX}/bin/${QMAKE}"; then
QMAKEVERSIONSTRING="$(${QT4_PREFIX}/bin/${QMAKE} -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "4."; then
QMAKEBIN="${QT4_PREFIX}/bin/${QMAKE}"
QTEDITOR=musredit
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" != "x"; then
break
fi
fi
done
if test "x${QMAKEBIN}" = "x"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([qmake for Qt4 cannot be found in ${QT4_PREFIX}/bin!])
fi
if test "x${QT3PRESENT}" = "xyes"; then
AC_MSG_WARN([Qt3 and Qt4 directories have been given -- only the Qt4 information will be used and only musredit will be built!])
fi],
[if test "x${QMAKEBIN}" = "x"; then
PKG_CHECK_MODULES(QT4, QtWebKit >= $QT4MINVER QtXml >= $QT4MINVER, [QT4_FOUND=yes],
[AC_MSG_NOTICE([Qt4 (including QtWebKit and QtXml) not found!])
PKG_CHECK_MODULES(QT3, qt >= 3.3.0 qt < 4.0, [QT3_FOUND=yes],
[PKG_CHECK_MODULES(QT3MT, qt-mt >= 3.3.0 qt-mt < 4.0, [QT3MT_FOUND=yes], [QT3MT_FOUND=no])]
)]
)
fi]
)
AC_ARG_WITH([qt5],
[AS_HELP_STRING([--with-qt5],[prefix of the Qt5 installation, e.g. /usr/lib64/qt5/])],
[QT5_PREFIX=$with_qt5
AC_MSG_CHECKING([whether qmake for Qt5 can be found at the specified location])
for QMAKE in qmake qmake-qt5
do
if test -x "${QT5_PREFIX}/bin/${QMAKE}"; then
QMAKEVERSIONSTRING="$(${QT5_PREFIX}/bin/${QMAKE} -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "5."; then
QMAKEBIN="${QT5_PREFIX}/bin/${QMAKE}"
QTEDITOR=musredit_qt5
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" != "x"; then
break
fi
fi
done
if test "x${QMAKEBIN}" = "x"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([qmake for Qt5 cannot be found in ${QT5_PREFIX}/bin!])
fi
if test "x${QT4PRESENT}" = "xyes"; then
AC_MSG_WARN([Qt4 and Qt5 directories have been given -- only the Qt5 information will be used and only musredit will be built!])
fi],
[if test "x${QMAKEBIN}" = "x"; then
PKG_CHECK_MODULES(QT5, Qt5WebKit >= $QT5MINVER Qt5Xml >= $QT5MINVER, [QT5_FOUND=yes],
[AC_MSG_NOTICE([Qt5 (including Qt5WebKit and Qt5Xml) not found!])
PKG_CHECK_MODULES(QT3, qt >= 3.3.0 qt < 4.0, [QT3_FOUND=yes],
[PKG_CHECK_MODULES(QT3MT, qt-mt >= 3.3.0 qt-mt < 4.0, [QT3MT_FOUND=yes], [QT3MT_FOUND=no])]
)]
)
fi
if test "x${QT5_FOUND}" != "xyes"; then
PKG_CHECK_MODULES(QT5, Qt5WebEngine >= $QT5MINVER Qt5Xml >= $QT5MINVER, [QT5_FOUND=yes],
[AC_MSG_NOTICE([Qt5 (including Qt5WebEngine and Qt5Xml) not found!])
PKG_CHECK_MODULES(QT3, qt >= 3.3.0 qt < 4.0, [QT3_FOUND=yes],
[PKG_CHECK_MODULES(QT3MT, qt-mt >= 3.3.0 qt-mt < 4.0, [QT3MT_FOUND=yes], [QT3MT_FOUND=no])]
)]
)
fi]
)
if test "x${QMAKEBIN}" = "x"; then
if test "x${QT3_FOUND}" = "xno" && test "x${QT3MT_FOUND}" = "xno" && test "x${QT4_FOUND}" = "xno" && test "x${Qt5_FOUND}" = "xno"; then
AC_MSG_WARN([No suitable version of either Qt5, Qt4 or Qt3 has been found! musredit/musrgui will not be built in this stage!])
else
# Check for qmake on the basis of the pkg-config information
QTPATH=none
if test "x$QT5_FOUND" = "xyes"; then
QTPATH=$(pkg-config --variable=prefix Qt5WebKit)
QTEDITOR=musredit_qt5
elif test "x$QT4_FOUND" = "xyes"; then
QTPATH=$(pkg-config --variable=prefix QtWebKit)
QTEDITOR=musredit
elif test "x$QT3_FOUND" = "xyes"; then
QTPATH=$(pkg-config --variable=prefix qt)
QTEDITOR=musrgui
elif test "x$QT3MT_FOUND" = "xyes"; then
QTPATH=$(pkg-config --variable=prefix qt-mt)
QTEDITOR=musrgui
fi
dnl if Qt5 but Qt5WebEngine instead of Qt5WebKit
if test "x$QTPATH" = "x"; then
QTPATH=$(pkg-config --variable=prefix Qt5WebEngine)
QTEDITOR=musredit_qt5
fi
AC_MSG_CHECKING([for qmake])
if test "x${QTPATH}" != "xnone"; then
if test "x$QTEDITOR" = "xmusredit_qt5"; then
for QMAKE in qmake-qt5 qmake-qt54 qmake-qt55
do
if test -x "${QTPATH}/bin/${QMAKE}"; then
QMAKEBIN="${QTPATH}/bin/${QMAKE}"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" = "x"; then
if test -x "${QTPATH}/bin/qmake"; then
QMAKEVERSIONSTRING="$(${QTPATH}/bin/qmake -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "5."; then
QMAKEBIN="${QTPATH}/bin/qmake"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
fi
fi
elif test "x$QTEDITOR" = "xmusredit"; then
for QMAKE in qmake-qt4 qmake-qt46 qmake-qt47 qmake-qt48
do
if test -x "${QTPATH}/bin/${QMAKE}"; then
QMAKEBIN="${QTPATH}/bin/${QMAKE}"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" = "x"; then
if test -x "${QTPATH}/bin/qmake"; then
QMAKEVERSIONSTRING="$(${QTPATH}/bin/qmake -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "4."; then
QMAKEBIN="${QTPATH}/bin/qmake"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
fi
fi
elif test "x$QTEDITOR" = "xmusrgui"; then
for QMAKE in qmake-qt3 qmake-qt33
do
if test -x "${QTPATH}/bin/${QMAKE}"; then
QMAKEBIN="${QTPATH}/bin/${QMAKE}"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
if test "x${QMAKEBIN}" = "x"; then
if test -x "${QTPATH}/bin/qmake"; then
QMAKEVERSIONSTRING="$(${QTPATH}/bin/qmake -v 2>&1)"
for a in $QMAKEVERSIONSTRING
do
if test "$(expr "$a" : '\(..\)')" = "3."; then
QMAKEBIN="${QTPATH}/bin/qmake"
AC_MSG_RESULT([${QMAKEBIN}])
break
fi
done
fi
fi
fi
if test "x${QMAKEBIN}" = "x"; then
AC_MSG_RESULT([no])
AC_MSG_WARN([If Qt5, Qt4 or Qt3 are present but have not been detected, try using the --with-qt5, --with-qt4 or --with-qt3 options!])
fi
fi
fi
fi
fi
AM_CONDITIONAL([BUILD_MUSREDIT_QT5], [test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit_qt5"])
AM_CONDITIONAL([BUILD_MUSREDIT], [test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit"])
AM_CONDITIONAL([BUILD_MUSRGUI], [test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusrgui"])
dnl -----------------------------------------------
dnl Set host specific compiler and linker flags
dnl -----------------------------------------------
case "${host_cpu}" in
x86_64)
CPUFLAGS="-m64 -fPIC -DPIC"
;;
*)
CPUFLAGS=
;;
esac
CXXFLAGS="-std=c++11 ${CXXFLAGS}"
AC_SUBST(CXXFLAGS)
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
AC_DEFINE([_WIN32GCC], [1], [Define to 1 if host system is 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_Darwin_"
LOCAL_BIN_LDFLAGS="${LOCAL_BIN_LDFLAGS} -Wl,-rpath ${ROOTLIBDIR}"
;;
*)
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 Determine the installation directory for the documentation
dnl -----------------------------------------------
if test "x${prefix}" = "xNONE"
then
INSTALLDIR="/usr/local"
else
INSTALLDIR="${prefix}"
fi
dnl only define DOCDIR if not already present. This allows
dnl to feed DOCDIR on the configure level which is useful when
dnl for instance building a rpm. DOCDIR2 is needed for rpmbuild only
if test "x${DOCDIR}" = "x"
then
if test -d "${INSTALLDIR}/doc"
then
DOCDIR="${INSTALLDIR}/doc/musrfit"
else
DOCDIR="${INSTALLDIR}/share/doc/musrfit"
fi
else
if test -d "${INSTALLDIR}/doc"
then
DOCDIR2="${INSTALLDIR}/doc/musrfit"
else
DOCDIR2="${INSTALLDIR}/share/doc/musrfit"
fi
fi
AC_SUBST(DOCDIR)
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"])
AM_CONDITIONAL([BUILD_BNMRLIBS], [test "${BUILD_BNMR_LIBS}" = "1"])
AC_CONFIG_FILES([Makefile \
src/Makefile \
src/classes/Makefile \
src/classes/PMusr.pc \
src/classes/PUserFcnBase.pc \
src/external/Makefile \
src/external/MusrRoot/Makefile \
src/external/MusrRoot/TMusrRunHeader.pc \
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/libCuba/src/cuhre/Makefile \
src/external/libCuba/src/divonne/Makefile \
src/external/libCuba/src/suave/Makefile \
src/external/libCuba/src/vegas/Makefile \
src/external/libCuba/src/common/Makefile \
src/external/BMWtools/Makefile \
src/external/libFitPofB/Makefile \
src/external/libFitPofB/classes/Makefile \
src/external/libLFRelaxation/Makefile \
src/external/libZFRelaxation/Makefile \
src/external/libGapIntegrals/Makefile \
src/external/libCalcMeanFieldsLEM/Makefile \
src/external/Nonlocal/Makefile \
src/external/MagProximity/Makefile \
src/external/libSpinValve/Makefile \
src/external/libSpinValve/classes/Makefile \
src/external/libPhotoMeissner/Makefile \
src/external/libPhotoMeissner/classes/Makefile \
src/external/libGbGLF/Makefile \
src/external/libBNMR/Makefile \
src/external/libBNMR/libLineProfile/Makefile \
src/musredit_qt5/Makefile \
src/musredit/Makefile \
src/musrgui/Makefile \
src/musrgui/musrgui_startup.xml])
AC_OUTPUT
if test "x$enable_editor" != "xno" && test "x$QMAKEBIN" != "x"; then
echo "Configuring ${QTEDITOR} ..."
if test "x${QTEDITOR}" = "xmusredit_qt5"; then
QTEDITOR_PRO="musredit"
else
QTEDITOR_PRO=${QTEDITOR}
fi
echo "Changing directory to src/${QTEDITOR} and calling"
echo "${QMAKEBIN} CC=${CC} CXX=${CXX} PREFIX=${INSTALLDIR} ${QTEDITOR_PRO}.pro"
cd src/${QTEDITOR}
${QMAKEBIN} CC=${CC} CXX=${CXX} PREFIX=${INSTALLDIR} ${QTEDITOR_PRO}.pro
cd ../..
fi
echo ""
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+ +"
echo "+ Summary +"
echo "+ +"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo ""
echo " System:"
echo " -------"
echo ""
echo " $host"
echo ""
echo ""
echo " Requirements:"
echo " -------------"
echo ""
if test "${FFTW3_FOUND}" = "1"; then
echo " FFTW3 found in $(pkg-config --variable=prefix fftw3)"
else
echo " FFTW3 found in ${FFTW3_PREFIX}"
fi
if test "${GSL_FOUND}" = "1"; then
echo " GSL found in $(pkg-config --variable=prefix gsl)"
else
echo " GSL found in ${GSL_PREFIX}"
fi
if test "${BOOST_FOUND}" = "1"; then
echo " BOOST header files found in $(pkg-config --variable=prefix boost)"
else
echo " BOOST header files found in ${BOOST_INCLUDE}"
fi
if test "${LIBXML2_FOUND}" = "1"; then
echo " LIBXML2 found in $(pkg-config --variable=prefix libxml2)"
else
echo " LIBXML2 found in ${LIBXML2_PREFIX}"
fi
echo " ROOT found in ${ROOTLIBDIR%/lib}"
echo ""
if test "${PNEXUS_ENABLED}" -eq 1; then
echo " HDF4 found in ${HDF4_PREFIX}"
echo " HDF5 found in ${HDF5_PREFIX}"
if test "${NEXUS_FOUND}" = "1"; then
echo " NeXus found in $(pkg-config --variable=prefix nexus)"
else
echo " NeXus found in ${NEXUS_PREFIX}"
fi
else
echo " HDF4 not needed (NeXus support disabled)"
echo " HDF5 not needed (NeXus support disabled)"
echo " NeXus not needed (NeXus support disabled)"
fi
echo ""
if test "${BUILD_CUBA}" = "1"; then
echo " CUBA will be built"
elif test "${BUILD_CUBA}" != "1" && test "${BUILD_BMW_LIBS}" -eq 1; then
if test "${CUBA_FOUND}" = "1"; then
echo " CUBA found in $(pkg-config --variable=prefix cuba)"
else
echo " CUBA found in ${CUBA_PREFIX}"
fi
else
echo " CUBA not needed (BMWlibs disabled)"
fi
echo ""
if test "${enable_editor}" != "xno"; then
if test "x${QMAKEBIN}" != "x"; then
echo " Qt qmake found at ${QMAKEBIN}"
else
echo " Qt qmake not found"
fi
else
echo " Qt not needed (Qt editors disabled)"
fi
echo ""
echo ""
echo " Features:"
echo " ---------"
echo ""
echo " musrfit (including musrfit, musrview, musrt0,"
echo " msr2msr, msr2data, any2many, dump_header,"
echo " musrRootValidation, write_musrRoot_runHeader): yes"
echo ""
echo " Supported muSR file formats:"
echo " MusrRoot: yes"
echo " ROOT (LEM): yes"
echo " MUD: yes"
echo " PSI-BIN: yes"
echo " PSI-MDU: yes"
echo " WKM: yes"
if test "${PNEXUS_ENABLED}" -eq 1; then
echo " NeXus: yes"
else
echo " NeXus: no"
fi
echo ""
echo " External user-function libraries:"
if test "${BUILD_AS_LIBS}" -eq 1; then
echo " ASlibs: yes"
else
echo " ASlibs: no"
fi
if test "${BUILD_BNMR_LIBS}" -eq 1; then
echo " BNMRlibs: yes"
else
echo " BNMRlibs: no"
fi
if test "${BUILD_BMW_LIBS}" -eq 1; then
echo " BMWlibs: yes"
else
echo " BMWlibs: no"
fi
echo ""
echo " Qt musrfit editors:"
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit_qt5"; then
echo " musredit (Qt5): yes"
else
echo " musredit (Qt5): no"
fi
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit"; then
echo " musredit (Qt4): yes"
else
echo " musredit (Qt4): no"
fi
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusrgui"; then
echo " musrgui (Qt3): yes"
else
echo " musrgui (Qt3): no"
fi
echo ""
echo ""
echo " Installation directories:"
echo " -------------------------"
echo ""
echo " Programs: ${INSTALLDIR}/bin"
echo " XML configuration files: ${HOME}/.musrfit"
echo " Documentation: ${DOCDIR}"
echo ""
dnl --------------
dnl create header file that musredit knows at runtime where to find the documentation
dnl the DOCDIR2 tag is used for rpmbuild only
dnl --------------
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit_qt5"; then
echo \#define MUSRFIT_PREFIX \"${INSTALLDIR}\" > src/musredit_qt5/musrfit-info.h
if test "x$DOCDIR2" = "x"; then
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit_qt5/musrfit-info.h
else
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR2}\" >> src/musredit_qt5/musrfit-info.h
fi
fi
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit"; then
echo \#define MUSRFIT_PREFIX \"${INSTALLDIR}\" > src/musredit/musrfit-info.h
if test "x$DOCDIR2" = "x"; then
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit/musrfit-info.h
else
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR2}\" >> src/musredit/musrfit-info.h
fi
fi