- check for AliRoot features/libs/files and corresponding conditional
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Aug 2006 13:14:26 +0000 (13:14 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Aug 2006 13:14:26 +0000 (13:14 +0000)
  build
- made package capable of handling the splitted RawData (changed in
  AliRoot version v4-04-Rev-07
- libHLTBase linked to ROOT libraries, TPCLib linked to ROOT and AliRoot
  libraries -> avoid addlibrary options for wrapper subscriber

HLT/ChangeLog
HLT/TPCLib/AliHLTTPCClusterFinderComponent.cxx
HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
HLT/TPCLib/AliHLTTPCDigitReaderPacked.cxx
HLT/TPCLib/AliHLTTPCDigitReaderPacked.h
HLT/TPCLib/AliHLTTPCDisplay.cxx
HLT/TPCLib/AliHLTTPCDisplay.h
HLT/TPCLib/Makefile.am
HLT/configure.ac
HLT/make.dict

index 0f4dccf..9e11936 100644 (file)
@@ -1,3 +1,11 @@
+2006-08-22 intermediate
+       - check for AliRoot features/libs/files and corresponding conditional
+         build
+       - made package capable of handling the splitted RawData (changed in
+         AliRoot version v4-04-Rev-07
+       - libHLTBase linked to ROOT libraries, TPCLib linked to ROOT and AliRoot
+         libraries -> avoid addlibrary options for wrapper subscriber 
+       
 2006-08-21 intermediate
        - made package indepentend of src
          added BASE/AliHLTStdIncludes.h which should take the job of
index b258965..b99b4e8 100644 (file)
@@ -47,18 +47,36 @@ AliHLTTPCClusterFinderComponent gAliHLTTPCClusterFinderComponentUnpacked(false);
 ClassImp(AliHLTTPCClusterFinderComponent)
 
 AliHLTTPCClusterFinderComponent::AliHLTTPCClusterFinderComponent(bool packed)
-    {
-    // use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
-    // use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
-    fPackedSwitch = packed;
-
-    fClusterFinder = NULL;
-    fReaderPacked = NULL;
-    fReaderUnpacked = NULL;
-    fClusterDeconv = true;
-    fXYClusterError = -1;
-    fZClusterError = -1;
-    }
+  :
+  // use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
+  // use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
+  fPackedSwitch(packed),
+
+  fClusterFinder(NULL),
+  fReader(NULL),
+  fClusterDeconv(true),
+  fXYClusterError(-1),
+  fZClusterError(-1)
+{
+}
+
+AliHLTTPCClusterFinderComponent::AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&)
+  :
+  fPackedSwitch(0),
+  fClusterFinder(NULL),
+  fReader(NULL),
+  fClusterDeconv(true),
+  fXYClusterError(-1),
+  fZClusterError(-1)
+{
+  HLTFatal("copy constructor untested");
+}
+
+AliHLTTPCClusterFinderComponent& AliHLTTPCClusterFinderComponent::operator=(const AliHLTTPCClusterFinderComponent&)
+{ 
+  HLTFatal("assignment operator untested");
+  return *this;
+}
 
 AliHLTTPCClusterFinderComponent::~AliHLTTPCClusterFinderComponent()
     {
@@ -107,12 +125,17 @@ int AliHLTTPCClusterFinderComponent::DoInit( int argc, const char** argv )
     fClusterFinder = new AliHLTTPCClusterFinder();
 
     if (fPackedSwitch) {
-      fReaderPacked = new AliHLTTPCDigitReaderPacked();
-      fClusterFinder->SetReader(fReaderPacked);
+#if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
+      fReader = new AliHLTTPCDigitReaderPacked();
+      fClusterFinder->SetReader(fReader);
+#else // ! defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
+      HLTFatal("DigitReaderPacked not available - check your build");
+      return -ENODEV;
+#endif //  defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
     }
     else {
-      fReaderUnpacked = new AliHLTTPCDigitReaderUnpacked();
-      fClusterFinder->SetReader(fReaderUnpacked);
+      fReader = new AliHLTTPCDigitReaderUnpacked();
+      fClusterFinder->SetReader(fReader);
     }
     
     // Variables to setup the Clusterfinder
@@ -150,14 +173,10 @@ int AliHLTTPCClusterFinderComponent::DoDeinit()
        delete fClusterFinder;
     fClusterFinder = NULL;
  
-    if ( fReaderUnpacked )
-       delete fReaderUnpacked;
-    fReaderUnpacked = NULL;
+    if ( fReader )
+       delete fReader;
+    fReader = NULL;
     
-    if ( fReaderPacked )
-       delete fReaderPacked;
-    fReaderPacked = NULL;
-
     return 0;
     }
 
index 6b7cd84..2a1f538 100644 (file)
@@ -19,7 +19,16 @@ class AliHLTTPCClusterFinder;
 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
     {
     public:
+        /**
+         * constructor 
+         * @param packed    whether to use the packed or unpacked reader 
+         */
        AliHLTTPCClusterFinderComponent(bool packed);
+       /** not a valid copy constructor, defined according to effective C++ style */
+       AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
+       /** not a valid assignment op, but defined according to effective C++ style */
+       AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
+       /** destructor */
        virtual ~AliHLTTPCClusterFinderComponent();
 
        // Public functions to implement AliHLTComponent's interface.
@@ -46,8 +55,7 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
     private:
 
       AliHLTTPCClusterFinder* fClusterFinder;
-      AliHLTTPCDigitReaderPacked* fReaderPacked;
-      AliHLTTPCDigitReaderUnpacked* fReaderUnpacked;
+      AliHLTTPCDigitReader* fReader;
       bool fClusterDeconv;
       float fXYClusterError;
       float fZClusterError;
index 278cd69..3ad77b0 100644 (file)
 using namespace std;
 #endif
 
+#if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
 #include "AliHLTTPCDigitReaderPacked.h"
 #include "AliTPCRawStream.h"
 #include "AliRawReaderMemory.h"
 #include "AliRawDataHeader.h"
 
-#include "AliHLTTPCLogging.h"
-
-#include <stdlib.h>
-#include <errno.h>
+#include "AliHLTStdIncludes.h"
 
 ClassImp(AliHLTTPCDigitReaderPacked)
 
@@ -87,3 +85,4 @@ int AliHLTTPCDigitReaderPacked::GetTime(){
   rtime = fTPCRawStream->GetTime();
   return rtime;
 }
+#endif //defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
index 0fd25ec..286d720 100644 (file)
 /* AliHLTTPCDigitReaderPacked
  */
 
+#include "AliHLTLogging.h"
 #include "AliHLTTPCDigitReader.h"
 
+#if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
+
 class AliRawReaderMemory;
 class AliTPCRawStream;
 
@@ -37,7 +40,16 @@ private:
   ClassDef(AliHLTTPCDigitReaderPacked, 0)
     
 };
-#endif
 
+#else
+// add a dummy class to make CINT happy
+class AliHLTTPCDigitReaderPacked : public AliHLTLogging{
+public:
+  AliHLTTPCDigitReaderPacked()
+  {
+    HLTFatal("AliHLTTPCDigitReaderPacked not build");
+  }
+};
+#endif //defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
 
+#endif
index 7f9c9e6..843f0c3 100644 (file)
@@ -358,6 +358,7 @@ void AliHLTTPCDisplay::SetupHist(){
 
 // ####################################################################################################
 void AliHLTTPCDisplay::FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLen){
+#if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
     AliHLTTPCDigitReaderPacked* fDigitReader = new AliHLTTPCDigitReaderPacked();
     bool readValue = true;
     Int_t rowOffset = 0;
@@ -503,6 +504,9 @@ void AliHLTTPCDisplay::FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLe
            fHistrawcl->Fill(xyz[1],xyz[2]);
        }
     }
+#else //! if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
+    HLTFatal("DigitReaderPacked not available - check your build");
+#endif //defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
 }
 
 // #############################################################################
