]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/configure.ac
using the new ESD assignment operator to merge ESDs
[u/mrichter/AliRoot.git] / HLT / configure.ac
index 6363554c751b15d540173a4efddba0b4edf7f045..e95e1c2e0463dc0dcf44571415b4446af7b15f44 100644 (file)
@@ -5,7 +5,20 @@ dnl template for the configuration script for the Alice HLT
 dnl framework and components
 dnl 
 dnl ------------------------------------------------------------------
-AC_INIT([Alice High Level Trigger] , [0.7-dev], [Matthias.Richter@ift.uib.no], alice-hlt)
+
+dnl Take either the AliRoot tag as version id or the current revision
+AC_INIT([Alice High Level Trigger] , 
+       m4_esyscmd([url=`svn info 2> /dev/null | grep "URL:" | cut -d: -f3 | sed -e 's|[/]*HLT[/]*$||' | sed -e 's|^[/]*||g' | cut -d '/' -f 4`; \
+                   revision=`svn info 2> /dev/null | grep "Revision:" | cut -d ' ' -f 2 | cut -d '/' -f 4`; \
+                   if test "x$url" != "x"; then echo -n $url; \
+                   elif test "x$revision" != "x"; then echo -n $revision ; \
+                   elif test -e .revision && test x`cat .revision` != x; then \
+                      cat .revision; \
+                   else \
+                      echo -n invalid-version; \
+                   fi]),
+       [Matthias.Richter@ift.uib.no], 
+       [alice-hlt])
 
 dnl ------------------------------------------------------------------
 dnl the package from CVS contains the old Makefiles as well. In order to
@@ -60,7 +73,8 @@ if test "x$have_root" = "x1"; then
   # - from Nov 1 2006 TTreeFormula is needed by AliTagAnalysis and requires
   #   libTreePlayer.so
   # - from Jan 07 libESD also depends on libXMLIO
-  ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO'
+  # - libSTEER depends on libProofPlayer since Oct 2007 (after v4-07-Release)
+  ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO Thread Proof ProofPlayer'
   for CHECKLIB in $ROOT_CHECKLIBS ; do
     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
     LIBS="$save_LIBS $ROOTLIBS $ADD_ROOTLIBS"
@@ -91,6 +105,9 @@ ALIHLT_USEPACKAGE=ALIROOT
 AC_DEFINE(use_aliroot)
 AC_DEFINE(use_root)
 CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
+save_CPPFLAGS=$CPPFLAGS
+save_LDFLAGS=$LDFLAGS
+save_LIBS=$LIBS
 
 dnl ------------------------------------------------------------------
 dnl check for AliRoot features
@@ -157,16 +174,16 @@ if test ! "x$have_aliroot" = "xno" ; then
   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=AOD
+  CHECKLIB=STEERBase
   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
 
-  # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
-  CHECKLIB=CDB
+  CHECKLIB=AOD
   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
 
-  # check for certain AliRoot libraries/files/features
   # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
   have_alirawdata=no
   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
@@ -177,7 +194,6 @@ if test ! "x$have_aliroot" = "xno" ; then
         CHECKLIB=RAWDatarec
         AC_CHECK_LIB([$CHECKLIB],[_init],
                [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
-               AC_DEFINE(HAVE_ALIRAWDATA)
                have_alirawdata=$CHECKLIB])],
        [# second pass with -RAWData
         CHECKLIB="-lRAWData"
@@ -190,31 +206,80 @@ if test ! "x$have_aliroot" = "xno" ; then
                                       AliRawReaderFile freader;
                                       AliRawReaderDate dreader(NULL,0);
                                       AliRawReaderRoot rreader(NULL,0);])],
-                                     [AC_DEFINE(HAVE_ALIRAWDATA)
-                                      ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
+                                     [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 required header files and libraries for the AliHLTTPC library  
+  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 ESD copy function added May 9 2008 rev 25667
+  dnl
+  have_esd_copy=no
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>],
+                                 [AliESDEvent esd1;
+                                  AliESDEvent esd2;
+                                  esd2=esd1;])],
+                 [AC_DEFINE(HAVE_ESD_COPY)
+                 have_esd_copy=yes], 
+                [])
+  AC_MSG_CHECKING(for ESD assignment operator)
+  AC_MSG_RESULT([$have_esd_copy])
+
+  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
-    # fram May 07 TPCbase depends on libGui.so
-    saveALIROOT_CPPFLAGS="$ALIROOT_CPPFLAGS"
-    ALIROOT_CPPFLAGS="$saveALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
-    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+    # 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
-      save_ALIROOT_LIBS=$ALIROOT_LIBS
-      ALIROOT_LIBS="$save_ALIROOT_LIBS -lTPCbase -lTPCrec -lGui -lSTEER"
-      LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+      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>
@@ -229,77 +294,14 @@ if test ! "x$have_aliroot" = "xno" ; then
                                       AliTPCClustersArray clustarray;
                                       AliTPCcluster clust;
                                       AliTPCClustersRow row])],
