+CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
+save_CPPFLAGS=$CPPFLAGS
+save_LDFLAGS=$LDFLAGS
+save_LIBS=$LIBS
+
+dnl ------------------------------------------------------------------
+dnl check for AliRoot features
+AC_LANG_PUSH(C++)
+have_aliroot=no
+AC_ARG_WITH(aliroot,[ --with-aliroot top of the AliRoot installation],
+ [test -d $with_aliroot && ALICE_ROOT=$with_aliroot],
+ [])
+
+if test "x$ALICE_ROOT" != "x" && test -d $ALICE_ROOT ; then
+ dnl ------------------------------------------------------------------
+ dnl Try to estimate the system architecture
+ case $host_os:$host_cpu in
+ linux*:x86_64*) alice_target='linuxx8664gcc' ;;
+ linux*) alice_target='linux' ;;
+ *) alice_target='unknown' ;;
+ esac
+ if test "x$alice_target" = "xunknown" ; then
+ if test -z $ALICE_TARGET ; then
+ AC_MSG_ERROR([Can not estimate system architecture.
+ To avoid the problem, set the ALICE_TARGET variable appropriately.
+ Please send the following information to Matthias.Richter@ift.uib.no:
+ ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
+ else
+ AC_MSG_NOTICE([Unknown system architecture.
+ Please send the following information to Matthias.Richter@ift.uib.no:
+ ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
+ fi
+ else
+ if test "x$ALICE_TARGET" != "x" && test "x$ALICE_TARGET" != "x$alice_target" ; then
+ AC_MSG_WARN([The ALICE_TARGET variable does not match your current system
+ overriding $ALICE_TARGET by $alice_target])
+ fi
+ ALICE_TARGET=$alice_target
+ fi
+ ALIROOTBINDIR=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}
+ ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
+ ALIROOTINCDIR=${ALICE_ROOT}/include
+ test -d ${ALIROOTBINDIR} || AC_MSG_WARN([can not find AliRoot binary directory $ALIROOTBINDIR])
+ test -d ${ALIROOTLIBDIR} || AC_MSG_WARN([can not find AliRoot library directory $ALIROOTLIBDIR])
+ test -d ${ALIROOTINCDIR} || AC_MSG_WARN([can not find AliRoot include directory $ALIROOTINCDIR])
+fi
+
+AC_MSG_CHECKING([for AliRoot])
+if test "x$ALICE_ROOT" != "x" \
+ && test -d ${ALIROOTBINDIR} \
+ && test -d ${ALIROOTLIBDIR} \
+ && test -d ${ALIROOTINCDIR}; then
+ have_aliroot=$ALICE_ROOT
+else
+ ALIROOTBINDIR=
+ ALIROOTLIBDIR=
+ ALIROOTINCDIR=
+fi
+AC_MSG_RESULT([$have_aliroot])
+
+if test ! "x$have_aliroot" = "xno" ; then
+ ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
+ ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
+ ALIROOT_LIBS="-lESD $ADD_ROOTLIBS"
+ save_CPPFLAGS=$CPPFLAGS
+ save_LDFLAGS=$LDFLAGS
+ save_LIBS=$LIBS
+ CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
+
+ # check for certain AliRoot libraries/files/features
+ # libSTEERBase present since Aug 7 2007
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ CHECKLIB=STEERBase
+ AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
+
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ CHECKLIB=AOD
+ AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
+
+ # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
+ have_alirawdata=no
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ CHECKLIB=RAWDatabase
+ AC_CHECK_LIB([$CHECKLIB],[_init],
+ [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ CHECKLIB=RAWDatarec
+ AC_CHECK_LIB([$CHECKLIB],[_init],
+ [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
+ have_alirawdata=$CHECKLIB])],
+ [# second pass with -RAWData
+ CHECKLIB="-lRAWData"
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
+ #include <AliRawReaderFile.h>
+ #include <AliRawReaderDate.h>
+ #include <AliRawReaderRoot.h>],
+ [AliRawReaderMemory mreader;
+ AliRawReaderFile freader;
+ AliRawReaderDate dreader(NULL,0);
+ AliRawReaderRoot rreader(NULL,0);])],
+ [ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
+ have_alirawdata=$CHECKLIB],
+ [have_alirawdata=no])
+ ]) dnl AC_CHECK_LIB RAWDatabase
+ AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
+ AC_MSG_RESULT([$have_alirawdata])
+
+ # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
+ CHECKLIB=CDB
+ AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
+
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ CHECKLIB=STEER
+ AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],[have_aliroot=no])
+
+ dnl
+ dnl check whether AliLog supports notification callback
+ dnl
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+ have_alilog_notification=no
+ if test ! "x$have_aliroot" = "xno" ; then
+ AC_MSG_CHECKING([whether AliLog supports notification callback])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliLog.h>],
+ [AliLog::AliLogNotification fct])],
+ [have_alilog_notification=yes],
+ [AC_DEFINE(NO_ALILOG_NOTIFICATION)])
+ AC_MSG_RESULT([$have_alilog_notification])
+ fi
+
+ if test "x$have_aliroot" = "xno" ; then
+ # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
+ # but library dependencies might not be resolved completely
+ #ALIROOT_CPPFLAGS=
+ AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
+ This can happen from time to time due to development in AliRoot. You can
+ force compilation of detector libs by --enable-<detector>, but be aware
+ of unresolved references at runtime.])
+ AC_MSG_WARN([ ------------------------------------------ ])
+ AC_MSG_WARN([ Report this to $PACKAGE_BUGREPORT ])
+ AC_MSG_WARN([ please include config.log ])
+ AC_MSG_WARN([ ------------------------------------------ ])
+ ALIROOT_LDFLAGS=
+ ALIROOT_LIBS=
+ fi
+
+ dnl
+ dnl required header files and libraries for modules
+ dnl
+ if test ! "x$have_aliroot" = "xno" ; then
+ # the HLTTPCLib needs to link agains TPCbase and TPCrec
+ # TPC library for AliTPCParam and AliSimDigits used in
+ # AliHLTTPCFileHandler.h and AliHLTTPCDisplay.cxx
+ # from May 07 TPCbase depends on libGui.so
+ CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
+ have_alitpc=yes
+ AC_MSG_CHECKING(for required classes in TPC libraries)
+ if test ! "x$have_alitpc" = "xno" ; then
+ ALITPC_LIBS="-lGui -lTPCbase -lTPCrec"
+ LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliSimDigits.h>
+ #include <AliTPCParam.h>
+ #include <AliTPCParamSR.h>
+ #include <AliTPCDigitsArray.h>
+ #include <AliTPCClustersArray.h>
+ #include <AliTPCcluster.h>
+ #include <AliTPCClustersRow.h>],
+ [AliSimDigits dig;
+ AliTPCParam param;
+ AliTPCParamSR paramsr;
+ AliTPCDigitsArray digarray;
+ AliTPCClustersArray clustarray;
+ AliTPCcluster clust;
+ AliTPCClustersRow row])],
+ [AC_DEFINE(HAVE_ALITPC)],
+ [have_alitpc=no
+ ALITPC_LIBS= ])
+ fi
+ AC_MSG_RESULT($have_alitpc)
+ fi
+ AC_CHECK_HEADERS([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
+ AC_CHECK_HEADERS([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
+
+ have_tpc_mapping=no
+ if test ! "x$have_aliroot" = "xno" ; then
+ # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC
+ # which is stored in the TPC/mapping/Patchx.data files from
+ # AliRoot version v4-04-Release (May 2006)
+ AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
+ TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
+ AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data],
+ [have_tpc_mapping=yes
+ AC_SUBST(TPC_PAD_MAPPING_PATH)
+ AC_DEFINE(HAVE_TPC_MAPPING)],
+ [])
+
+ fi
+ AC_MSG_CHECKING([for TPC mapping layout])
+ AC_MSG_RESULT([$have_tpc_mapping])
+
+ dnl
+ dnl Check for the interface of AliExternalTrackParam which has been changed
+ dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04
+ dnl or higher)
+ externaltrackparam_version=1
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliExternalTrackParam.h>],
+ [AliExternalTrackParam trackparam;
+ Double_t param[[5]]; Double_t covar[[15]];
+ trackparam.Set(0., 0., param, covar);])],
+ [externaltrackparam_version=2],
+ [AC_DEFINE(EXTERNALTRACKPARAM_V1)])
+ AC_MSG_CHECKING(for version of AliExternalTrackParam)
+ AC_MSG_RESULT($externaltrackparam_version)
+
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+fi # if test ! "x$have_aliroot" = "xno"
+
+AC_LANG_POP(C++)
+AC_SUBST([ALICE_ROOT])
+AC_SUBST([ALIROOT_CPPFLAGS])
+AC_SUBST([ALIROOT_LDFLAGS])
+AC_SUBST([ALIROOTBINDIR])
+AC_SUBST([ALIROOTLIBDIR])
+AC_SUBST([ALIROOT_LIBS])
+AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
+
+HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
+HLTBASE_LDFLAGS=
+AC_SUBST([HLTBASE_CPPFLAGS])
+AC_SUBST([HLTBASE_LDFLAGS])
+
+dnl ------------------------------------------------------------------
+dnl check for the HLT PubSub Framework
+dnl namely for the existence of the HOMER library
+dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
+dnl package. It os though possible to choose an external. library
+dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
+dnl got the name libAliHLTHOMER
+AC_MSG_CHECKING([for HLT PubSub Framework])
+AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
+ [],
+ [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
+if test -z $with_pubsub || ! test -d $with_pubsub ; then
+ with_pubsub=no
+fi
+AC_MSG_RESULT([$with_pubsub])
+HOMER_VERSION=2
+HOMER_LIBS=
+
+AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
+if test "x$with_pubsub" != "xno" ; then
+ save_CPPFLAGS=$CPPFLAGS
+ save_LDFLAGS=$LDFLAGS
+ save_LIBS=$LIBS
+ # currently the different versions of the HLT PubSub framework have a different
+ # directory layout
+ if test -d ${with_pubsub}/include/HOMER ; then
+ # the 'early' location of the include files with separated HOMER sub dirs
+ HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
+ elif test -d ${with_pubsub}/include/Util/HOMER ; then
+ # location for HLT Framework versions after Sep 2006
+ HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
+ elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
+ # fall back if include files were not installed (versions after Sep 06)
+ HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
+ else
+ # fall back if include files were not installed (versions before Sep 06)
+ HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
+ fi
+ HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
+
+ AC_ARG_ENABLE(pubsub-debug,
+ [AC_HELP_STRING([--disable-pubsub-debug],
+ [force the production version of the PubSub framework])],
+ [],[enable_pubsub_debug=yes])
+ homer_type="none"
+ HOMER_TARGET="`uname -s`-`uname -m`"
+ AC_MSG_CHECKING([for HLT PubSub Framework release type])
+ if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
+ homer_type="production"
+ HOMER_TARGET="${HOMER_TARGET}-release"
+ elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
+ homer_type="debug"
+ HOMER_TARGET="${HOMER_TARGET}-debug"
+ fi
+ AC_MSG_RESULT([${homer_type}])
+ HOMERREADER_HEADER=HOMERReader.h
+ HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
+ HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
+ HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
+ CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
+ LIBS="$save_LIBS "
+ with_homer=no
+ AC_LANG_PUSH(C++)
+ AC_CHECK_HEADER([$HOMERREADER_HEADER],
+ [ AC_CHECK_LIB([HOMER],[_init],
+ [with_homer=yes
+ HOMER_LIBS="-lHOMER"],
+ [ AC_CHECK_LIB([HOMERReader],[_init],
+ [with_homer=yes
+ HOMER_LIBS="-lHOMERReader"])])
+ LIBS="$LIBS $HOMER_LIBS"
+ AC_MSG_CHECKING([version of HOMER library])
+ dnl The Homer library has no versioning, so we do our own
+ dnl version description
+ dnl ----------------------------------------------------------------------
+ dnl 1 inintial version
+ dnl 2 GetBlockStatusFlags added to the interface
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
+ [HOMERReader reader("dummy", 0);
+ reader.GetBlockStatusFlags(0);])],
+ [],
+ [HOMER_VERSION=1])
+ AC_MSG_RESULT([$HOMER_VERSION])
+ ],
+ [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
+ AC_LANG_POP(C++)
+ HOMER_INBUILT_LIB=
+else
+dnl no pubsub version defined, check if the HOMER lib is available in AliRoot
+ topdir=`dirname $0`
+ HOMER_CPPFLAGS="-I`(cd $topdir; pwd)`/BASE/HOMER"
+ HOMERREADER_HEADER=AliHLTHOMERReader.h
+ HOMER_INBUILT_LIB=`pwd`/BASE/HOMER/libAliHLTHOMER.la
+ HOMER_BINDIR=
+ HOMER_LIBDIR=
+ HOMER_LDFLAGS=
+fi
+
+ if test "x$with_homer" = "xno" ; then
+ HOMER_CPPFLAGS=
+ HOMER_LDFLAGS=
+ HOMER_LIBS=
+ else
+ HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
+ AC_DEFINE(HAVE_HOMERREADER)
+ fi
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+
+AC_SUBST([HOMERREADER_HEADER])
+AC_SUBST([HOMER_INBUILT_LIB])
+AC_SUBST([HOMER_CPPFLAGS])
+AC_SUBST([HOMER_LDFLAGS])
+AC_SUBST([HOMER_LIBDIR])
+AC_SUBST([HOMER_BINDIR])
+AC_SUBST([HOMER_LIBS])
+
+dnl ------------------------------------------------------------------
+AC_ARG_ENABLE(all,
+ [AC_HELP_STRING([--disable-all],
+ [disable all detector modules, individual modules can be switched on by --enable-det])],
+ [disable_all=yes],[])
+
+dnl ------------------------------------------------------------------
+AC_MSG_CHECKING([whether to impose strict coding conventions])
+AC_ARG_ENABLE(strict,
+ [AC_HELP_STRING([--disable-strict],
+ [disable coding convention checks ])],
+ [],[enable_strict=yes])
+if test "x$enable_strict" = "xyes" ; then
+ CPPFLAGS="$CPPFLAGS -W -Weffc++ -Wall"
+fi
+AC_MSG_RESULT([$enable_strict])