index 17ab899..dc10177 100644 (file)
 #include <TCanvas.h>
 #include <TH2.h>
 #include <TGraph.h>
+#include "AliHLTLogging.h"
 
 class AliHLTTPCSpacePointData;
 class AliHLTTPCTrackArray;
 
-class AliHLTTPCDisplay : public TObject {
+class AliHLTTPCDisplay : public TObject, public AliHLTLogging {
 
  public:
     AliHLTTPCDisplay(Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom") {InitDisplay(gfile);}
index cf4f395..26ab19d 100644 (file)
@@ -3,13 +3,8 @@
 
 MODULE                                 = AliHLTTPC
 
-AM_CPPFLAGS                    = -I$(top_srcdir)/BASE       \
-                                 -I$(ALICE_ROOT)/include    \
-                                 -I$(ALICE_ROOT)/TPC        \
-                                 -I$(ALICE_ROOT)/CONTAINERS \
-                                 -I$(ALICE_ROOT)/STEER      \
-                                 -I$(ALICE_ROOT)/RAW
-
+AM_CPPFLAGS                    = @ALIROOT_CPPFLAGS@         \
+                                 -I$(top_srcdir)/BASE
 
 # library definition
 lib_LTLIBRARIES                        =  libAliHLTTPC.la
@@ -116,7 +111,9 @@ pkginclude_HEADERS          = $(CLASS_HDRS) \
 
 
 # version info for the library
-libAliHLTTPC_la_LDFLAGS        =  -version-info 2:0:0
+libAliHLTTPC_la_LDFLAGS                = @ALIROOT_LDFLAGS@ \
+                                 @ALIROOT_LIBS@ \
+                                 -version-info 2:0:0
 
 # set the file name for the generated root dictionary
 DICTCPP                                =  AliHLTTPC-DICT.cxx
index 39bf555..c8c8ac6 100644 (file)
@@ -5,7 +5,7 @@ dnl template for the configuration script for the Alice HLT
 dnl framework and components
 dnl 
 dnl ------------------------------------------------------------------
-AC_INIT([Alice High Level Trigger] , [0.2], [Matthias.Richter@ift.uib.no], alice-hlt)
+AC_INIT([Alice High Level Trigger] , [0.3-dev], [Matthias.Richter@ift.uib.no], alice-hlt)
 
 dnl ------------------------------------------------------------------
 dnl the package from CVS contains the old Makefiles as well. In order to
@@ -43,36 +43,166 @@ ALIHLT_USEPACKAGE=ALIROOT
 #ALIHLT_USEPACKAGE=STANDALONE
 AC_DEFINE(use_aliroot)
 AC_DEFINE(use_root)
-CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
-CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
 CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
 LDFLAGS="$LDFLAGS -L${ROOTLIBDIR} ${ROOTLIBS}"
 
 dnl ------------------------------------------------------------------
-dnl check for AliRoot
-dnl AC_LANG_PUSH(C++)
-dnl AC_MSG_CHECKING([for AliRoot])
-dnl have_aliroot=no
-dnl ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
-dnl ALIROOTINCDIR=${ALICE_ROOT}/include
-dnl if test "x$ALICE_ROOT" != "x" \
-dnl    && test -d ${ALIROOTLIBDIR} \
-dnl    && test -d ${ALIROOTINCDIR}; then
-dnl have_aliroot=yes
-dnl else
-dnl ALIROOTLIBDIR=
-dnl ALIROOTINCDIR=
-dnl fi
-dnl AC_MSG_RESULT([$have_aliroot])
-
-dnl if test ! "x$have_aliroot" = "x" ; then
-dnl CPPFLAGS="$CPPFLAGS -I${ALIROOTINCDIR}"
-dnl LDFLAGS="$LDFLAGS -L${ALIROOTLIBDIR} -lESD -lGeom -lMinuit -lVMC -lEG -lRAWData -ldl"
-dnl have_alisteer=no
-dnl AC_CHECK_LIB(STEER, [AliRun], [have_alisteer=yes])
-dnl fi
-dnl AC_LANG_POP(C++)
+dnl check for AliRoot features
+AC_LANG_PUSH(C++)
+AC_MSG_CHECKING([for AliRoot])
+have_aliroot=no
+with_aliroot=yes
+if test "x$with_aliroot" = "xyes" || test "x$with_aliroot" = "x" ; then
+  ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
+  ALIROOTINCDIR=${ALICE_ROOT}/include
+elif test "x$with_aliroot" != "xno" ; then
+  # TODO: think about the tgt_* subfolder
+  ALICE_ROOT="$with_aliroot"
+  ALIROOTLIBDIR="$ALICE_ROOT/lib"
+  ALIROOTINCDIR="$ALICE_ROOT/include"
+fi
+if test "x$ALICE_ROOT" != "x" \
+   && test -d ${ALIROOTLIBDIR} \
+   && test -d ${ALIROOTINCDIR}; then
+  have_aliroot=$ALICE_ROOT
+else
+  ALIROOTLIBDIR=
+  ALIROOTINCDIR=
+fi
+AC_MSG_RESULT([$have_aliroot])
+
+if test ! "x$have_aliroot" = "xno" ; then
+  # we check for the libSTEER library which is linked to
+  # - the ROOT libs libGeom libMinuit libVMC libEG
+  # - the AliRoot libESD libRAWData (libRAWDatarec from v4-04-Rev-07)
+  # - ROOT libCint needs also libdl
+  ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
+  ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
+  ALIROOT_LIBS="-lESD -lGeom -lMinuit -lVMC -lEG -ldl -lSTEER"
+  save_CPPFLAGS=$CPPFLAGS
+  save_LDFLAGS=$LDFLAGS
+  save_LIBS=$LIBS
+  CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+  LDFLAGS="$save_LDFLAGS $ALIROOT_LDFLAGS"
+  LIBS="$save_LIBS $ALIROOT_LIBS"
+  # check for certain AliRoot libraries/files/features
+  if test ! "x$have_aliroot" = "xno" ; then
+    # the RAWReader classe are needed by the TPCLib/AliHLTTPCDigitReaderPacket
+    # and by the STEER library. From version v4-04-Rev-07 on the RawReader classes
+    # are in libRAWDatarec, before in libRAWData
+    have_alirawdata=yes
+    AC_MSG_CHECKING(for AliRawReader classes in RAWData libraries)
+    if test ! "x$have_alirawdata" = "xno" ; then
+      CHECKLIB="-lRAWDatarec"
+      LIBS="$save_LIBS $ALIROOT_LIBS -lRAWDatabase $CHECKLIB"
+      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)])],
+                                      [AC_DEFINE(HAVE_ALIRAWDATA)
+                                      ALIROOT_LIBS="$ALIROOT_LIBS -lRAWDatabase $CHECKLIB"
+                                      have_alirawdata=$CHECKLIB], 
+                                     [have_alirawdata=no])
+      # second pass with -RAWData
+      if test "x$have_alirawdata" = "xno" ; then
+        CHECKLIB="-lRAWData"
+        LIBS="$save_LIBS $ALIROOT_LIBS $CHECKLIB"
+        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);])],
+                                        [AC_DEFINE(HAVE_ALIRAWDATA)
+                                      ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
+                                      have_alirawdata=$CHECKLIB], 
+                                     [have_alirawdata=no])
+      fi
+    fi
+    AC_MSG_RESULT($have_alirawdata)
+  fi
+
+  have_alisteer=yes
+  #AC_CHECK_HEADERS([AliRun.h],[have_alisteer=yes])
+  AC_MSG_CHECKING(for AliRun in -lSTEER)
+  if test "x$have_alisteer" = "xyes" ; then
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRun.h>], [AliRun aliroot])],
+                                    [AC_DEFINE(HAVE_ALISTEER)], 
+                                   [have_alisteer=no
+                                    have_aliroot=no])
+  fi
+  AC_MSG_RESULT($have_alisteer)
+
+  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
+    saveALIROOT_CPPFLAGS="$ALIROOT_CPPFLAGS"
+    ALIROOT_CPPFLAGS="$saveALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
+    CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+    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"
+      LIBS="$save_LIBS $ALIROOT_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)
+                                      saveALIROOT_CPPFLAGS=$ALIROOT_CPPFLAGS
+                                      saveALIROOT_LIBS=$ALIROOT_LIBS], 
+                                     [have_alitpc=no
+                                      ALIROOT_CPPFLAGS=$saveALIROOT_CPPFLAGS
+                                      ALIROOT_LIBS=$saveALIROOT_LIBS])
+    fi
+    AC_MSG_RESULT($have_alitpc)
+  fi
+
+  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])
+  fi
 