-                                      [AC_DEFINE(HAVE_ALITPC)
-                                      saveALIROOT_CPPFLAGS=$ALIROOT_CPPFLAGS
-                                      saveALIROOT_LIBS=$ALIROOT_LIBS], 
+                                      [AC_DEFINE(HAVE_ALITPC)], 
                                      [have_alitpc=no
-                                      ALIROOT_CPPFLAGS=$saveALIROOT_CPPFLAGS
-                                      ALIROOT_LIBS=$saveALIROOT_LIBS])
+                                      ALITPC_LIBS= ])
     fi
-    AC_MSG_RESULT($have_alitpc)
-  fi
-  AC_CHECK_HEADERS([AliTPCCalibPulser.h AliTPCCalibPedestal.h])
-
-  LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
-  CHECKLIB=STEER
-  AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
-
-  dnl
-  dnl check whether AliLog supports notification callback
-  dnl
-  LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
-  have_alilog_notification=no
-  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])
-
-  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)
-
-  dnl
-  dnl required header files and libraries for the AliHLTPHOS library  
-  dnl
-  have_alicalorawstream=no
-  if test ! "x$have_aliroot" = "xno" ; then
-    # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
-    #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
-    AC_MSG_CHECKING([for AliCaloRawStream.h usability])
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
-                                    #include <AliCaloRawStream.h>], 
-                                    [int i])],
-                                    [AC_DEFINE(HAVE_ALICALORAWSTREAM)
-                                    have_alicalorawstream=yes], 
-                                   [])
-    AC_MSG_RESULT([$have_alicalorawstream])
-  fi
-
-  dnl
-  dnl required header files and libraries for the AliHLTTRD library  
-  dnl
-  AC_CHECK_HEADERS([AliGeomManager.h], [], [AC_DEFINE([HAVNT_ALIGEOMMANAGER])])
-
-  if test ! "x$have_alirawdata" = "xno" ; then
-    # check for header files needed by the TPCLib/AliHLTTPCDigitReaderPacket
-    # the header file has been moved to the TPC module
-    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
-    # AliRawReaderMemory.h AliRawReaderFile.h already checked
-    #AC_CHECK_HEADERS([AliRawReaderMemory.h AliRawReaderFile.h AliTPCRawStream.h])
-    AC_CHECK_HEADERS([AliTPCRawStream.h])
+    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
@@ -318,15 +320,25 @@ if test ! "x$have_aliroot" = "xno" ; then
   AC_MSG_CHECKING([for TPC mapping layout])
   AC_MSG_RESULT([$have_tpc_mapping])
 
-  if test "x$have_aliroot" = "xno" ; then
-    ALIROOT_CPPFLAGS=
-    ALIROOT_LDFLAGS=
-    ALIROOT_LIBS=
-  fi
+  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
+fi # if test ! "x$have_aliroot" = "xno"
+
 AC_LANG_POP(C++)
 AC_SUBST([ALICE_ROOT])
 AC_SUBST([ALIROOT_CPPFLAGS])
@@ -343,6 +355,11 @@ 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],
                    [],
@@ -351,7 +368,7 @@ if test -z $with_pubsub || ! test -d $with_pubsub ; then
   with_pubsub=no
 fi
 AC_MSG_RESULT([$with_pubsub])
-HOMER_VERSION=1
+HOMER_VERSION=2
 HOMER_LIBS=
 
 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
@@ -391,6 +408,7 @@ if test "x$with_pubsub" != "xno" ; then
     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}"
@@ -399,7 +417,7 @@ if test "x$with_pubsub" != "xno" ; then
   LIBS="$save_LIBS "
   with_homer=no
   AC_LANG_PUSH(C++)
