Protection against division by zero.
[u/mrichter/AliRoot.git] / HLT / configure.ac
index 789b3b4..6873e11 100644 (file)
@@ -83,11 +83,11 @@ if test "x$have_root" = "x1"; then
 
   # TBuffer.h has been made pure virtual in root v5-15-02 and one
   # has to derive from TBufferFile.h (needed for BASE/AliHLTMessage.h)
-  AC_CHECK_HEADERS([TBufferFile.h])
+  AC_CHECK_HEADER([TBufferFile.h], [], [HAVE_NOT_TBUFFERFILE])
 
   # TView.h has been made pure virtual right after root v5-15-02 and one
   # has to derive from TView3D.h (needed for TPCLib/OnlineDisplay/AliHLTTPCDisplay3D)
-  AC_CHECK_HEADERS([TView3D.h])
+  AC_CHECK_HEADER([TView3D.h], [], [HAVE_NOT_TVIEW3D])
 
   CPPFLAGS=$save_CPPFLAGS
   LDFLAGS=$save_LDFLAGS
@@ -253,8 +253,31 @@ if test ! "x$have_aliroot" = "xno" ; then
   fi
 
   dnl
+  dnl ESD supports non-std content
+  dnl
+  have_esd_nonstd=no
+  AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>
+                                  #include <AliExternalTrackParam.h>
+                                  #include <TTree.h>
+                                  #include <TClonesArray.h>],
+                                 [AliESDEvent esd;
+                                  esd.CreateStdContent();
+                                  TTree* tree=new TTree("esdTree", "Tree with HLT ESD objects");
+                                  esd.WriteToTree(tree);
+                                  TClonesArray* a=new TClonesArray("AliExternalTrackParam");
+                                  a->SetName("SomeObject");
+                                  esd.AddObject(a);
+                                  if (!tree->FindBranch("SomeObject")) return 1;
+                                  return 0;])],
+                 [have_esd_nonstd=yes], 
+                [AC_DEFINE(HAVE_NOT_ESD_NONSTD)])
+  AC_MSG_CHECKING(whether ESD supports non standard content)
+  AC_MSG_RESULT([$have_esd_nonstd])
+
+  dnl
   dnl ESD copy function added May 9 2008 rev 25667
   dnl
+  if test "x$have_esd_nonstd" != "xyes"; then
   have_esd_copy=no
   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>],
                                  [AliESDEvent esd1;
@@ -264,60 +287,25 @@ if test ! "x$have_aliroot" = "xno" ; then
                 [AC_DEFINE(HAVE_NOT_ESD_COPY)])
   AC_MSG_CHECKING(for ESD assignment operator)
   AC_MSG_RESULT([$have_esd_copy])
+  fi
 
   dnl
-  dnl required header files and libraries for modules
+  dnl AliRawReaderMemory support for multiple buffers added
+  dnl revision 26829 Jun 2008
   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)])
+  CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/RAW"
+  have_rawreadermemory_multbuffers=no
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>],
+                                 [AliRawReaderMemory rr;
+                                  rr.AddBuffer(NULL, 0, 0);])],
+                 [have_rawreadermemory_multbuffers=yes], 
+                [AC_DEFINE(HAVE_NOT_ALIRAWREADERMEMORY_ADDBUFFER)])
+  AC_MSG_CHECKING(AliRawReaderMemory support for multiple buffers)
+  AC_MSG_RESULT([$have_rawreadermemory_multbuffers])
 
-  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 required header files and libraries for modules
+  dnl
 
   dnl
   dnl Check for the interface of AliExternalTrackParam which has been changed
@@ -489,6 +477,24 @@ fi
 AC_MSG_RESULT([$enable_strict])
 
 dnl ------------------------------------------------------------------