+  if test "x$have_aliroot" = "xno" ; then
+    ALIROOT_CPPFLAGS=
+    ALIROOT_LDFLAGS=
+    ALIROOT_LIBS=
+  fi
+  CPPFLAGS=$save_CPPFLAGS
+  LDFLAGS=$save_LDFLAGS
+  LIBS=$save_LIBS
+  if test ! "x$have_aliroot" = "xno" ; then
+    CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
+  fi
+fi
+AC_LANG_POP(C++)
+AC_SUBST([ALIROOT_CPPFLAGS])
+AC_SUBST([ALIROOT_LDFLAGS])
+AC_SUBST([ALIROOT_LIBS])
+CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
 
 dnl ------------------------------------------------------------------
 AC_MSG_CHECKING([whether to impose strict coding conventions])
@@ -105,6 +235,11 @@ 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"
+elif test "x$have_alitpc" = "xno" ; then
+   enable_tpc="no...requires.AliRoot.TPC.libraries"
+fi
 if test "x$enable_tpc" = "xyes" ; then 
   AC_DEFINE(HLT_TPC)
 fi
@@ -122,9 +257,9 @@ if test "x$enable_tpc" = "xyes" ; then
   if test "x$enable_tpcref" = "xyes" ; then 
     AC_DEFINE(HLT_TPCREF)
   fi