-  AC_CHECK_HEADER([HOMERReader.h],
+  AC_CHECK_HEADER([$HOMERREADER_HEADER],
     [ AC_CHECK_LIB([HOMER],[_init],
       [with_homer=yes
        HOMER_LIBS="-lHOMER"],
@@ -416,11 +434,24 @@ if test "x$with_pubsub" != "xno" ; then
       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
                                       [HOMERReader reader("dummy", 0);
                                       reader.GetBlockStatusFlags(0);])],
-                                      [if test $HOMER_VERSION -lt 2 ; then HOMER_VERSION=2; fi],
-                                     [])
+                                      [],
+                                     [HOMER_VERSION=1])
       AC_MSG_RESULT([$HOMER_VERSION])
-  ]) #AC_CHECK_HEADER([HOMERReader.h])
+  ],
+  [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=
@@ -432,21 +463,29 @@ if test "x$with_pubsub" != "xno" ; then
   CPPFLAGS="$save_CPPFLAGS"
   LDFLAGS="$save_LDFLAGS"
   LIBS="$save_LIBS"  
-fi
+
+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([--enable-strict],
-      [enable coding convention checks ])],
-  [],[enable_strict=no])
+  [AC_HELP_STRING([--disable-strict],
+      [disable coding convention checks ])],
+  [],[enable_strict=yes])
 if test "x$enable_strict" = "xyes" ; then
-   CPPFLAGS="$CPPFLAGS -Weffc++"
+   CPPFLAGS="$CPPFLAGS -W -Weffc++ -Wall"
 fi
 AC_MSG_RESULT([$enable_strict])
 
@@ -454,9 +493,16 @@ dnl ------------------------------------------------------------------
 AC_MSG_CHECKING([whether to compile sample library])
 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
 AC_ARG_ENABLE(sample,
-  [AC_HELP_STRING([--enable-sample],
+  [AC_HELP_STRING([--disable-sample],
       [compile the sample library ])],
-  [],[enable_sample=yes])
+  [],
+  [if test "x$have_aliroot" = "xno" ; then
+     enable_sample="no...requires.AliRoot"
+   else
+     enable_sample=yes
+   fi
+  ])
+
 if test "x$enable_sample" = "xyes" ; then 
   AC_DEFINE(HLT_SAMPLE)
 fi
@@ -464,72 +510,305 @@ AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
 AC_MSG_RESULT([$enable_sample])
 
 dnl ------------------------------------------------------------------
-AC_MSG_CHECKING([whether to compile tpc library])
+AC_MSG_CHECKING([whether to compile util library])
+AH_TEMPLATE([HLT_UTIL],[HLT utility library])
+AC_ARG_ENABLE(util,
+  [AC_HELP_STRING([--disable-util],
+      [compile the util library ])],
+  [],
+  [if test "x$have_aliroot" = "xno" ; then
+     enable_util="no...requires.AliRoot"
+   else
+     enable_util=yes
+   fi
+  ])
+
+if test "x$enable_util" = "xyes" ; then 
+  AC_DEFINE(HLT_UTIL)
+fi
+AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
+AC_MSG_RESULT([$enable_util])
+
+dnl ------------------------------------------------------------------
 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
-AC_ARG_ENABLE(tpc,
-  [AC_HELP_STRING([--enable-tpc],
-      [compile the tpc library ])],
-  [],[enable_tpc=yes])
-if test "x$have_aliroot" = "xno" ; then
-   enable_tpc="no...requires.AliRoot"
+
+CHECK_HLTMODULE([tpc],
+               [AliTPCRawStream.h], 
+               [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...missing.headers"
+  enable_tpc="no...missing.headers"
 elif test "x$have_alitpc" = "xno" ; then
-   enable_tpc="no...requires.AliRoot.TPC.libraries"
+  enable_module="no...requires.AliRoot.TPC.libraries"
+  enable_tpc="no...requires.AliRoot.TPC.libraries"
+elif test "x$enable_module" = "xforce"; then
+  enable_tpc="yes"
+else
+  enable_tpc=$enable_module
 fi
+
 if test "x$enable_tpc" = "xyes" ; then 
   AC_DEFINE(HLT_TPC)
 fi
 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
-AC_MSG_RESULT([$enable_tpc])
+AC_MSG_CHECKING([whether to compile TPC library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALITPC_LIBS])
+
+dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_RCU],[hlt rcu library])
+
+CHECK_HLTMODULE([rcu],
+               [AliAltroDecoder.h], 
+               [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...missing.headers"
+  enable_rcu="no...missing.headers"
+elif test "x$have_alircu" = "xno" ; then
+  enable_module="no...requires.AliRoot.RAW.libraries"
+  enable_rcu="no...requires.AliRoot.RAW.libraries"
+elif test "x$enable_module" = "xforce"; then
+  enable_rcu="yes"
+else
+  AC_LANG_PUSH(C++)
+  save_CPPFLAGS=$CPPFLAGS
+  save_LDFLAGS=$LDFLAGS
+  save_LIBS=$LIBS
+  CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+  LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
+  LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
+                                  [AliAltroDecoder decoder;
+                                 decoder.CopyBackward(NULL, 0);])],
+                                  [enable_rcu=$enable_module], 
+                                 [enable_module="no...requires.AliRoot>v4-10-Release"
+                                  enable_rcu="no...requires.AliRoot>v4-10-Release"])
+  CPPFLAGS=$save_CPPFLAGS
+  LDFLAGS=$save_LDFLAGS
+  LIBS=$save_LIBS
+  AC_LANG_POP(C++)
+fi
+
+if test "x$enable_rcu" = "xyes" ; then 
+  AC_DEFINE(HLT_RCU)
+fi
+AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
+AC_MSG_CHECKING([whether to compile RCU library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIRCU_LIBS])
 
 dnl ------------------------------------------------------------------