+AC_MSG_CHECKING([whether to enable component statistics])
+AC_ARG_ENABLE(component-stat,
+  [AC_HELP_STRING([--enable-component-stat],
+      [enable component statistics ])],
+  [],[enable_component_stat=no])
+if test "x$enable_component_stat" = "xyes" ; then
+   AC_DEFINE(HLT_COMPONENT_STATISTICS)
+fi
+AC_MSG_RESULT([$enable_component_stat])
+
+dnl ------------------------------------------------------------------
+dnl ----  module checks
+dnl ------------------------------------------------------------------
+save_CPPFLAGS=$CPPFLAGS
+save_LDFLAGS=$LDFLAGS
+save_LIBS=$LIBS
+
+dnl ------------------------------------------------------------------
 AC_MSG_CHECKING([whether to compile sample library])
 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
 AC_ARG_ENABLE(sample,
@@ -531,19 +537,17 @@ AC_MSG_RESULT([$enable_util])
 dnl ------------------------------------------------------------------
 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
 
+ALITPC_LIBS=
 CHECK_HLTMODULE([tpc],
                [AliTPCRawStream.h], 
                [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
-               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
-               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [Gui ANALYSIS STAT], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
+               [TPCbase TPCrec TPCcalib], [-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_module="no...requires.AliRoot.TPC.libraries"
-  enable_tpc="no...requires.AliRoot.TPC.libraries"
 elif test "x$enable_module" = "xforce"; then
   enable_tpc="yes"
 else
@@ -551,7 +555,54 @@ else
 fi
 
 if test "x$enable_tpc" = "xyes" ; then 
+  AC_LANG_PUSH(C++)
   AC_DEFINE(HLT_TPC)
+  ALITPC_LIBS=$ALIHLTMODULE_LIBS
+  dnl
+  dnl Check for functionality in the TPC reconstruction required for online
+  dnl processing
+  dnl 
+  have_tpc_hltoffline_rec=no
+  AC_MSG_CHECKING(for on-line features of TPC offline reconstruction)
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
+    LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
+    LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliTPCtrackerMI.h>
+                                      #include <AliTPCclustererMI.h>   
+                                      #include <TObjArray.h>], 
+                                    [AliTPCtrackerMI tracker;
+                                      TObjArray* array=NULL;
+                                      tracker.LoadClusters(array);
+                                      AliTPCclustererMI cl(NULL, NULL);
+                                      cl.GetOutputClonesArray();])],
+                                    [have_tpc_hltoffline_rec=yes], 
+                                     [AC_DEFINE(HAVE_NOT_TPCOFFLINE_REC)])
+    LIBS=$save_LIBS
+  AC_MSG_RESULT([$have_tpc_hltoffline_rec])
+
+  AC_CHECK_HEADER([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
+  AC_CHECK_HEADER([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])
+  AC_LANG_POP(C++)
+
+else
+  enable_module=$enable_tpc
 fi
 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
 AC_MSG_CHECKING([whether to compile TPC library])
@@ -571,16 +622,10 @@ CHECK_HLTMODULE([rcu],
 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"
@@ -598,6 +643,8 @@ fi
 
 if test "x$enable_rcu" = "xyes" ; then 
   AC_DEFINE(HLT_RCU)
+else
+  enable_module=$enable_rcu
 fi
 AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
 AC_MSG_CHECKING([whether to compile RCU library])
@@ -626,7 +673,7 @@ else
     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"
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/PHOS"
     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
                                        #include <AliCaloRawStream.h>], 
@@ -634,6 +681,13 @@ else
                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
                                        have_alicalorawstream=yes], 
                                       [])
+    AC_MSG_RESULT([$have_aliphosrecoparam])
+    AC_MSG_CHECKING([for required EMC functionality in AliPHOSRecoParam.h ])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliPHOSRecoParam.h>], 
+                                       [AliPHOSRecoParam param;
+                                       param.GetEMCClusteringThreshold()])],
+                                       [have_aliphosrecoparam=yes], 
+                                      [AC_DEFINE(HAVE_NOT_PHOSRECOPARAMEMC)])
     AC_MSG_RESULT([$have_alicalorawstream])
     AC_LANG_POP(C++)
     CPPFLAGS="$save_CPPFLAGS"
@@ -648,6 +702,8 @@ fi
 if test "x$enable_phos" = "xyes" ; then 
   AC_DEFINE(HLT_PHOS)
   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_phos
 fi
 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
 AC_MSG_CHECKING([whether to compile PHOS library])
@@ -660,7 +716,7 @@ AH_TEMPLATE([HLT_TRD],[hlt trd library])
 ALITRD_LIBS=
 CHECK_HLTMODULE([trd],
                [], [],
-               [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [MLP XMLParser], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
                [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
                [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
 
@@ -675,12 +731,16 @@ else
     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)])],