-  AM_CONDITIONAL(EN_HLT_TPCREF, test x$enable_tpcref = xyes)
   AC_MSG_RESULT([$enable_tpcref])
 fi
+AM_CONDITIONAL(EN_HLT_TPCREF, test x$enable_tpcref = xyes)
 
 dnl ------------------------------------------------------------------
 AC_MSG_CHECKING([whether to enable HLT logging])
index 9dcb2c5..edfb90c 100644 (file)
@@ -22,7 +22,7 @@ $(DICTCPP:.cxx=.h): $(DICTCPP)
        if test $@ ; then : ; else rm -f $< ; $(MAKE) $(MAKEFLAGS) $< ; fi 
 
 $(DICTCPP): $(DICTHEADERS:%=$(srcdir)/%) $(DICTDEF)
-       if [ -x $(ROOTCINT) ]; then $(ROOTCINT) -f $@ -c $(AM_CPPFLAGS) $(DEFS) $^ ; fi
+       if [ -x $(ROOTCINT) ]; then $(ROOTCINT) -f $@ -c $(CPPFLAGS) $(AM_CPPFLAGS) $(DEFS) $^ ; fi
 $(DICTDEF): Makefile.am
        @echo '//automatically generated ROOT DICT definition' > $@
        @echo '//!!! DO NOT EDIT THIS FILE !!!' >> $@