-AC_MSG_CHECKING([whether to compile phos library])
 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
-AC_ARG_ENABLE(phos,
-  [AC_HELP_STRING([--enable-phos],
-      [compile the phos library ])],
-  [],[enable_phos=yes])
-if test "x$have_aliroot" = "xno" ; then
-   enable_phos="no...requires.AliRoot"
-elif ! test "x$have_alicalorawstream" = "xyes"; then
-   enable_phos="no...requires.AliRoot>v4-05-07"
+  
+ALIPHOS_LIBS=
+CHECK_HLTMODULE([phos],
+               [], [$ALIROOT_CPPFLAGS],
+               [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
+               [PHOSbase PHOSrec PHOSsim PHOSshuttle], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...requires.AliRoot>v4-05-07"
+  enable_phos="no...requires.AliRoot>v4-05-07"
+elif test "x$enable_module" = "xforce"; then
+  enable_phos="yes"
+else
+  have_alicalorawstream=no
+  if test ! "x$have_aliroot" = "xno" ; then
+    AC_LANG_PUSH(C++)
+    save_CPPFLAGS="$CPPFLAGS"
+    # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
+    #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+    AC_MSG_CHECKING([for AliCaloRawStream.h usability])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
+                                       #include <AliCaloRawStream.h>], 
+                                       [int i])],
+                                       [AC_DEFINE(HAVE_ALICALORAWSTREAM)
+                                       have_alicalorawstream=yes], 
+                                      [])
+    AC_MSG_RESULT([$have_alicalorawstream])
+    AC_LANG_POP(C++)
+    CPPFLAGS="$save_CPPFLAGS"
+  fi
+  if test "x$have_alicalorawstream" != "xyes"; then
+    enable_phos="no...requires.AliRoot>v4-05-07"
+  else
+    enable_phos=$enable_module
+  fi
 fi
+
 if test "x$enable_phos" = "xyes" ; then 
   AC_DEFINE(HLT_PHOS)
+  ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
 fi
 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
-AC_MSG_RESULT([$enable_phos])
+AC_MSG_CHECKING([whether to compile PHOS library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIPHOS_LIBS])
 
 dnl ------------------------------------------------------------------
-AC_MSG_CHECKING([whether to compile trd library])
 AH_TEMPLATE([HLT_TRD],[hlt trd library])
-AC_ARG_ENABLE(trd,
-  [AC_HELP_STRING([--enable-trd],
-      [compile the trd library ])],
-  [],[enable_trd=yes])
-if test "x$have_aliroot" = "xno" ; then
-   enable_trd="no...requires.AliRoot"
+  
+ALITRD_LIBS=
+CHECK_HLTMODULE([trd],
+               [], [],
+               [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...requires.AliRoot>v4-07-Release"
+  enable_trd="no...requires.AliRoot>v4-07-Release"
+elif test "x$enable_module" = "xforce"; then
+  enable_trd="yes"
+else
+  enable_trd=$enable_module
+  if test "x$enable_trd" = "xyes" ; then
+    AC_LANG_PUSH(C++)
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
+    AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
+                                       [AliTRDclusterizer c;
+                                      c.SetRawVersion(0)])],
+                                       [], 
+                                      [enable_trd="no...requires.AliRoot>v4-07-Release"])
+    AC_MSG_RESULT([$enable_trd])       
+    AC_LANG_POP(C++)
+    CPPFLAGS="$save_CPPFLAGS"
+  fi
 fi