+    # AliTRDclusterizer::SetRawVersion() requires >v4-07-Release
+    # changed to AliTRDrecoParam::SetSeedingOn() due to revision 26327, Mon Jun 2 2008
+    # changed to AliTRDReconstructor::SetStreamLevel() due to revision 27797, Tue Aug 5 2008
+    # changed to AliTRDReconstructor::SetClusters() according to revision 28069, Mon Aug 18 2008
+    AC_MSG_CHECKING([for required functions in AliTRDReconstructor])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDReconstructor.h>], 
+                                       [AliTRDReconstructor r;
+                                      r.SetClusters(0)])],
                                        [], 
-                                      [enable_trd="no...requires.AliRoot>v4-07-Release"])
+                                      [enable_trd="no...requires.AliRoot>v4-14-Release"])
     AC_MSG_RESULT([$enable_trd])       
     AC_LANG_POP(C++)
     CPPFLAGS="$save_CPPFLAGS"
@@ -690,6 +750,8 @@ fi
 if test "x$enable_trd" = "xyes" ; then 
   AC_DEFINE(HLT_TRD)
   ALITRD_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_trd
 fi
 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
 AC_MSG_CHECKING([whether to compile TRD library])
@@ -697,14 +759,53 @@ AC_MSG_RESULT([$enable_module])
 AC_SUBST([ALITRD_LIBS])
 
 dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_FMD],[hlt fmd library])
+
+ALIFMD_LIBS=$ALIHLTMODULE_LIBS
+CHECK_HLTMODULE([fmd],
+               [], [],
+               [], [-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-15-Release"
+  enable_fmd="no...requires.AliRoot>v4-15-Release"
+elif test "x$enable_module" = "xforce"; then
+  enable_fmd="yes"
+else
+  enable_fmd=$enable_module
+  if test "x$enable_fmd" = "xyes" ; then
+    AC_LANG_PUSH(C++)
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/FMD"
+    AC_MSG_RESULT([$enable_fmd])
+    AC_LANG_POP(C++)
+    CPPFLAGS="$save_CPPFLAGS"
+  fi
+fi
+
+if test "x$enable_fmd" = "xyes" ; then
+  AC_DEFINE(HLT_FMD)
+  ALIFMD_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_fmd
+fi
+AM_CONDITIONAL(EN_HLT_FMD, test x$enable_fmd = xyes)
+AC_MSG_CHECKING([whether to compile FMD library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIFMD_LIBS])
+
+
+dnl ------------------------------------------------------------------
 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
 
 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], 
+               [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [MUONcore MUONraw MUONbase MUONgeometry MUONmapping MUONcalib MUONsim MUONtrigger MUONevaluation MUONrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
                [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
 
 if test "x$enable_module" = "xmissheader"; then
@@ -719,6 +820,26 @@ fi
 if test "x$enable_muon" = "xyes" ; then 
   AC_DEFINE(HLT_MUON)
   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
+  AC_LANG_PUSH(C++)
+  dnl
+  dnl Check for functionality GetRawStream AliMUONDigitMaker.h
+  dnl 
+  have_muon_digitmaker_getrawstream=no
+  AC_MSG_CHECKING(for GetRawStream methods of AliMUONDigitMaker)
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON"
+    LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
+    LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALIMUON_LIBS"
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMUONDigitMaker.h>], 
+                                    [AliMUONDigitMaker dm;
+                                      dm.GetRawStreamTracker();])],
+                                    [have_muon_digitmaker_getrawstream=yes], 
+                                     [AC_DEFINE(HAVE_NOT_MUON_DIGITMAKER_GETRAWSTREAM)])
+    LIBS=$save_LIBS
+  AC_MSG_RESULT([$have_muon_digitmaker_getrawstream])
+
+  AC_LANG_POP(C++)
+else
+  enable_module=$enable_muon
 fi
 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
 AC_MSG_CHECKING([whether to compile MUON library])
