]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/configure.ac
making the HLT build system working again: adding libXMLParser to the list of require...
[u/mrichter/AliRoot.git] / HLT / configure.ac
1 dnl -*- mode: autoconf -*- 
2 dnl
3 dnl $Id$
4 dnl template for the configuration script for the Alice HLT 
5 dnl framework and components
6 dnl 
7 dnl ------------------------------------------------------------------
8
9 dnl Take either the AliRoot tag as version id or the current revision
10 AC_INIT([Alice High Level Trigger] , 
11         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`; \
12                     revision=`svn info 2> /dev/null | grep "Revision:" | cut -d ' ' -f 2 | cut -d '/' -f 4`; \
13                     if test "x$url" != "x"; then echo -n $url; \
14                     elif test "x$revision" != "x"; then echo -n $revision ; \
15                     elif test -e .revision && test x`cat .revision` != x; then \
16                        cat .revision; \
17                     else \
18                        echo -n invalid-version; \
19                     fi]),
20         [Matthias.Richter@ift.uib.no], 
21         [alice-hlt])
22
23 dnl ------------------------------------------------------------------
24 dnl the package from CVS contains the old Makefiles as well. In order to
25 dnl prevent them from becoming overwritten, we require a separate build
26 dnl directory
27 if test "`dirname $0`" = "." ; then
28    AC_ERROR([please run the script from a separate build directory])
29 fi
30
31 dnl ------------------------------------------------------------------
32 AC_CANONICAL_SYSTEM
33 AC_PREFIX_DEFAULT(${PWD})
34 AC_CONFIG_SRCDIR(BASE/AliHLTComponent.cxx)
35 AM_INIT_AUTOMAKE
36 AC_PROG_CC
37 AC_PROG_CXX
38 AC_PROG_LIBTOOL
39
40 AC_DEBUG
41 AC_OPTIMIZATION
42 AM_CONDITIONAL(STANDALONE_SAMPLELIB, test 0 )
43
44 dnl ------------------------------------------------------------------
45 dnl A warning posted into the auto-generated files
46 dnl Does NOT concern this file ;-)
47 AUTOGENERATED_WARNING="!!!!!!!    DO NOT EDIT THIS FILE !!!!!!"
48 AC_SUBST([AUTOGENERATED_WARNING])
49
50 dnl ------------------------------------------------------------------
51 dnl
52 dnl Check for ROOT
53 dnl
54 ROOT_PATH(, [have_root=1], [AC_ERROR([Stop! The HLT package needs ROOT.])])
55 AM_CONDITIONAL(HAVE_ROOT, test "x$have_root" = "x1" )
56 AC_SUBST([ROOTSYS])
57 ROOTBINDIR=`dirname $ROOTEXEC`
58 AC_SUBST([ROOTBINDIR])
59
60 dnl test for additional required root libraries and headers
61 LIBS='-ldl'
62 if test "x$have_root" = "x1"; then
63   AC_LANG_PUSH(C++)
64   save_CPPFLAGS=$CPPFLAGS
65   save_LDFLAGS=$LDFLAGS
66   save_LIBS=$LIBS
67   CPPFLAGS=`echo $save_CPPFLAGS; for i in ${ROOTINCDIR}; do echo -n "-I$i " ; done`
68   
69   # we check for the libSTEER library which is linked to
70   # - the ROOT libs libGeom libMinuit libVMC libEG
71   # - the AliRoot libESD libRAWData (libRAWDatarec from v4-04-Rev-07)
72   # - ROOT libCint needs also libdl
73   # - from Nov 1 2006 TTreeFormula is needed by AliTagAnalysis and requires
74   #   libTreePlayer.so
75   # - from Jan 07 libESD also depends on libXMLIO
76   # - libSTEER depends on libProofPlayer since Oct 2007 (after v4-07-Release)
77   # - libCDB.so depends on libXMLParser since Mar 11 2009 r 31411
78   ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO Thread Proof ProofPlayer XMLParser'
79   for CHECKLIB in $ROOT_CHECKLIBS ; do
80     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
81     LIBS="$save_LIBS $ROOTLIBS $ADD_ROOTLIBS"
82     AC_CHECK_LIB([$CHECKLIB],[_init], [ADD_ROOTLIBS="$ADD_ROOTLIBS -l$CHECKLIB"])
83   done
84
85   # TBuffer.h has been made pure virtual in root v5-15-02 and one
86   # has to derive from TBufferFile.h (needed for BASE/AliHLTMessage.h)
87   AC_CHECK_HEADER([TBufferFile.h], [], [HAVE_NOT_TBUFFERFILE])
88
89   # TView.h has been made pure virtual right after root v5-15-02 and one
90   # has to derive from TView3D.h (needed for TPCLib/OnlineDisplay/AliHLTTPCDisplay3D)
91   AC_CHECK_HEADER([TView3D.h], [], [HAVE_NOT_TVIEW3D])
92
93   CPPFLAGS=$save_CPPFLAGS
94   LDFLAGS=$save_LDFLAGS
95   LIBS=$save_LIBS
96   AC_LANG_POP(C++)
97 fi
98
99 dnl ------------------------------------------------------------------
100 # TODO: make this configurable through arguments
101 #Define whether you want to run with ALIROOT or only ROOT
102 AH_TEMPLATE([ALIHLT_USEPACKAGE],[running environment])
103 ALIHLT_USEPACKAGE=ALIROOT
104 #ALIHLT_USEPACKAGE=ROOT
105 #ALIHLT_USEPACKAGE=STANDALONE
106 AC_DEFINE(use_aliroot)
107 AC_DEFINE(use_root)
108 CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
109 save_CPPFLAGS=$CPPFLAGS
110 save_LDFLAGS=$LDFLAGS
111 save_LIBS=$LIBS
112
113 dnl ------------------------------------------------------------------
114 dnl check for AliRoot features
115 AC_LANG_PUSH(C++)
116 have_aliroot=no
117 AC_ARG_WITH(aliroot,[  --with-aliroot   top of the AliRoot installation],
118                     [test -d $with_aliroot && ALICE_ROOT=$with_aliroot],
119                     [])
120
121 if test "x$ALICE_ROOT" != "x" && test -d $ALICE_ROOT ; then
122   dnl ------------------------------------------------------------------
123   dnl Try to estimate the system architecture
124   case $host_os:$host_cpu in
125   linux*:x86_64*)       alice_target='linuxx8664gcc'            ;;
126   linux*)               alice_target='linux'                    ;;
127   *)                    alice_target='unknown'                  ;;
128   esac
129   if test "x$alice_target" = "xunknown" ; then
130     if test -z $ALICE_TARGET ; then
131     AC_MSG_ERROR([Can not estimate system architecture.
132     To avoid the problem, set the ALICE_TARGET variable appropriately.
133     Please send the following information to Matthias.Richter@ift.uib.no:
134         ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
135     else
136     AC_MSG_NOTICE([Unknown system architecture.
137     Please send the following information to Matthias.Richter@ift.uib.no:
138         ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])  
139     fi
140   else
141     if test "x$ALICE_TARGET" != "x" && test "x$ALICE_TARGET" != "x$alice_target" ; then
142     AC_MSG_WARN([The ALICE_TARGET variable does not match your current system
143     overriding $ALICE_TARGET by $alice_target])
144     fi
145     ALICE_TARGET=$alice_target
146   fi
147   ALIROOTBINDIR=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}
148   ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
149   ALIROOTINCDIR=${ALICE_ROOT}/include
150   test -d ${ALIROOTBINDIR} || AC_MSG_WARN([can not find AliRoot binary directory $ALIROOTBINDIR])
151   test -d ${ALIROOTLIBDIR} || AC_MSG_WARN([can not find AliRoot library directory $ALIROOTLIBDIR])
152   test -d ${ALIROOTINCDIR} || AC_MSG_WARN([can not find AliRoot include directory $ALIROOTINCDIR])
153 fi
154
155 AC_MSG_CHECKING([for AliRoot])
156 if test "x$ALICE_ROOT" != "x" \
157    && test -d ${ALIROOTBINDIR} \
158    && test -d ${ALIROOTLIBDIR} \
159    && test -d ${ALIROOTINCDIR}; then
160   have_aliroot=$ALICE_ROOT
161 else
162   ALIROOTBINDIR=
163   ALIROOTLIBDIR=
164   ALIROOTINCDIR=
165 fi
166 AC_MSG_RESULT([$have_aliroot])
167
168 if test ! "x$have_aliroot" = "xno" ; then
169   ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
170   ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
171   ALIROOT_LIBS="$ADD_ROOTLIBS"
172   save_CPPFLAGS=$CPPFLAGS
173   save_LDFLAGS=$LDFLAGS
174   save_LIBS=$LIBS
175   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
176   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
177   
178   # check for certain AliRoot libraries/files/features
179   # libSTEERBase present since Aug 7 2007
180   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
181   CHECKLIB=STEERBase
182   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
183
184   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
185   CHECKLIB=AOD
186   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
187
188   # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
189   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
190   CHECKLIB=CDB
191   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
192
193   # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
194   have_alirawdata=no
195   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
196   CHECKLIB=RAWDatabase
197   AC_CHECK_LIB([$CHECKLIB],[_init],
198         [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
199          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lESD -lSTEER"
200          CHECKLIB=RAWDatarec
201          AC_CHECK_LIB([$CHECKLIB],[_init],
202                [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
203                 have_alirawdata=$CHECKLIB])],
204         [# second pass with -RAWData
205          CHECKLIB="-lRAWData"
206          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
207          AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
208                                        #include <AliRawReaderFile.h>
209                                        #include <AliRawReaderDate.h>
210                                        #include <AliRawReaderRoot.h>], 
211                                      [AliRawReaderMemory mreader;
212                                        AliRawReaderFile freader;
213                                        AliRawReaderDate dreader(NULL,0);
214                                        AliRawReaderRoot rreader(NULL,0);])],
215                                      [ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
216                                        have_alirawdata=$CHECKLIB], 
217                                       [have_alirawdata=no])
218         ]) dnl AC_CHECK_LIB RAWDatabase
219   AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
220   AC_MSG_RESULT([$have_alirawdata])
221
222   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
223   CHECKLIB=ESD
224   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
225
226   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
227   CHECKLIB=STEER
228   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],[have_aliroot=no])
229
230   dnl
231   dnl check whether AliLog supports notification callback
232   dnl
233   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
234   have_alilog_notification=no
235   if test ! "x$have_aliroot" = "xno" ; then
236   AC_MSG_CHECKING([whether AliLog supports notification callback])
237   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliLog.h>], 
238                                   [AliLog::AliLogNotification fct])],
239                                   [have_alilog_notification=yes], 
240                                   [AC_DEFINE(NO_ALILOG_NOTIFICATION)])
241   AC_MSG_RESULT([$have_alilog_notification])
242   fi
243
244   if test "x$have_aliroot" = "xno" ; then
245     # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
246     # but library dependencies might not be resolved completely
247     #ALIROOT_CPPFLAGS=
248     AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
249     This can happen from time to time due to development in AliRoot. You can
250     force compilation of detector libs by --enable-<detector>, but be aware
251     of unresolved references at runtime.])
252     AC_MSG_WARN([       ------------------------------------------ ])
253     AC_MSG_WARN([       Report this to $PACKAGE_BUGREPORT ])
254     AC_MSG_WARN([       please include config.log                  ])
255     AC_MSG_WARN([       ------------------------------------------ ])
256     ALIROOT_LDFLAGS=
257     ALIROOT_LIBS=
258   fi
259
260   dnl
261   dnl ESD supports non-std content
262   dnl
263   have_esd_nonstd=no
264   AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>
265                                    #include <AliExternalTrackParam.h>
266                                    #include <TTree.h>
267                                    #include <TClonesArray.h>],
268                                   [AliESDEvent esd;
269                                    esd.CreateStdContent();
270                                    TTree* tree=new TTree("esdTree", "Tree with HLT ESD objects");
271                                    TClonesArray* a=new TClonesArray("AliExternalTrackParam");
272                                    a->SetName("SomeObject");
273                                    esd.AddObject(a);
274                                    esd.WriteToTree(tree);
275                                    if (!tree->FindBranch("SomeObject")) return 1;
276                                    return 0;])],
277                  [have_esd_nonstd=yes], 
278                  [AC_DEFINE(HAVE_NOT_ESD_NONSTD)])
279   AC_MSG_CHECKING(whether ESD supports non standard content)
280   AC_MSG_RESULT([$have_esd_nonstd])
281
282   dnl
283   dnl ESD copy function added May 9 2008 rev 25667
284   dnl
285   if test "x$have_esd_nonstd" != "xyes"; then
286   have_esd_copy=no
287   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>],
288                                   [AliESDEvent esd1;
289                                    AliESDEvent esd2;
290                                    esd2=esd1;])],
291                  [have_esd_copy=yes], 
292                  [AC_DEFINE(HAVE_NOT_ESD_COPY)])
293   AC_MSG_CHECKING(for ESD assignment operator)
294   AC_MSG_RESULT([$have_esd_copy])
295   fi
296
297   dnl
298   dnl AliRawReaderMemory support for multiple buffers added
299   dnl revision 26829 Jun 2008
300   dnl
301   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/RAW"
302   have_rawreadermemory_multbuffers=no
303   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>],
304                                   [AliRawReaderMemory rr;
305                                    rr.AddBuffer(NULL, 0, 0);])],
306                  [have_rawreadermemory_multbuffers=yes], 
307                  [AC_DEFINE(HAVE_NOT_ALIRAWREADERMEMORY_ADDBUFFER)])
308   AC_MSG_CHECKING(AliRawReaderMemory support for multiple buffers)
309   AC_MSG_RESULT([$have_rawreadermemory_multbuffers])
310
311   dnl
312   dnl required header files and libraries for modules
313   dnl
314
315   dnl
316   dnl Check for the interface of AliExternalTrackParam which has been changed
317   dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04
318   dnl or higher)
319   externaltrackparam_version=1
320   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliExternalTrackParam.h>], 
321                                   [AliExternalTrackParam trackparam;
322                                    Double_t param[[5]]; Double_t covar[[15]];
323                                    trackparam.Set(0., 0., param, covar);])],
324                                   [externaltrackparam_version=2],
325                                   [AC_DEFINE(EXTERNALTRACKPARAM_V1)])
326   AC_MSG_CHECKING(for version of AliExternalTrackParam)
327   AC_MSG_RESULT($externaltrackparam_version)
328
329   dnl The AliShuttleInterface was changed in rev 29388. Some return types
330   dnl had been const, now changed according to gcc 4.3 warnings 
331   AC_MSG_CHECKING(for version of AliShuttleInterface.h)
332     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/"
333     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
334     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
335     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliShuttleInterface.h>],
336                                     [class dummy : public AliShuttleInterface {
337                                      public:
338                                        const UInt_t GetStartTimeDCSQuery() {;}
339                                      };])],
340                                     [AC_DEFINE(SHUTTLE_PRE_REV29388_INTERFACE)
341                                      alishuttleinterface_version=pre.rev.29388],
342                                     [alishuttleinterface_version=up.to.date])
343   AC_MSG_RESULT([$alishuttleinterface_version])
344
345   CPPFLAGS=$save_CPPFLAGS
346   LDFLAGS=$save_LDFLAGS
347   LIBS=$save_LIBS
348 fi # if test ! "x$have_aliroot" = "xno"
349
350 AC_LANG_POP(C++)
351 AC_SUBST([ALICE_ROOT])
352 AC_SUBST([ALIROOT_CPPFLAGS])
353 AC_SUBST([ALIROOT_LDFLAGS])
354 AC_SUBST([ALIROOTBINDIR])
355 AC_SUBST([ALIROOTLIBDIR])
356 AC_SUBST([ALIROOT_LIBS])
357 AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
358
359 HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
360 HLTBASE_LDFLAGS=
361 AC_SUBST([HLTBASE_CPPFLAGS])
362 AC_SUBST([HLTBASE_LDFLAGS])
363
364 dnl ------------------------------------------------------------------
365 dnl check for the HLT PubSub Framework
366 dnl namely for the existence of the HOMER library
367 dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
368 dnl package. It os though possible to choose an external. library
369 dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
370 dnl got the name libAliHLTHOMER
371 AC_MSG_CHECKING([for HLT PubSub Framework])
372 AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
373                     [],
374                     [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
375 if test -z $with_pubsub || ! test -d $with_pubsub ; then
376   with_pubsub=no
377 fi
378 AC_MSG_RESULT([$with_pubsub])
379 HOMER_VERSION=2
380 HOMER_LIBS=
381
382 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
383 if test "x$with_pubsub" != "xno" ; then
384   save_CPPFLAGS=$CPPFLAGS
385   save_LDFLAGS=$LDFLAGS
386   save_LIBS=$LIBS
387   # currently the different versions of the HLT PubSub framework have a different
388   # directory layout
389   if test -d ${with_pubsub}/include/HOMER ; then
390     # the 'early' location of the include files with separated HOMER sub dirs
391     HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
392   elif test -d ${with_pubsub}/include/Util/HOMER ; then
393     # location for HLT Framework versions after Sep 2006
394     HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
395   elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
396     # fall back if include files were not installed (versions after Sep 06)
397     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
398   else
399     # fall back if include files were not installed (versions before Sep 06)
400     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
401   fi
402   HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
403
404   AC_ARG_ENABLE(pubsub-debug,
405     [AC_HELP_STRING([--disable-pubsub-debug],
406         [force the production version of the PubSub framework])],
407     [],[enable_pubsub_debug=yes])
408   homer_type="none"
409   HOMER_TARGET="`uname -s`-`uname -m`"
410   AC_MSG_CHECKING([for HLT PubSub Framework release type])
411   if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
412     homer_type="production"
413     HOMER_TARGET="${HOMER_TARGET}-release"
414   elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
415     homer_type="debug"
416     HOMER_TARGET="${HOMER_TARGET}-debug"
417   fi
418   AC_MSG_RESULT([${homer_type}])
419   HOMERREADER_HEADER=HOMERReader.h
420   HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
421   HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
422   HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
423   CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
424   LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
425   LIBS="$save_LIBS "
426   with_homer=no
427   AC_LANG_PUSH(C++)
428   AC_CHECK_HEADER([$HOMERREADER_HEADER],
429     [ AC_CHECK_LIB([HOMER],[_init],
430       [with_homer=yes
431        HOMER_LIBS="-lHOMER"],
432       [ AC_CHECK_LIB([HOMERReader],[_init],
433                      [with_homer=yes
434                       HOMER_LIBS="-lHOMERReader"])])
435       LIBS="$LIBS $HOMER_LIBS"
436       AC_MSG_CHECKING([version of HOMER library])
437       dnl The Homer library has no versioning, so we do our own
438       dnl version           description
439       dnl ----------------------------------------------------------------------
440       dnl   1          inintial version
441       dnl   2          GetBlockStatusFlags added to the interface
442       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
443                                       [HOMERReader reader("dummy", 0);
444                                        reader.GetBlockStatusFlags(0);])],
445                                       [],
446                                       [HOMER_VERSION=1])
447       AC_MSG_RESULT([$HOMER_VERSION])
448   ],
449   [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
450   AC_LANG_POP(C++)
451   HOMER_INBUILT_LIB=
452 else
453 dnl no pubsub version defined, check if the HOMER lib is available in AliRoot
454   topdir=`dirname $0`
455   HOMER_CPPFLAGS="-I`(cd $topdir; pwd)`/BASE/HOMER"
456   HOMERREADER_HEADER=AliHLTHOMERReader.h
457   HOMER_INBUILT_LIB=`pwd`/BASE/HOMER/libAliHLTHOMER.la
458   HOMER_BINDIR=
459   HOMER_LIBDIR=
460   HOMER_LDFLAGS=
461 fi
462
463   if test "x$with_homer" = "xno" ; then
464     HOMER_CPPFLAGS=
465     HOMER_LDFLAGS=
466     HOMER_LIBS=
467   else
468     HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
469     AC_DEFINE(HAVE_HOMERREADER)
470   fi
471   CPPFLAGS="$save_CPPFLAGS"
472   LDFLAGS="$save_LDFLAGS"
473   LIBS="$save_LIBS"  
474
475 AC_SUBST([HOMERREADER_HEADER])
476 AC_SUBST([HOMER_INBUILT_LIB])
477 AC_SUBST([HOMER_CPPFLAGS])
478 AC_SUBST([HOMER_LDFLAGS])
479 AC_SUBST([HOMER_LIBDIR])
480 AC_SUBST([HOMER_BINDIR])
481 AC_SUBST([HOMER_LIBS])
482
483 dnl ------------------------------------------------------------------
484 AC_ARG_ENABLE(all,
485   [AC_HELP_STRING([--disable-all],
486       [disable all detector modules, individual modules can be switched on by --enable-det])],
487   [disable_all=yes],[])
488
489 dnl ------------------------------------------------------------------
490 AC_MSG_CHECKING([whether to impose strict coding conventions])
491 AC_ARG_ENABLE(strict,
492   [AC_HELP_STRING([--disable-strict],
493       [disable coding convention checks ])],
494   [],[enable_strict=yes])
495 if test "x$enable_strict" = "xyes" ; then
496    CPPFLAGS="$CPPFLAGS -W -Weffc++ -Wall -Wshadow"
497 fi
498 AC_MSG_RESULT([$enable_strict])
499
500 dnl ------------------------------------------------------------------
501 AC_MSG_CHECKING([whether to enable component statistics])
502 AC_ARG_ENABLE(component-stat,
503   [AC_HELP_STRING([--enable-component-stat],
504       [enable component statistics ])],
505   [],[enable_component_stat=no])
506 if test "x$enable_component_stat" = "xyes" ; then
507    AC_DEFINE(HLT_COMPONENT_STATISTICS)
508 fi
509 AC_MSG_RESULT([$enable_component_stat])
510
511 dnl ------------------------------------------------------------------
512 dnl ----  module checks
513 dnl ------------------------------------------------------------------
514 save_CPPFLAGS=$CPPFLAGS
515 save_LDFLAGS=$LDFLAGS
516 save_LIBS=$LIBS
517
518 dnl ------------------------------------------------------------------
519 AC_MSG_CHECKING([whether to compile sample library])
520 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
521 AC_ARG_ENABLE(sample,
522   [AC_HELP_STRING([--disable-sample],
523       [compile the sample library ])],
524   [],
525   [if test "x$have_aliroot" = "xno" ; then
526      enable_sample="no...requires.AliRoot"
527    else
528      enable_sample=yes
529    fi
530   ])
531
532 if test "x$enable_sample" = "xyes" ; then 
533   AC_DEFINE(HLT_SAMPLE)
534 fi
535 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
536 AC_MSG_RESULT([$enable_sample])
537
538 dnl ------------------------------------------------------------------
539 AC_MSG_CHECKING([whether to compile util library])
540 AH_TEMPLATE([HLT_UTIL],[HLT utility library])
541 AC_ARG_ENABLE(util,
542   [AC_HELP_STRING([--disable-util],
543       [compile the util library ])],
544   [],
545   [if test "x$have_aliroot" = "xno" ; then
546      enable_util="no...requires.AliRoot"
547    else
548      enable_util=yes
549    fi
550   ])
551
552 if test "x$enable_util" = "xyes" ; then 
553   AC_DEFINE(HLT_UTIL)
554 fi
555 AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
556 AC_MSG_RESULT([$enable_util])
557
558 dnl ------------------------------------------------------------------
559 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
560
561 ALITPC_LIBS=
562 CHECK_HLTMODULE([tpc],
563                 [AliTPCRawStream.h], 
564                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
565                 [Gui ANALYSIS STAT], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
566                 [TPCbase TPCrec TPCcalib], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
567                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
568
569 if test "x$enable_module" = "xmissheader"; then
570   enable_module="no...missing.headers"
571   enable_tpc=$enable_module
572 elif test "x$enable_module" = "xforce"; then
573   enable_tpc="yes"
574 else
575   enable_tpc=$enable_module
576 fi
577
578 if test "x$enable_tpc" = "xyes" ; then 
579   AC_LANG_PUSH(C++)
580   AC_DEFINE(HLT_TPC)
581   ALITPC_LIBS=$ALIHLTMODULE_LIBS
582   dnl
583   dnl Check for functionality in the TPC reconstruction required for online
584   dnl processing
585   dnl 
586   have_tpc_hltoffline_rec=no
587   AC_MSG_CHECKING(for on-line features of TPC offline reconstruction)
588     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
589     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
590     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
591     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliTPCtrackerMI.h>
592                                        #include <AliTPCclustererMI.h>   
593                                        #include <TObjArray.h>], 
594                                     [AliTPCtrackerMI tracker;
595                                        TObjArray* array=NULL;
596                                        tracker.LoadClusters(array);
597                                        AliTPCclustererMI cl(NULL, NULL);
598                                        cl.GetOutputClonesArray();])],
599                                     [have_tpc_hltoffline_rec=yes], 
600                                       [AC_DEFINE(HAVE_NOT_TPCOFFLINE_REC)])
601     LIBS=$save_LIBS
602   AC_MSG_RESULT([$have_tpc_hltoffline_rec])
603
604   AC_CHECK_HEADER([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
605   AC_CHECK_HEADER([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
606
607   have_tpc_mapping=no
608   if test ! "x$have_aliroot" = "xno" ; then
609     # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC 
610     # which is stored in the TPC/mapping/Patchx.data files from
611     # AliRoot version v4-04-Release (May 2006)
612     AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
613     TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
614     AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data], 
615                    [have_tpc_mapping=yes
616                     AC_SUBST(TPC_PAD_MAPPING_PATH)
617                     AC_DEFINE(HAVE_TPC_MAPPING)],
618                    [])
619     
620   fi
621   AC_MSG_CHECKING([for TPC mapping layout])
622   AC_MSG_RESULT([$have_tpc_mapping])
623   AC_LANG_POP(C++)
624
625 else
626   enable_module=$enable_tpc
627 fi
628 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
629 AC_MSG_CHECKING([whether to compile TPC library])
630 AC_MSG_RESULT([$enable_module])
631 AC_SUBST([ALITPC_LIBS])
632
633 dnl ------------------------------------------------------------------
634 AH_TEMPLATE([HLT_RCU],[hlt rcu library])
635
636 CHECK_HLTMODULE([rcu],
637                 [AliAltroDecoder.h], 
638                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
639                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
640                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
641                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
642
643 if test "x$enable_module" = "xmissheader"; then
644   enable_module="no...missing.headers"
645   enable_rcu=$enable_module
646 elif test "x$enable_module" = "xforce"; then
647   enable_rcu="yes"
648 else
649   AC_LANG_PUSH(C++)
650   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
651   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
652   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
653   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
654                                   [AliAltroDecoder decoder;
655                                   decoder.CopyBackward(NULL, 0);])],
656                                   [enable_rcu=$enable_module], 
657                                   [enable_module="no...requires.AliRoot>v4-10-Release"
658                                    enable_rcu="no...requires.AliRoot>v4-10-Release"])
659   CPPFLAGS=$save_CPPFLAGS
660   LDFLAGS=$save_LDFLAGS
661   LIBS=$save_LIBS
662   AC_LANG_POP(C++)
663 fi
664
665 if test "x$enable_rcu" = "xyes" ; then 
666   AC_DEFINE(HLT_RCU)
667 else
668   enable_module=$enable_rcu
669 fi
670 AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
671 AC_MSG_CHECKING([whether to compile RCU library])
672 AC_MSG_RESULT([$enable_module])
673 AC_SUBST([ALIRCU_LIBS])
674
675 dnl ------------------------------------------------------------------
676 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
677   
678 ALIPHOS_LIBS=
679 CHECK_HLTMODULE([phos],
680                 [], [$ALIROOT_CPPFLAGS],
681                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
682                 [PHOSUtils PHOSbase PHOSrec PHOSsim PHOSshuttle], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
683                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
684
685 if test "x$enable_module" = "xmissheader"; then
686   enable_module="no...requires.AliRoot>v4-05-07"
687   enable_phos=$enable_module
688 elif test "x$enable_module" = "xforce"; then
689   enable_phos="yes"
690 else
691   have_alicalorawstream=no
692   if test ! "x$have_aliroot" = "xno" ; then
693     AC_LANG_PUSH(C++)
694     save_CPPFLAGS="$CPPFLAGS"
695     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
696     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
697     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/PHOS"
698     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
699     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
700                                         #include <AliCaloRawStream.h>], 
701                                        [int i])],
702                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
703                                         have_alicalorawstream=yes], 
704                                        [])
705     AC_MSG_RESULT([$have_aliphosrecoparam])
706     AC_MSG_CHECKING([for required EMC functionality in AliPHOSRecoParam.h ])
707     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliPHOSRecoParam.h>], 
708                                        [AliPHOSRecoParam param;
709                                         param.GetEMCClusteringThreshold()])],
710                                        [have_aliphosrecoparam=yes], 
711                                        [AC_DEFINE(HAVE_NOT_PHOSRECOPARAMEMC)])
712     AC_MSG_RESULT([$have_alicalorawstream])
713     AC_LANG_POP(C++)
714     CPPFLAGS="$save_CPPFLAGS"
715   fi
716   if test "x$have_alicalorawstream" != "xyes"; then
717     enable_phos="no...requires.AliRoot>v4-05-07"
718   else
719     enable_phos=$enable_module
720   fi
721 fi
722
723 if test "x$enable_phos" = "xyes" ; then 
724   AC_DEFINE(HLT_PHOS)
725   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
726 else
727   enable_module=$enable_phos
728 fi
729 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
730 AC_MSG_CHECKING([whether to compile PHOS library])
731 AC_MSG_RESULT([$enable_module])
732 AC_SUBST([ALIPHOS_LIBS])
733
734 dnl ------------------------------------------------------------------
735 AH_TEMPLATE([HLT_TRD],[hlt trd library])
736   
737 ALITRD_LIBS=
738 CHECK_HLTMODULE([trd],
739                 [], [],
740                 [MLP XMLParser], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
741                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
742                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
743
744 if test "x$enable_module" = "xmissheader"; then
745   enable_module="no...requires.AliRoot>v4-07-Release"
746   enable_trd=$enable_module
747 elif test "x$enable_module" = "xforce"; then
748   enable_trd="yes"
749 else
750   enable_trd=$enable_module
751   if test "x$enable_trd" = "xyes" ; then
752     AC_LANG_PUSH(C++)
753     save_CPPFLAGS="$CPPFLAGS"
754     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
755     # AliTRDclusterizer::SetRawVersion() requires >v4-07-Release
756     # changed to AliTRDrecoParam::SetSeedingOn() due to revision 26327, Mon Jun 2 2008
757     # changed to AliTRDReconstructor::SetStreamLevel() due to revision 27797, Tue Aug 5 2008
758     # changed to AliTRDReconstructor::SetClusters() according to revision 28069, Mon Aug 18 2008
759     # changed to AliTRDCluster according to revision 30461, Thu Dec 18 2008
760     AC_MSG_CHECKING([for required functions in AliTRDCluster])
761     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDcluster.h>], 
762                                        [AliTRDcluster c;
763                                        c.SetDetector(0)])],
764                                        [], 
765                                        [enable_trd="no...requires.AliRoot>v4-16-Release"])
766     AC_MSG_RESULT([$enable_trd])       
767     AC_LANG_POP(C++)
768     CPPFLAGS="$save_CPPFLAGS"
769   fi
770 fi
771
772 if test "x$enable_trd" = "xyes" ; then 
773   AC_DEFINE(HLT_TRD)
774   ALITRD_LIBS=$ALIHLTMODULE_LIBS
775 else
776   enable_module=$enable_trd
777 fi
778 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
779 AC_MSG_CHECKING([whether to compile TRD library])
780 AC_MSG_RESULT([$enable_module])
781 AC_SUBST([ALITRD_LIBS])
782
783 dnl ------------------------------------------------------------------
784 AH_TEMPLATE([HLT_FMD],[hlt fmd library])
785
786 ALIFMD_LIBS=$ALIHLTMODULE_LIBS
787 CHECK_HLTMODULE([fmd],
788                 [], [],
789                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
790                 [FMDbase FMDrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS],
791                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
792
793 if test "x$enable_module" = "xmissheader"; then
794   enable_module="no...missing.headers"
795   enable_fmd=$enable_module
796 elif test "x$enable_module" = "xforce"; then
797   enable_fmd="yes"
798 else
799   enable_fmd=$enable_module
800 fi
801
802 if test "x$enable_fmd" = "xyes" ; then
803   AC_DEFINE(HLT_FMD)
804   ALIFMD_LIBS=$ALIHLTMODULE_LIBS
805 else
806   enable_module=$enable_fmd
807 fi
808 AM_CONDITIONAL(EN_HLT_FMD, test x$enable_fmd = xyes)
809 AC_MSG_CHECKING([whether to compile FMD library])
810 AC_MSG_RESULT([$enable_module])
811 AC_SUBST([ALIFMD_LIBS])
812
813 dnl ------------------------------------------------------------------
814 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
815
816 ALIMUON_LIBS=
817 CHECK_HLTMODULE([dimuon],
818                 [AliMpExMap.h AliMUONTriggerIO.h], 
819                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
820                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
821                 [MUONcore MUONraw MUONbase MUONgeometry MUONmapping MUONcalib MUONsim MUONtrigger MUONevaluation MUONrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
822                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
823
824 if test "x$enable_module" = "xmissheader"; then
825   enable_module="no...requires.AliRoot>=v4-08-Release"
826   enable_muon=$enable_module
827 elif test "x$enable_module" = "xforce"; then
828   enable_muon="yes"
829 else
830   enable_muon=$enable_module
831 fi
832
833 if test "x$enable_muon" = "xyes" ; then 
834   AC_DEFINE(HLT_MUON)
835   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
836   AC_LANG_PUSH(C++)
837   save_CPPFLAGS="$CPPFLAGS"
838
839   dnl
840   dnl Check for functionality GetRawStream AliMUONDigitMaker.h
841   dnl 
842   have_muon_digitmaker_getrawstream=no
843   AC_MSG_CHECKING(for GetRawStream methods of AliMUONDigitMaker)
844     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON"
845     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
846     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALIMUON_LIBS"
847     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMUONDigitMaker.h>], 
848                                     [AliMUONDigitMaker dm;
849                                        dm.GetRawStreamTracker();])],
850                                     [have_muon_digitmaker_getrawstream=yes], 
851                                       [AC_DEFINE(HAVE_NOT_MUON_DIGITMAKER_GETRAWSTREAM)])
852     LIBS=$save_LIBS
853   AC_MSG_RESULT([$have_muon_digitmaker_getrawstream])
854   CPPFLAGS="$save_CPPFLAGS"
855
856   AC_LANG_POP(C++)
857 else
858   enable_module=$enable_muon
859 fi
860 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
861 AC_MSG_CHECKING([whether to compile MUON library])
862 AC_MSG_RESULT([$enable_module])
863 AC_SUBST([ALIMUON_LIBS])
864
865 dnl ------------------------------------------------------------------
866 AH_TEMPLATE([HLT_TRIGGER],[hlt trigger library])
867
868 ALITRIGGER_LIBS=
869 CHECK_HLTMODULE([trigger],
870                 [], [$ALIROOT_CPPFLAGS],
871                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
872                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
873                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
874
875 if test "x$enable_module" = "xmissheader"; then
876   enable_module="no...header.missing"
877   enable_trigger=$enable_module
878 elif test "x$enable_module" = "xforce"; then
879   enable_trigger="yes"
880 else
881   enable_trigger=$enable_module
882 fi
883
884 if test "x$enable_trigger" = "xyes" ; then 
885   AC_DEFINE(HLT_TRIGGER)
886   ALITRIGGER_LIBS=$ALIHLTMODULE_LIBS
887 else
888   enable_module=$enable_trigger
889 fi
890 AM_CONDITIONAL(EN_HLT_TRIGGER, test x$enable_trigger = xyes)
891 AC_MSG_CHECKING([whether to compile Trigger library])
892 AC_MSG_RESULT([$enable_module])
893 AC_SUBST([ALITRIGGER_LIBS])
894
895 dnl ------------------------------------------------------------------
896 AH_TEMPLATE([HLT_GLOBAL],[hlt global library])
897
898 ALIGLOBAL_LIBS=
899 CHECK_HLTMODULE([global],
900                 [], [$ALIROOT_CPPFLAGS],
901                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
902                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
903                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
904
905 if test "x$enable_module" = "xmissheader"; then
906   enable_module="no...header.missing"
907   enable_global=$enable_module
908 elif test "x$enable_module" = "xforce"; then
909   enable_global="yes"
910 else
911   enable_global=$enable_module
912   if test "x$enable_global" = "xyes" ; then
913     AC_LANG_PUSH(C++)
914     save_CPPFLAGS="$CPPFLAGS"
915     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
916     AC_MSG_CHECKING([for required functions in AliESDtrack])
917     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliESDtrack.h>], 
918                                        [AliESDtrack t;
919                                        t.SetGlobalChi2(0)])],
920                                        [], 
921                                        [enable_global="no...requires.AliRoot>v4-17-Release"])
922     AC_MSG_RESULT([$enable_global])       
923     AC_LANG_POP(C++)
924     CPPFLAGS="$save_CPPFLAGS"
925   fi
926 fi
927
928 if test "x$enable_global" = "xyes" ; then 
929   AC_DEFINE(HLT_GLOBAL)
930   ALIGLOBAL_LIBS=$ALIHLTMODULE_LIBS
931 else
932   enable_module=$enable_global
933 fi
934 AM_CONDITIONAL(EN_HLT_GLOBAL, test x$enable_global = xyes)
935 AC_MSG_CHECKING([whether to compile Global library])
936 AC_MSG_RESULT([$enable_module])
937 AC_SUBST([ALIGLOBAL_LIBS])
938
939 dnl ------------------------------------------------------------------
940 AH_TEMPLATE([HLT_JET],[hlt jet library])
941
942 if test ! "x$FASTJET" = "x" ; then
943   enable_fastjet="yes"
944   AC_DEFINE(HAVE_FASTJET)
945   AC_DEFINE(WITHFASTJET)
946   CPPFLAGS_FASTJET="-I${FASTJET}/include"
947 else
948   enable_fastjet="no"
949 fi
950
951 if test "x$enable_fastjet" = "xyes"; then
952         ALIJET_LIBS= CHECK_HLTMODULE([jet],
953                 [], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/JETAN -I${FASTJET}/include],
954                 [], [-L$ROOTLIBDIR -L${FASTJET}/lib], [$ROOTLIBS $ADD_ROOTLIBS],
955                 [AOD ESD ANALYSIS ANALYSISalice CGAL fastjet JETAN JETANMC], 
956                 [-L$ROOTLIBDIR $ALIROOT_LDFLAGS -L$ALICE_ROOT/lib/tgt_$ALICE_TARGET -L${FASTJET}/lib], 
957                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
958 else
959         ALIJET_LIBS= CHECK_HLTMODULE([jet],
960                 [], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/JETAN],
961                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
962                 [AOD ESD ANALYSIS ANALYSISalice JETAN JETANMC], 
963                 [-L$ROOTLIBDIR $ALIROOT_LDFLAGS -L$ALICE_ROOT/lib/tgt_$ALICE_TARGET], 
964                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
965 fi
966
967 if test "x$enable_module" = "xmissheader"; then
968   enable_module="no...header.missing"
969   enable_jet=$enable_module
970 elif test "x$enable_module" = "xforce"; then
971   enable_jet="yes"
972 else
973   enable_jet=$enable_module
974 fi
975
976 if test "x$enable_jet" = "xyes" ; then 
977   AC_DEFINE(HLT_JET)
978   ALIJET_LIBS="$ALIHLTMODULE_LIBS"
979 else
980   enable_module=$enable_jet
981 fi
982
983 AC_MSG_NOTICE([++ ------------------------------])
984 AC_MSG_NOTICE([++ HAVE_FASTJET  = $enable_fastjet])
985 AC_MSG_NOTICE([++ MODULE ENABLE = $enable_module])
986 AC_MSG_NOTICE([++ MODULE JET    = $enable_jet])
987 AC_MSG_NOTICE([++ ALIJET_LIBS   = $ALIHLTMODULE_LIBS])
988 AC_MSG_NOTICE([++ ------------------------------])
989
990 AM_CONDITIONAL(EN_HLT_JET, test x$enable_jet = xyes)
991 AC_MSG_CHECKING([whether to compile Jet library])
992 AC_MSG_RESULT([$enable_module])
993 AC_SUBST([ALIJET_LIBS])
994
995 dnl ------------------------------------------------------------------
996 AH_TEMPLATE([HLT_ITS],[hlt its library])
997
998 ALIITS_LIBS=
999 CHECK_HLTMODULE([its],
1000                 [AliITSCompressRawDataSDD.h], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS],
1001                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1002                 [ITSbase ITSrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1003                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1004
1005 if test "x$enable_module" = "xmissheader"; then
1006   enable_module="no...header.missing"
1007   enable_its=$enable_module
1008 elif test "x$enable_module" = "xforce"; then
1009   enable_its="yes"
1010 else
1011   enable_its=$enable_module
1012   if test "x$enable_its" = "xyes" ; then
1013     AC_LANG_PUSH(C++)
1014     save_CPPFLAGS="$CPPFLAGS"
1015     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS"
1016     # changes in the AliVertexer base class revision 26414, Thu Jun 5 15:36:18 2008
1017     # require AliVertexer::GetNominalPos()
1018     AC_MSG_CHECKING([for required functions in AliITSVertexer])
1019     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliITSVertexerZ.h>], 
1020                                        [AliITSVertexerZ v;
1021                                        v.GetNominalPos()])],
1022                                        [], 
1023                                        [enable_its="no...requires.AliRoot>v4-13-Release"])
1024     AC_MSG_RESULT([$enable_its])       
1025     AC_LANG_POP(C++)
1026     CPPFLAGS="$save_CPPFLAGS"
1027   fi
1028 fi
1029
1030 if test "x$enable_its" = "xyes" ; then 
1031   AC_DEFINE(HLT_ITS)
1032   ALIITS_LIBS=$ALIHLTMODULE_LIBS
1033 else
1034   enable_module=$enable_its
1035 fi
1036 AM_CONDITIONAL(EN_HLT_ITS, test x$enable_its = xyes)
1037 AC_MSG_CHECKING([whether to compile ITS library])
1038 AC_MSG_RESULT([$enable_module])
1039 AC_SUBST([ALIITS_LIBS])
1040
1041 dnl ------------------------------------------------------------------
1042 AH_TEMPLATE([HLT_EMCAL],[hlt emcal library])
1043
1044 ALIEMCAL_LIBS=
1045 CHECK_HLTMODULE([emcal],
1046                 [], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/EMCAL],
1047                 [RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1048                 [EMCALrec EMCALsim EMCALbase], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1049                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1050
1051 if test "x$enable_module" = "xmissheader"; then
1052   enable_module="no...header.missing"
1053   enable_emcal=$enable_module
1054 elif test "x$enable_module" = "xforce"; then
1055   enable_emcal="yes"
1056 else
1057   enable_emcal=$enable_module
1058 fi
1059
1060 if test "x$enable_emcal" = "xyes" ; then 
1061   AC_DEFINE(HLT_EMCAL)
1062   ALIEMCAL_LIBS=$ALIHLTMODULE_LIBS
1063 else
1064   enable_module=$enable_emcal
1065 fi
1066 AM_CONDITIONAL(EN_HLT_EMCAL, test x$enable_emcal = xyes)
1067 AC_MSG_CHECKING([whether to compile EMCAL library])
1068 AC_MSG_RESULT([$enable_module])
1069 AC_SUBST([ALIEMCAL_LIBS])
1070
1071 dnl ------------------------------------------------------------------
1072 AH_TEMPLATE([HLT_COMP],[hlt comp library])
1073
1074 ALICOMP_LIBS=
1075 CHECK_HLTMODULE([comp],
1076                 [], [$ALIROOT_CPPFLAGS],
1077                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1078                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1079                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1080
1081 if test "x$enable_module" = "xmissheader"; then
1082   enable_module="no...header.missing"
1083   enable_comp=$enable_module
1084 elif test "x$enable_module" = "xforce"; then
1085   enable_comp="yes"
1086 else
1087   enable_comp=$enable_module
1088 fi
1089
1090 if test "x$enable_comp" = "xyes" ; then 
1091   AC_DEFINE(HLT_COMP)
1092   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
1093 else
1094   enable_module=$enable_comp
1095 fi
1096 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
1097 AC_MSG_CHECKING([whether to compile comp library])
1098 AC_MSG_RESULT([$enable_module])
1099 AC_SUBST([ALICOMP_LIBS])
1100
1101 dnl ------------------------------------------------------------------
1102 AC_MSG_CHECKING([whether to disable AliRoot logging])
1103 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
1104 AC_ARG_ENABLE(aliroot-logging,
1105   [AC_HELP_STRING([--disable-aliroot-logging],
1106       [disable logging through AliRoot logging methods])],
1107   [],[enable_aliroot_logging=no])
1108 if test "x$have_aliroot" = "xno" ; then
1109   enable_aliroot_logging=yes # this means 'disable'
1110 fi
1111 if test "x$enable_aliroot_logging" != "xno" ; then 
1112   AC_DEFINE(NOALIROOT_LOGGING)
1113 fi
1114 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
1115 AC_MSG_RESULT([$enable_aliroot_logging])
1116
1117 dnl ------------------------------------------------------------------
1118 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
1119 AH_TEMPLATE([DOMC],[MC saving])
1120 AC_ARG_ENABLE(mc-saving,
1121   [AC_HELP_STRING([--enable-mc-saving],
1122       [enable saving MC data through the chain])],
1123   [],[enable_mc_saving=no])
1124 if test "x$enable_mc_saving" = "xyes" ; then 
1125   AC_DEFINE(DOMC)
1126 fi
1127 AC_MSG_RESULT([$enable_mc_saving])
1128
1129 dnl ------------------------------------------------------------------
1130 dnl certainly something old, but we keep the define
1131 AC_MSG_CHECKING([whether to use ROWHOUGH])
1132 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
1133 AC_ARG_ENABLE(rowhough,
1134   [AC_HELP_STRING([--enable-rowhough],
1135       [use ROWHOUGH ])],
1136   [],[enable_rowhough=no])
1137 if test "x$enable_rowhough" = "xyes" ; then 
1138   AC_DEFINE(USEROWHOUGH)
1139 fi
1140 AC_MSG_RESULT([$enable_rowhough])
1141
1142 dnl ------------------------------------------------------------------
1143 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
1144 dnl stand-alone build system. This is most likely something old we can
1145 dnl get rid off later, or do something more reasonable. Since the define
1146 dnl needs the quotes they have to be  escaped. This works well for the
1147 dnl Makefile but not for the configure script. So we have to add the
1148 dnl defines after all the other checks.
1149 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
1150 if test ! "x$have_aliroot" = "xno" ; then
1151   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
1152 fi
1153
1154 dnl ------------------------------------------------------------------
1155 dnl
1156 dnl Documentation
1157 dnl
1158 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
1159 AC_PATH_PROG(PERL, perl)
1160 AC_PATH_PROG(DOXYGEN, doxygen)
1161 AC_ARG_ENABLE(dot,
1162   [AC_HELP_STRING([--enable-dot],
1163       [enable dot documentation generator])],
1164   [],[enable_dot=no])
1165 HAVE_DOT=NO
1166 DOT_PATH=
1167 AC_PATH_PROG(DOT, dot)
1168 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
1169    HAVE_DOT=YES
1170    DOT_PATH=`dirname $DOT`
1171 fi
1172
1173 AC_MSG_CHECKING([for documentation mode])
1174 AC_ARG_ENABLE(doc,
1175   [AC_HELP_STRING([--disable-doc],
1176       [disable documentation build; monolithic build --enable-doc=mono ])],
1177   [],[enable_doc=modules])
1178
1179 if test "x$DOXYGEN" = "x" ; then
1180    enable_doc=no.doxygen
1181 elif test "x$enable_doc" = "xyes" ; then
1182    enable_doc=yes
1183 elif test ! "x$enable_doc" = "xmono" && \
1184      test ! "x$enable_doc" = "xmodules"  && \
1185      test ! "x$enable_doc" = "xno"; then
1186    enable_doc=no
1187    AC_MSG_WARN([unknown option])
1188 fi
1189 if test "x$enable_doc" = "xno" ; then
1190    enable_doc=off
1191    DOXYGEN=
1192 fi
1193
1194 AC_MSG_RESULT([$enable_doc])
1195 AM_CONDITIONAL(MONOLITHIC_DOC, test "x$enable_doc" = "xmono")
1196 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
1197 AC_SUBST([HAVE_DOT])
1198 AC_SUBST([DOT_PATH])
1199
1200 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
1201 dnl echo $HAVE_SRC_SUBDIR
1202 dnl if ! test -d $HAVE_SRC_SUBDIR; then
1203 dnl   HAVE_SRC_SUBDIR=
1204 dnl fi
1205 dnl AC_SUBST([HAVE_SRC_SUBDIR])
1206
1207 dnl ------------------------------------------------------------------
1208 AC_MSG_NOTICE([---------------------------------------------- ])
1209 AC_MSG_NOTICE([                build summary                  ])
1210 AC_MSG_NOTICE([---------------------------------------------- ])
1211
1212 AC_CONFIG_FILES([Makefile 
1213                  BASE/Makefile
1214                  BASE/setenv.sh
1215                  BASE/setenv.csh
1216                  BASE/HOMER/Makefile
1217                  BASE/util/Makefile
1218                  BASE/util/test/Makefile
1219                  BASE/interface/Makefile
1220                  BASE/test/Makefile
1221                  BASE/interface/test/Makefile
1222                  doc/Makefile
1223                  doc/doxygen.conf
1224                  doc/doxymodule.conf])
1225
1226 dnl AliRoot and installation directory for libraries
1227 dnl 
1228 AC_MSG_NOTICE([AliRoot: $have_aliroot])
1229 AM_CONDITIONAL(HAVE_ALIROOT, test "x$have_aliroot" != "xno" )
1230 if test "x$have_aliroot" != "xno"; then 
1231   AC_CONFIG_FILES([sim/Makefile  
1232                    rec/Makefile  
1233                    rec/test/Makefile     
1234                    rec/startAliEVE-barrel-tracks.sh
1235                    shuttle/Makefile
1236                    pendolino/Makefile
1237                    benchmark/Makefile
1238                    ])
1239 fi
1240 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
1241 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
1242 AC_MSG_NOTICE([libdir set to $libdir])
1243 fi
1244
1245 AC_MSG_NOTICE([compile sample library: $enable_sample])
1246 if test "x$enable_sample" = "xyes"; then 
1247   AC_CONFIG_FILES([SampleLib/Makefile])
1248 fi
1249
1250 AC_MSG_NOTICE([compile RCU library: $enable_rcu])
1251 if test "x$enable_rcu" = "xyes"; then 
1252   AC_CONFIG_FILES([RCU/Makefile
1253                    RCU/test/Makefile
1254                    ])
1255 fi
1256
1257 AC_MSG_NOTICE([compile TPC library: $enable_tpc])
1258 if test "x$enable_tpc" = "xyes"; then 
1259   AC_CONFIG_FILES([TPCLib/Makefile            
1260                    TPCLib/test/Makefile       
1261                    TPCLib/mapping2array.cxx     
1262                    TPCLib/EVE/Makefile
1263                    ])
1264 fi
1265
1266 AC_MSG_NOTICE([compile PHOS library: $enable_phos])
1267 if test "x$enable_phos" = "xyes"; then 
1268   AC_CONFIG_FILES([PHOS/Makefile])
1269 fi
1270
1271 AC_MSG_NOTICE([compile TRD library: $enable_trd])
1272 if test "x$enable_trd" = "xyes"; then 
1273   AC_CONFIG_FILES([TRD/Makefile])
1274 fi
1275
1276 AC_MSG_NOTICE([compile FMD library: $enable_fmd])
1277 if test "x$enable_fmd" = "xyes"; then 
1278   AC_CONFIG_FILES([FMD/Makefile])
1279 fi
1280
1281 AC_MSG_NOTICE([compile MUON library: $enable_muon])
1282 if test "x$enable_muon" = "xyes"; then 
1283   AC_CONFIG_FILES([MUON/Makefile])
1284 fi
1285
1286 AC_MSG_NOTICE([compile ITS library: $enable_its])
1287 if test "x$enable_its" = "xyes"; then 
1288   AC_CONFIG_FILES([ITS/Makefile])
1289 fi
1290
1291 AC_MSG_NOTICE([compile EMCAL library: $enable_emcal])
1292 if test "x$enable_emcal" = "xyes"; then 
1293   AC_CONFIG_FILES([EMCAL/Makefile])
1294 fi
1295
1296 AC_MSG_NOTICE([compile trigger library: $enable_trigger])
1297 if test "x$enable_trigger" = "xyes"; then 
1298   AC_CONFIG_FILES([trigger/Makefile
1299                    trigger/test/Makefile])
1300 fi
1301
1302 AC_MSG_NOTICE([compile global library: $enable_global])
1303 if test "x$enable_global" = "xyes"; then 
1304   AC_CONFIG_FILES([global/Makefile])
1305 fi
1306
1307 AC_MSG_NOTICE([compile jet library: $enable_jet])
1308 if test "x$enable_jet" = "xyes"; then 
1309   AC_CONFIG_FILES([JET/Makefile])
1310 fi
1311
1312 AC_MSG_NOTICE([compile comp library: $enable_comp])
1313 if test "x$enable_comp" = "xyes"; then 
1314   AC_CONFIG_FILES([comp/Makefile])
1315 fi
1316
1317 AC_OUTPUT
1318 dnl
1319 dnl EOF
1320 dnl
1321