+
 if test "x$enable_trd" = "xyes" ; then 
   AC_DEFINE(HLT_TRD)
+  ALITRD_LIBS=$ALIHLTMODULE_LIBS
 fi
 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
-AC_MSG_RESULT([$enable_trd])
+AC_MSG_CHECKING([whether to compile TRD library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALITRD_LIBS])
 
 dnl ------------------------------------------------------------------
-AC_MSG_CHECKING([whether to compile dimuon library])
 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
-AC_ARG_ENABLE(dimuon,
-  [AC_HELP_STRING([--enable-dimuon],
-      [compile the dimuon library ])],
-  [],[enable_dimuon=yes])
-if test "x$have_aliroot" = "xno" ; then
-   enable_dimuon="no...requires.AliRoot"
+
+ALIMUON_LIBS=
+CHECK_HLTMODULE([dimuon],
+               [AliMpExMap.h AliMUONTriggerIO.h], 
+               [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...requires.AliRoot>=v4-08-Release"
+  enable_muon="no...requires.AliRoot>=v4-08-Release"
+elif test "x$enable_module" = "xforce"; then
+  enable_muon="yes"
+else
+  enable_muon=$enable_module
 fi
-if test "x$enable_dimuon" = "xyes" ; then 
+
+if test "x$enable_muon" = "xyes" ; then 
   AC_DEFINE(HLT_MUON)
+  ALIMUON_LIBS=$ALIHLTMODULE_LIBS
+fi
+AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
+AC_MSG_CHECKING([whether to compile MUON library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIMUON_LIBS])
+
+dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_TRIGGER],[hlt trigger library])
+
+ALITRIGGER_LIBS=
+CHECK_HLTMODULE([trigger],
+               [], [$ALIROOT_CPPFLAGS],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...header.missing"
+  enable_trigger="no...header.missing"
+elif test "x$enable_module" = "xforce"; then
+  enable_trigger="yes"
+else
+  enable_trigger=$enable_module
+fi
+
+if test "x$enable_trigger" = "xyes" ; then 
+  AC_DEFINE(HLT_TRIGGER)
+  ALITRIGGER_LIBS=$ALIHLTMODULE_LIBS
+fi
+AM_CONDITIONAL(EN_HLT_TRIGGER, test x$enable_trigger = xyes)
+AC_MSG_CHECKING([whether to compile Trigger library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALITRIGGER_LIBS])
+
+dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_ITS],[hlt its library])
+
+ALIITS_LIBS=
+CHECK_HLTMODULE([its],
+               [], [$ALIROOT_CPPFLAGS],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...header.missing"
+  enable_its="no...header.missing"
+elif test "x$enable_module" = "xforce"; then
+  enable_its="yes"
+else
+  enable_its=$enable_module
+fi
+
+if test "x$enable_its" = "xyes" ; then 
+  AC_DEFINE(HLT_ITS)
+  ALIITS_LIBS=$ALIHLTMODULE_LIBS
 fi
-AM_CONDITIONAL(EN_HLT_MUON, test x$enable_dimuon = xyes)
-AC_MSG_RESULT([$enable_dimuon])
+AM_CONDITIONAL(EN_HLT_ITS, test x$enable_its = xyes)
+AC_MSG_CHECKING([whether to compile ITS library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIITS_LIBS])
+
+dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_COMP],[hlt comp library])
+
+ALICOMP_LIBS=
+CHECK_HLTMODULE([comp],
+               [], [$ALIROOT_CPPFLAGS],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...header.missing"
+  enable_comp="no...header.missing"
+elif test "x$enable_module" = "xforce"; then
+  enable_comp="yes"
+else
+  enable_comp=$enable_module
+fi
+
+if test "x$enable_comp" = "xyes" ; then 
+  AC_DEFINE(HLT_COMP)
+  ALICOMP_LIBS=$ALIHLTMODULE_LIBS
+fi
+AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
+AC_MSG_CHECKING([whether to compile comp library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALICOMP_LIBS])
 
 dnl ------------------------------------------------------------------
 AC_MSG_CHECKING([whether to disable AliRoot logging])
@@ -538,6 +817,9 @@ AC_ARG_ENABLE(aliroot-logging,
   [AC_HELP_STRING([--disable-aliroot-logging],
       [disable logging through AliRoot logging methods])],
   [],[enable_aliroot_logging=no])
+if test "x$have_aliroot" = "xno" ; then
+  enable_aliroot_logging=yes # this means 'disable'
+fi
 if test "x$enable_aliroot_logging" != "xno" ; then 
   AC_DEFINE(NOALIROOT_LOGGING)
 fi
@@ -611,29 +893,88 @@ dnl fi
 dnl AC_SUBST([HAVE_SRC_SUBDIR])
 
 dnl ------------------------------------------------------------------
-dnl inatallation directory for libraries
-dnl 
-if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
-libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
-AC_MSG_NOTICE([libdir set to $libdir])
-fi
-dnl ------------------------------------------------------------------
+AC_MSG_NOTICE([---------------------------------------------- ])
+AC_MSG_NOTICE([                build summary                  ])
+AC_MSG_NOTICE([---------------------------------------------- ])
+
 AC_CONFIG_FILES([Makefile 
                 BASE/Makefile
                 BASE/setenv.sh
                 BASE/setenv.csh
+                BASE/HOMER/Makefile
                 BASE/util/Makefile
                 BASE/interface/Makefile
-                SampleLib/Makefile
-                TPCLib/Makefile
-                TPCLib/mapping2array.cxx
-                TPCLib/OnlineDisplay/Makefile
-                PHOS/Makefile
-                TRD/Makefile
-                MUON/Makefile
+                BASE/test/Makefile
                 doc/Makefile
-                doc/doxygen.conf])
+                doc/doxygen.conf
+                doc/doxymodule.conf])
+
+dnl AliRoot and installation directory for libraries
+dnl 
+AC_MSG_NOTICE([AliRoot: $have_aliroot])
+AM_CONDITIONAL(HAVE_ALIROOT, test "x$have_aliroot" != "xno" )
+if test "x$have_aliroot" != "xno"; then 
+  AC_CONFIG_FILES([sim/Makefile         
+                  rec/Makefile  
+                  rec/test/Makefile     
+                  shuttle/Makefile
+                  ])
+fi
+if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
+libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
+AC_MSG_NOTICE([libdir set to $libdir])
+fi
+
+AC_MSG_NOTICE([compile sample library: $enable_sample])
+if test "x$enable_sample" = "xyes"; then 
+  AC_CONFIG_FILES([SampleLib/Makefile])
+fi
+
+AC_MSG_NOTICE([compile RCU library: $enable_rcu])
+if test "x$enable_rcu" = "xyes"; then 
+  AC_CONFIG_FILES([RCU/Makefile
+                  RCU/test/Makefile
+                  ])
+fi
 