@@ -747,6 +868,8 @@ fi
 if test "x$enable_trigger" = "xyes" ; then 
   AC_DEFINE(HLT_TRIGGER)
   ALITRIGGER_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_trigger
 fi
 AM_CONDITIONAL(EN_HLT_TRIGGER, test x$enable_trigger = xyes)
 AC_MSG_CHECKING([whether to compile Trigger library])
@@ -758,9 +881,9 @@ AH_TEMPLATE([HLT_ITS],[hlt its library])
 
 ALIITS_LIBS=
 CHECK_HLTMODULE([its],
-               [], [$ALIROOT_CPPFLAGS],
-               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
-               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [AliITSCompressRawDataSDD.h], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS],
+               [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [ITSbase ITSrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
                [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
 
 if test "x$enable_module" = "xmissheader"; then
@@ -770,11 +893,29 @@ elif test "x$enable_module" = "xforce"; then
   enable_its="yes"
 else
   enable_its=$enable_module
+  if test "x$enable_its" = "xyes" ; then
+    AC_LANG_PUSH(C++)
+    save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS"
+    # changes in the AliVertexer base class revision 26414, Thu Jun 5 15:36:18 2008
+    # require AliVertexer::GetNominalPos()
+    AC_MSG_CHECKING([for required functions in AliITSVertexer])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliITSVertexerZ.h>], 
+                                       [AliITSVertexerZ v;
+                                      v.GetNominalPos()])],
+                                       [], 
+                                      [enable_its="no...requires.AliRoot>v4-13-Release"])
+    AC_MSG_RESULT([$enable_its])       
+    AC_LANG_POP(C++)
+    CPPFLAGS="$save_CPPFLAGS"
+  fi
 fi
 
 if test "x$enable_its" = "xyes" ; then 
   AC_DEFINE(HLT_ITS)
   ALIITS_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_its
 fi
 AM_CONDITIONAL(EN_HLT_ITS, test x$enable_its = xyes)
 AC_MSG_CHECKING([whether to compile ITS library])
@@ -803,6 +944,8 @@ fi
 if test "x$enable_comp" = "xyes" ; then 
   AC_DEFINE(HLT_COMP)
   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
+else
+  enable_module=$enable_comp
 fi
 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
 AC_MSG_CHECKING([whether to compile comp library])
@@ -869,7 +1012,6 @@ dnl
 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
 AC_PATH_PROG(PERL, perl)
 AC_PATH_PROG(DOXYGEN, doxygen)
-AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
 AC_ARG_ENABLE(dot,
   [AC_HELP_STRING([--enable-dot],
       [enable dot documentation generator])],
@@ -881,6 +1023,28 @@ if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
    HAVE_DOT=YES
    DOT_PATH=`dirname $DOT`
 fi
+
+AC_MSG_CHECKING([for documentation mode])
+AC_ARG_ENABLE(doc,
+  [AC_HELP_STRING([--disable-doc],
+      [disable documentation build; monolithic build --enable-doc=mono ])],
+  [],[enable_doc=modules])
+if test "x$DOXYGEN" = "x" ; then
+   enable_doc=no.doxygen
+elif test ! "x$enable_doc" = "xmono" && \
+     test ! "x$enable_doc" = "xmodules"  && \
+     test ! "x$enable_doc" = "xno"; then
+   enable_doc=no
+   AC_MSG_WARN([unknown option])
+fi
+if test "x$enable_doc" = "xno" ; then
+   enable_doc=off
+   DOXYGEN=
+fi
+
+AC_MSG_RESULT([$enable_doc])
+AM_CONDITIONAL(MONOLITHIC_DOC, test "x$enable_doc" = "xmono")
+AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
 AC_SUBST([HAVE_DOT])
 AC_SUBST([DOT_PATH])
 
@@ -904,6 +1068,7 @@ AC_CONFIG_FILES([Makefile
                 BASE/util/Makefile
                 BASE/interface/Makefile
                 BASE/test/Makefile
+                BASE/interface/test/Makefile
                 doc/Makefile
                 doc/doxygen.conf
                 doc/doxymodule.conf])
@@ -917,6 +1082,7 @@ if test "x$have_aliroot" != "xno"; then
                   rec/Makefile  
                   rec/test/Makefile     
                   shuttle/Makefile
+                  pendolino/Makefile
                   ])
 fi
 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then