+AC_MSG_NOTICE([compile TPC library: $enable_tpc])
+if test "x$enable_tpc" = "xyes"; then 
+  AC_CONFIG_FILES([TPCLib/Makefile           
+                  TPCLib/test/Makefile       
+                  TPCLib/mapping2array.cxx     
+                  TPCLib/OnlineDisplay/Makefile
+                  ])
+fi
+
+AC_MSG_NOTICE([compile PHOS library: $enable_phos])
+if test "x$enable_phos" = "xyes"; then 
+  AC_CONFIG_FILES([PHOS/Makefile])
+fi
+
+AC_MSG_NOTICE([compile TRD library: $enable_trd])
+if test "x$enable_trd" = "xyes"; then 
+  AC_CONFIG_FILES([TRD/Makefile])
+fi
+
+AC_MSG_NOTICE([compile MUON library: $enable_muon])
+if test "x$enable_muon" = "xyes"; then 
+  AC_CONFIG_FILES([MUON/Makefile])
+fi
+
+AC_MSG_NOTICE([compile ITS library: $enable_its])
+if test "x$enable_its" = "xyes"; then 
+  AC_CONFIG_FILES([ITS/Makefile])
+fi
+
+AC_MSG_NOTICE([compile trigger library: $enable_trigger])
+if test "x$enable_trigger" = "xyes"; then 
+  AC_CONFIG_FILES([trigger/Makefile])
+fi
+
+AC_MSG_NOTICE([compile comp library: $enable_comp])
+if test "x$enable_comp" = "xyes"; then 
+  AC_CONFIG_FILES([comp/Makefile])
+fi
 
 AC_OUTPUT
 dnl