]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/configure.ac
Bug fix: proper place to reinitialise the generic MC histos in the switch -> no crash...
[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   # ###########################################
181   # temporary workaround for circular dependency libSTEERbase libSTEER   
182   # https://savannah.cern.ch/bugs/index.php?49914
183   # disable the sequence of checks and load libraries in parallel
184   ALIROOT_LIBS="$ALIROOT_LIBS -lAOD -lCDB -lRAWDatabase -lRAWDatarec -lESD -lSTEER"
185   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
186   CHECKLIB=STEERBase
187   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
188
189   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
190   CHECKLIB=AOD
191   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
192
193   # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
194   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
195   CHECKLIB=CDB
196   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
197
198   # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
199   have_alirawdata=no
200   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
201   CHECKLIB=RAWDatabase
202   AC_CHECK_LIB([$CHECKLIB],[_init],
203         [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
204          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lESD -lSTEER"
205          CHECKLIB=RAWDatarec
206          AC_CHECK_LIB([$CHECKLIB],[_init],
207                [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
208                 have_alirawdata=$CHECKLIB])],
209         [# second pass with -RAWData
210          CHECKLIB="-lRAWData"
211          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
212          AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
213                                        #include <AliRawReaderFile.h>
214                                        #include <AliRawReaderDate.h>
215                                        #include <AliRawReaderRoot.h>], 
216                                      [AliRawReaderMemory mreader;
217                                        AliRawReaderFile freader;
218                                        AliRawReaderDate dreader(NULL,0);
219                                        AliRawReaderRoot rreader(NULL,0);])],
220                                      [ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
221                                        have_alirawdata=$CHECKLIB], 
222                                       [have_alirawdata=no])
223         ]) dnl AC_CHECK_LIB RAWDatabase
224   AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
225   AC_MSG_RESULT([$have_alirawdata])
226
227   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
228   CHECKLIB=ESD
229   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
230
231   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
232   CHECKLIB=STEER
233   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],[have_aliroot=no])
234
235   dnl
236   dnl check whether AliLog supports notification callback
237   dnl
238   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
239   have_alilog_notification=no
240   if test ! "x$have_aliroot" = "xno" ; then
241   AC_MSG_CHECKING([whether AliLog supports notification callback])
242   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliLog.h>], 
243                                   [AliLog::AliLogNotification fct])],
244                                   [have_alilog_notification=yes], 
245                                   [AC_DEFINE(NO_ALILOG_NOTIFICATION)])
246   AC_MSG_RESULT([$have_alilog_notification])
247   fi
248
249   if test "x$have_aliroot" = "xno" ; then
250     # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
251     # but library dependencies might not be resolved completely
252     #ALIROOT_CPPFLAGS=
253     AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
254     This can happen from time to time due to development in AliRoot. You can
255     force compilation of detector libs by --enable-<detector>, but be aware
256     of unresolved references at runtime.])
257     AC_MSG_WARN([       ------------------------------------------ ])
258     AC_MSG_WARN([       Report this to $PACKAGE_BUGREPORT ])
259     AC_MSG_WARN([       please include config.log                  ])
260     AC_MSG_WARN([       ------------------------------------------ ])
261     ALIROOT_LDFLAGS=
262     ALIROOT_LIBS=
263   fi
264
265   dnl
266   dnl ESD supports non-std content
267   dnl
268   have_esd_nonstd=no
269   AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>
270                                    #include <AliExternalTrackParam.h>
271                                    #include <TTree.h>
272                                    #include <TClonesArray.h>],
273                                   [AliESDEvent esd;
274                                    esd.CreateStdContent();
275                                    TTree* tree=new TTree("esdTree", "Tree with HLT ESD objects");
276                                    TClonesArray* a=new TClonesArray("AliExternalTrackParam");
277                                    a->SetName("SomeObject");
278                                    esd.AddObject(a);
279                                    esd.WriteToTree(tree);
280                                    if (!tree->FindBranch("SomeObject")) return 1;
281                                    return 0;])],
282                  [have_esd_nonstd=yes], 
283                  [AC_DEFINE(HAVE_NOT_ESD_NONSTD)])
284   AC_MSG_CHECKING(whether ESD supports non standard content)
285   AC_MSG_RESULT([$have_esd_nonstd])
286
287   dnl
288   dnl ESD copy function added May 9 2008 rev 25667
289   dnl
290   if test "x$have_esd_nonstd" != "xyes"; then
291   have_esd_copy=no
292   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliESDEvent.h>],
293                                   [AliESDEvent esd1;
294                                    AliESDEvent esd2;
295                                    esd2=esd1;])],
296                  [have_esd_copy=yes], 
297                  [AC_DEFINE(HAVE_NOT_ESD_COPY)])
298   AC_MSG_CHECKING(for ESD assignment operator)
299   AC_MSG_RESULT([$have_esd_copy])
300   fi
301
302   dnl
303   dnl AliRawReaderMemory support for multiple buffers added
304   dnl revision 26829 Jun 2008
305   dnl
306   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/RAW"
307   have_rawreadermemory_multbuffers=no
308   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>],
309                                   [AliRawReaderMemory rr;
310                                    rr.AddBuffer(NULL, 0, 0);])],
311                  [have_rawreadermemory_multbuffers=yes], 
312                  [AC_DEFINE(HAVE_NOT_ALIRAWREADERMEMORY_ADDBUFFER)])
313   AC_MSG_CHECKING(AliRawReaderMemory support for multiple buffers)
314   AC_MSG_RESULT([$have_rawreadermemory_multbuffers])
315
316   dnl
317   dnl Changes in the magnetic field implementation
318   dnl revision 30848 Feb 1 2009
319   dnl
320   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/STEER"
321   have_alimagf30848=no
322   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMagF.h>],
323                                   [int test=AliMagF::k5kG;])],
324                  [have_alimagf30848=yes], 
325                  [AC_DEFINE(HAVE_NOT_ALIMAGF30848)])
326   AC_MSG_CHECKING(AliMagF contains field definitions)
327   AC_MSG_RESULT([$have_alimagf30848])
328
329   dnl
330   dnl Cleanup of the RunLoader implementation
331   dnl revision 30859 Feb 2 2009
332   dnl
333   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/STEER"
334   have_alirunloader30859=no
335   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRunLoader.h>],
336                                   [AliRunLoader* rl=AliRunLoader::Instance();])],
337                  [have_alirunloader30859=yes], 
338                  [AC_DEFINE(HAVE_NOT_ALIRUNLOADER30859)])
339   AC_MSG_CHECKING(AliRunLoader::Instance)
340   AC_MSG_RESULT([$have_alirunloader30859])
341
342   have_aliqav1=no
343   AC_CHECK_HEADER([AliQAv1.h], [have_aliqav1=yes], [])
344   AM_CONDITIONAL(EN_HLT_QA, test x$have_aliqav1 = xyes)
345
346   dnl
347   dnl required header files and libraries for modules
348   dnl
349
350   dnl
351   dnl Check for the interface of AliExternalTrackParam which has been changed
352   dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04
353   dnl or higher)
354   externaltrackparam_version=1
355   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliExternalTrackParam.h>], 
356                                   [AliExternalTrackParam trackparam;
357                                    Double_t param[[5]]; Double_t covar[[15]];
358                                    trackparam.Set(0., 0., param, covar);])],
359                                   [externaltrackparam_version=2],
360                                   [AC_DEFINE(EXTERNALTRACKPARAM_V1)])
361   AC_MSG_CHECKING(for version of AliExternalTrackParam)
362   AC_MSG_RESULT($externaltrackparam_version)
363
364   dnl The AliShuttleInterface was changed in rev 29388. Some return types
365   dnl had been const, now changed according to gcc 4.3 warnings 
366   AC_MSG_CHECKING(for version of AliShuttleInterface.h)
367     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/"
368     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
369     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
370     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliShuttleInterface.h>],
371                                     [class dummy : public AliShuttleInterface {
372                                      public:
373                                        const UInt_t GetStartTimeDCSQuery() {;}
374                                      };])],
375                                     [AC_DEFINE(SHUTTLE_PRE_REV29388_INTERFACE)
376                                      alishuttleinterface_version=pre.rev.29388],
377                                     [alishuttleinterface_version=up.to.date])
378   AC_MSG_RESULT([$alishuttleinterface_version])
379
380   CPPFLAGS=$save_CPPFLAGS
381   LDFLAGS=$save_LDFLAGS
382   LIBS=$save_LIBS
383 fi # if test ! "x$have_aliroot" = "xno"
384
385 AC_LANG_POP(C++)
386 AC_SUBST([ALICE_ROOT])
387 AC_SUBST([ALIROOT_CPPFLAGS])
388 AC_SUBST([ALIROOT_LDFLAGS])
389 AC_SUBST([ALIROOTBINDIR])
390 AC_SUBST([ALIROOTLIBDIR])
391 AC_SUBST([ALIROOT_LIBS])
392 AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
393
394 HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
395 HLTBASE_LDFLAGS=
396 AC_SUBST([HLTBASE_CPPFLAGS])
397 AC_SUBST([HLTBASE_LDFLAGS])
398
399 dnl ------------------------------------------------------------------
400 dnl check for the HLT PubSub Framework
401 dnl namely for the existence of the HOMER library
402 dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
403 dnl package. It os though possible to choose an external. library
404 dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
405 dnl got the name libAliHLTHOMER
406 AC_MSG_CHECKING([for HLT PubSub Framework])
407 AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
408                     [],
409                     [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
410 if test -z $with_pubsub || ! test -d $with_pubsub ; then
411   with_pubsub=no
412 fi
413 AC_MSG_RESULT([$with_pubsub])
414 HOMER_VERSION=2
415 HOMER_LIBS=
416
417 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
418 if test "x$with_pubsub" != "xno" ; then
419   save_CPPFLAGS=$CPPFLAGS
420   save_LDFLAGS=$LDFLAGS
421   save_LIBS=$LIBS
422   # currently the different versions of the HLT PubSub framework have a different
423   # directory layout
424   if test -d ${with_pubsub}/include/HOMER ; then
425     # the 'early' location of the include files with separated HOMER sub dirs
426     HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
427   elif test -d ${with_pubsub}/include/Util/HOMER ; then
428     # location for HLT Framework versions after Sep 2006
429     HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
430   elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
431     # fall back if include files were not installed (versions after Sep 06)
432     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
433   else
434     # fall back if include files were not installed (versions before Sep 06)
435     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
436   fi
437   HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
438
439   AC_ARG_ENABLE(pubsub-debug,
440     [AC_HELP_STRING([--disable-pubsub-debug],
441         [force the production version of the PubSub framework])],
442     [],[enable_pubsub_debug=yes])
443   homer_type="none"
444   HOMER_TARGET="`uname -s`-`uname -m`"
445   AC_MSG_CHECKING([for HLT PubSub Framework release type])
446   if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
447     homer_type="production"
448     HOMER_TARGET="${HOMER_TARGET}-release"
449   elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
450     homer_type="debug"
451     HOMER_TARGET="${HOMER_TARGET}-debug"
452   fi
453   AC_MSG_RESULT([${homer_type}])
454   HOMERREADER_HEADER=HOMERReader.h
455   HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
456   HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
457   HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
458   CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
459   LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
460   LIBS="$save_LIBS "
461   with_homer=no
462   AC_LANG_PUSH(C++)
463   AC_CHECK_HEADER([$HOMERREADER_HEADER],
464     [ AC_CHECK_LIB([HOMER],[_init],
465       [with_homer=yes
466        HOMER_LIBS="-lHOMER"],
467       [ AC_CHECK_LIB([HOMERReader],[_init],
468                      [with_homer=yes
469                       HOMER_LIBS="-lHOMERReader"])])
470       LIBS="$LIBS $HOMER_LIBS"
471       AC_MSG_CHECKING([version of HOMER library])
472       dnl The Homer library has no versioning, so we do our own
473       dnl version           description
474       dnl ----------------------------------------------------------------------
475       dnl   1          inintial version
476       dnl   2          GetBlockStatusFlags added to the interface
477       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
478                                       [HOMERReader reader("dummy", 0);
479                                        reader.GetBlockStatusFlags(0);])],
480                                       [],
481                                       [HOMER_VERSION=1])
482       AC_MSG_RESULT([$HOMER_VERSION])
483   ],
484   [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
485   AC_LANG_POP(C++)
486   HOMER_INBUILT_LIB=
487 else
488 dnl no pubsub version defined, check if the HOMER lib is available in AliRoot
489   topdir=`dirname $0`
490   HOMER_CPPFLAGS="-I`(cd $topdir; pwd)`/BASE/HOMER"
491   HOMERREADER_HEADER=AliHLTHOMERReader.h
492   HOMER_INBUILT_LIB=`pwd`/BASE/HOMER/libAliHLTHOMER.la
493   HOMER_BINDIR=
494   HOMER_LIBDIR=
495   HOMER_LDFLAGS=
496 fi
497
498   if test "x$with_homer" = "xno" ; then
499     HOMER_CPPFLAGS=
500     HOMER_LDFLAGS=
501     HOMER_LIBS=
502   else
503     HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
504     AC_DEFINE(HAVE_HOMERREADER)
505   fi
506   CPPFLAGS="$save_CPPFLAGS"
507   LDFLAGS="$save_LDFLAGS"
508   LIBS="$save_LIBS"  
509
510 AC_SUBST([HOMERREADER_HEADER])
511 AC_SUBST([HOMER_INBUILT_LIB])
512 AC_SUBST([HOMER_CPPFLAGS])
513 AC_SUBST([HOMER_LDFLAGS])
514 AC_SUBST([HOMER_LIBDIR])
515 AC_SUBST([HOMER_BINDIR])
516 AC_SUBST([HOMER_LIBS])
517
518 dnl ------------------------------------------------------------------
519 AC_ARG_ENABLE(all,
520   [AC_HELP_STRING([--disable-all],
521       [disable all detector modules, individual modules can be switched on by --enable-det])],
522   [disable_all=yes],[])
523
524 dnl ------------------------------------------------------------------
525 AC_MSG_CHECKING([whether to impose strict coding conventions])
526 AC_ARG_ENABLE(strict,
527   [AC_HELP_STRING([--disable-strict],
528       [disable coding convention checks ])],
529   [],[enable_strict=yes])
530 if test "x$enable_strict" = "xyes" ; then
531    CPPFLAGS="$CPPFLAGS -W -Weffc++ -Wall -Wshadow"
532 fi
533 AC_MSG_RESULT([$enable_strict])
534
535 dnl ------------------------------------------------------------------
536 AC_MSG_CHECKING([whether to enable component statistics])
537 AC_ARG_ENABLE(component-stat,
538   [AC_HELP_STRING([--enable-component-stat],
539       [enable component statistics ])],
540   [],[enable_component_stat=no])
541 if test "x$enable_component_stat" = "xyes" ; then
542    AC_DEFINE(HLT_COMPONENT_STATISTICS)
543 fi
544 AC_MSG_RESULT([$enable_component_stat])
545
546 dnl ------------------------------------------------------------------
547 dnl ----  module checks
548 dnl ------------------------------------------------------------------
549 save_CPPFLAGS=$CPPFLAGS
550 save_LDFLAGS=$LDFLAGS
551 save_LIBS=$LIBS
552
553 dnl ------------------------------------------------------------------
554 AC_MSG_CHECKING([whether to compile sample library])
555 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
556 AC_ARG_ENABLE(sample,
557   [AC_HELP_STRING([--disable-sample],
558       [compile the sample library ])],
559   [],
560   [if test "x$have_aliroot" = "xno" ; then
561      enable_sample="no...requires.AliRoot"
562    else
563      enable_sample=yes
564    fi
565   ])
566
567 if test "x$enable_sample" = "xyes" ; then 
568   AC_DEFINE(HLT_SAMPLE)
569 fi
570 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
571 AC_MSG_RESULT([$enable_sample])
572
573 dnl ------------------------------------------------------------------
574 AC_MSG_CHECKING([whether to compile util library])
575 AH_TEMPLATE([HLT_UTIL],[HLT utility library])
576 AC_ARG_ENABLE(util,
577   [AC_HELP_STRING([--disable-util],
578       [compile the util library ])],
579   [],
580   [if test "x$have_aliroot" = "xno" ; then
581      enable_util="no...requires.AliRoot"
582    else
583      enable_util=yes
584    fi
585   ])
586
587 if test "x$enable_util" = "xyes" ; then 
588   AC_DEFINE(HLT_UTIL)
589 fi
590 AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
591 AC_MSG_RESULT([$enable_util])
592
593 dnl ------------------------------------------------------------------
594 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
595
596 ALITPC_LIBS=
597 CHECK_HLTMODULE([tpc],
598                 [AliTPCRawStream.h], 
599                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
600                 [Gui ANALYSIS STAT], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
601                 [TPCbase TPCrec TPCcalib], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
602                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
603
604 if test "x$enable_module" = "xmissheader"; then
605   enable_module="no...missing.headers"
606   enable_tpc=$enable_module
607 elif test "x$enable_module" = "xforce"; then
608   enable_tpc="yes"
609 else
610   enable_tpc=$enable_module
611 fi
612
613 if test "x$enable_tpc" = "xyes" ; then 
614   AC_LANG_PUSH(C++)
615   AC_DEFINE(HLT_TPC)
616   ALITPC_LIBS=$ALIHLTMODULE_LIBS
617   dnl
618   dnl Check for functionality in the TPC reconstruction required for online
619   dnl processing
620   dnl 
621   have_tpc_hltoffline_rec=no
622   AC_MSG_CHECKING(for on-line features of TPC offline reconstruction)
623     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
624     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
625     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
626     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliTPCtrackerMI.h>
627                                        #include <AliTPCclustererMI.h>   
628                                        #include <TObjArray.h>], 
629                                     [AliTPCtrackerMI tracker;
630                                        TObjArray* array=NULL;
631                                        tracker.LoadClusters(array);
632                                        AliTPCclustererMI cl(NULL, NULL);
633                                        cl.GetOutputClonesArray();])],
634                                     [have_tpc_hltoffline_rec=yes], 
635                                       [AC_DEFINE(HAVE_NOT_TPCOFFLINE_REC)])
636     LIBS=$save_LIBS
637   AC_MSG_RESULT([$have_tpc_hltoffline_rec])
638
639   AC_CHECK_HEADER([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
640   AC_CHECK_HEADER([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
641   AC_CHECK_HEADER([AliAltroRawStreamV3.h], [], [AC_DEFINE(HAVE_NOT_ALTRORAWSTREAMV3)])
642
643   have_tpc_mapping=no
644   if test ! "x$have_aliroot" = "xno" ; then
645     # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC 
646     # which is stored in the TPC/mapping/Patchx.data files from
647     # AliRoot version v4-04-Release (May 2006)
648     AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
649     TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
650     AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data], 
651                    [have_tpc_mapping=yes
652                     AC_SUBST(TPC_PAD_MAPPING_PATH)
653                     AC_DEFINE(HAVE_TPC_MAPPING)],
654                    [])
655     
656   fi
657   AC_MSG_CHECKING([for TPC mapping layout])
658   AC_MSG_RESULT([$have_tpc_mapping])
659   AC_LANG_POP(C++)
660
661 else
662   enable_module=$enable_tpc
663 fi
664 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
665 AC_MSG_CHECKING([whether to compile TPC library])
666 AC_MSG_RESULT([$enable_module])
667 AC_SUBST([ALITPC_LIBS])
668
669 dnl ------------------------------------------------------------------
670 AH_TEMPLATE([HLT_RCU],[hlt rcu library])
671
672 CHECK_HLTMODULE([rcu],
673                 [AliAltroDecoder.h], 
674                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
675                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
676                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
677                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
678
679 if test "x$enable_module" = "xmissheader"; then
680   enable_module="no...missing.headers"
681   enable_rcu=$enable_module
682 elif test "x$enable_module" = "xforce"; then
683   enable_rcu="yes"
684 else
685   AC_LANG_PUSH(C++)
686   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
687   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
688   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
689   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
690                                   [AliAltroDecoder decoder;
691                                   decoder.CopyBackward(NULL, 0);])],
692                                   [enable_rcu=$enable_module], 
693                                   [enable_module="no...requires.AliRoot>v4-10-Release"
694                                    enable_rcu="no...requires.AliRoot>v4-10-Release"])
695   CPPFLAGS=$save_CPPFLAGS
696   LDFLAGS=$save_LDFLAGS
697   LIBS=$save_LIBS
698   AC_LANG_POP(C++)
699 fi
700
701 if test "x$enable_rcu" = "xyes" ; then 
702   AC_DEFINE(HLT_RCU)
703 else
704   enable_module=$enable_rcu
705 fi
706 AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
707 AC_MSG_CHECKING([whether to compile RCU library])
708 AC_MSG_RESULT([$enable_module])
709 AC_SUBST([ALIRCU_LIBS])
710
711 dnl ------------------------------------------------------------------
712 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
713   
714 ALIPHOS_LIBS=
715 CHECK_HLTMODULE([phos],
716                 [], [$ALIROOT_CPPFLAGS],
717                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
718                 [PHOSUtils PHOSbase PHOSrec PHOSsim PHOSshuttle], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
719                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
720
721 if test "x$enable_module" = "xmissheader"; then
722   enable_module="no...requires.AliRoot>v4-05-07"
723   enable_phos=$enable_module
724 elif test "x$enable_module" = "xforce"; then
725   enable_phos="yes"
726 else
727   have_alicalorawstream=no
728   if test ! "x$have_aliroot" = "xno" ; then
729     AC_LANG_PUSH(C++)
730     save_CPPFLAGS="$CPPFLAGS"
731     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
732     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
733     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/PHOS"
734     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
735     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
736                                         #include <AliCaloRawStream.h>], 
737                                        [int i])],
738                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
739                                         have_alicalorawstream=yes], 
740                                        [])
741     AC_MSG_RESULT([$have_aliphosrecoparam])
742     AC_MSG_CHECKING([for required EMC functionality in AliPHOSRecoParam.h ])
743     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliPHOSRecoParam.h>], 
744                                        [AliPHOSRecoParam param;
745                                         param.GetEMCClusteringThreshold()])],
746                                        [have_aliphosrecoparam=yes], 
747                                        [AC_DEFINE(HAVE_NOT_PHOSRECOPARAMEMC)])
748     AC_MSG_RESULT([$have_alicalorawstream])
749     AC_LANG_POP(C++)
750     CPPFLAGS="$save_CPPFLAGS"
751   fi
752   if test "x$have_alicalorawstream" != "xyes"; then
753     enable_phos="no...requires.AliRoot>v4-05-07"
754   else
755     enable_phos=$enable_module
756   fi
757 fi
758
759 if test "x$enable_phos" = "xyes" ; then 
760   AC_DEFINE(HLT_PHOS)
761   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
762 else
763   enable_module=$enable_phos
764 fi
765 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
766 AC_MSG_CHECKING([whether to compile PHOS library])
767 AC_MSG_RESULT([$enable_module])
768 AC_SUBST([ALIPHOS_LIBS])
769
770 dnl ------------------------------------------------------------------
771 AH_TEMPLATE([HLT_TRD],[hlt trd library])
772   
773 ALITRD_LIBS=
774 CHECK_HLTMODULE([trd],
775                 [], [],
776                 [MLP XMLParser], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
777                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
778                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
779
780 if test "x$enable_module" = "xmissheader"; then
781   enable_module="no...requires.AliRoot>v4-07-Release"
782   enable_trd=$enable_module
783 elif test "x$enable_module" = "xforce"; then
784   enable_trd="yes"
785 else
786   enable_trd=$enable_module
787   if test "x$enable_trd" = "xyes" ; then
788     AC_LANG_PUSH(C++)
789     save_CPPFLAGS="$CPPFLAGS"
790     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
791     # AliTRDclusterizer::SetRawVersion() requires >v4-07-Release
792     # changed to AliTRDrecoParam::SetSeedingOn() due to revision 26327, Mon Jun 2 2008
793     # changed to AliTRDReconstructor::SetStreamLevel() due to revision 27797, Tue Aug 5 2008
794     # changed to AliTRDReconstructor::SetClusters() according to revision 28069, Mon Aug 18 2008
795     # changed to AliTRDCluster according to revision 30461, Thu Dec 18 2008
796     # changed to AliTRDclusterizer::GetAddedClusters according to revision 31299, Wed Mar 4 2009
797     AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
798     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
799                                        [AliTRDclusterizer c;
800                                        c.GetAddedClusters()])],
801                                        [], 
802                                        [enable_trd="no...requires.AliRoot>v4-16-Release"])
803     AC_MSG_RESULT([$enable_trd])       
804     AC_LANG_POP(C++)
805     CPPFLAGS="$save_CPPFLAGS"
806   fi
807 fi
808
809 if test "x$enable_trd" = "xyes" ; then 
810   AC_DEFINE(HLT_TRD)
811   ALITRD_LIBS=$ALIHLTMODULE_LIBS
812 else
813   enable_module=$enable_trd
814 fi
815 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
816 AC_MSG_CHECKING([whether to compile TRD library])
817 AC_MSG_RESULT([$enable_module])
818 AC_SUBST([ALITRD_LIBS])
819
820 dnl ------------------------------------------------------------------
821 AH_TEMPLATE([HLT_FMD],[hlt fmd library])
822
823 ALIFMD_LIBS=$ALIHLTMODULE_LIBS
824 CHECK_HLTMODULE([fmd],
825                 [], [],
826                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
827                 [FMDbase FMDrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS],
828                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
829
830 if test "x$enable_module" = "xmissheader"; then
831   enable_module="no...missing.headers"
832   enable_fmd=$enable_module
833 elif test "x$enable_module" = "xforce"; then
834   enable_fmd="yes"
835 else
836   enable_fmd=$enable_module
837 fi
838
839 if test "x$enable_fmd" = "xyes" ; then
840   AC_DEFINE(HLT_FMD)
841   ALIFMD_LIBS=$ALIHLTMODULE_LIBS
842 else
843   enable_module=$enable_fmd
844 fi
845 AM_CONDITIONAL(EN_HLT_FMD, test x$enable_fmd = xyes)
846 AC_MSG_CHECKING([whether to compile FMD library])
847 AC_MSG_RESULT([$enable_module])
848 AC_SUBST([ALIFMD_LIBS])
849
850 dnl ------------------------------------------------------------------
851 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
852
853 ALIMUON_LIBS=
854 CHECK_HLTMODULE([dimuon],
855                 [AliMpExMap.h AliMUONTriggerIO.h], 
856                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
857                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
858                 [MUONcore MUONraw MUONbase MUONgeometry MUONmapping MUONcalib MUONsim MUONtrigger MUONevaluation MUONrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
859                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
860
861 if test "x$enable_module" = "xmissheader"; then
862   enable_module="no...requires.AliRoot>=v4-08-Release"
863   enable_muon=$enable_module
864 elif test "x$enable_module" = "xforce"; then
865   enable_muon="yes"
866 else
867   enable_muon=$enable_module
868 fi
869
870 if test "x$enable_muon" = "xyes" ; then 
871   AC_DEFINE(HLT_MUON)
872   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
873   AC_LANG_PUSH(C++)
874   save_CPPFLAGS="$CPPFLAGS"
875
876   dnl
877   dnl Check for functionality GetRawStream AliMUONDigitMaker.h
878   dnl 
879   have_muon_digitmaker_getrawstream=no
880   AC_MSG_CHECKING(for GetRawStream methods of AliMUONDigitMaker)
881     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON"
882     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
883     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALIMUON_LIBS"
884     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMUONDigitMaker.h>], 
885                                     [AliMUONDigitMaker dm;
886                                        dm.GetRawStreamTracker();])],
887                                     [have_muon_digitmaker_getrawstream=yes], 
888                                       [AC_DEFINE(HAVE_NOT_MUON_DIGITMAKER_GETRAWSTREAM)])
889     LIBS=$save_LIBS
890   AC_MSG_RESULT([$have_muon_digitmaker_getrawstream])
891
892   dnl
893   dnl Check for AliMpPad::GetPositionX/Y
894   dnl change of implementation in MUON code
895   dnl revision 31769, Wed Apr 1 2009
896   dnl 
897   have_muon_alimppad_getposition=no
898   AC_MSG_CHECKING(for GetPosition methods of AliMpPad)
899     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON/mapping"
900     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
901     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALIMUON_LIBS"
902     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMpPad.h>], 
903                                     [AliMpPad pad;
904                                      pad.GetPositionX();])],
905                                     [have_muon_alimppad_getposition=yes], 
906                                       [AC_DEFINE(HAVE_NOT_MUON_ALIMPPAD_GETPOSITION)])
907     LIBS=$save_LIBS
908   AC_MSG_RESULT([$have_muon_alimppad_getposition])
909
910   CPPFLAGS="$save_CPPFLAGS"
911
912   AC_LANG_POP(C++)
913 else
914   enable_module=$enable_muon
915 fi
916 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
917 AC_MSG_CHECKING([whether to compile MUON library])
918 AC_MSG_RESULT([$enable_module])
919 AC_SUBST([ALIMUON_LIBS])
920
921 dnl ------------------------------------------------------------------
922 AH_TEMPLATE([HLT_TRIGGER],[hlt trigger library])
923
924 ALITRIGGER_LIBS=
925 CHECK_HLTMODULE([trigger],
926                 [], [$ALIROOT_CPPFLAGS],
927                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
928                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
929                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
930
931 if test "x$enable_module" = "xmissheader"; then
932   enable_module="no...header.missing"
933   enable_trigger=$enable_module
934 elif test "x$enable_module" = "xforce"; then
935   enable_trigger="yes"
936 else
937   enable_trigger=$enable_module
938 fi
939
940 if test "x$enable_trigger" = "xyes" ; then 
941   AC_DEFINE(HLT_TRIGGER)
942   ALITRIGGER_LIBS=$ALIHLTMODULE_LIBS
943 else
944   enable_module=$enable_trigger
945 fi
946 AM_CONDITIONAL(EN_HLT_TRIGGER, test x$enable_trigger = xyes)
947 AC_MSG_CHECKING([whether to compile Trigger library])
948 AC_MSG_RESULT([$enable_module])
949 AC_SUBST([ALITRIGGER_LIBS])
950
951 dnl ------------------------------------------------------------------
952 AH_TEMPLATE([HLT_GLOBAL],[hlt global library])
953
954 ALIGLOBAL_LIBS=
955 CHECK_HLTMODULE([global],
956                 [], [$ALIROOT_CPPFLAGS],
957                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
958                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
959                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
960
961 if test "x$enable_module" = "xmissheader"; then
962   enable_module="no...header.missing"
963   enable_global=$enable_module
964 elif test "x$enable_module" = "xforce"; then
965   enable_global="yes"
966 else
967   enable_global=$enable_module
968   if test "x$enable_global" = "xyes" ; then
969     AC_LANG_PUSH(C++)
970     save_CPPFLAGS="$CPPFLAGS"
971     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
972     AC_MSG_CHECKING([for required functions in AliESDtrack])
973     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliESDtrack.h>], 
974                                        [AliESDtrack t;
975                                        t.SetGlobalChi2(0)])],
976                                        [], 
977                                        [enable_global="no...requires.AliRoot>v4-17-Release"])
978     AC_MSG_RESULT([$enable_global])       
979     AC_LANG_POP(C++)
980     CPPFLAGS="$save_CPPFLAGS"
981   fi
982 fi
983
984 if test "x$enable_global" = "xyes" ; then 
985   AC_DEFINE(HLT_GLOBAL)
986   ALIGLOBAL_LIBS=$ALIHLTMODULE_LIBS
987 else
988   enable_module=$enable_global
989 fi
990 AM_CONDITIONAL(EN_HLT_GLOBAL, test x$enable_global = xyes)
991 AC_MSG_CHECKING([whether to compile Global library])
992 AC_MSG_RESULT([$enable_module])
993 AC_SUBST([ALIGLOBAL_LIBS])
994
995 dnl ------------------------------------------------------------------
996 AH_TEMPLATE([HLT_JET],[hlt jet library])
997
998 ALIFASTJET_HEADER=
999 ALIFASTJET_INCFLAGS=
1000 ALIFASTJET_LIBS=
1001 ALIFASTJET_LDFLAGS=
1002 AC_ARG_WITH(fastjet, [installation path of the FASTJET package],
1003                      [ test "x$with_fastjet" != "xno" && export FASTJET=$with_fastjet],
1004                      [ test -n $FASTJET && with_fastjet=$FASTJET ])
1005
1006 if test "x$with_fastjet" != "x" && test "x$with_fastjet" != "xno" ; then
1007   ALIFASTJET_INCFLAGS="-I${with_fastjet}/include"
1008   ALIFASTJET_HEADER="PseudoJet.hh"
1009   ALIFASTJET_LDFLAGS="-L${with_fastjet}/lib"
1010   ALIFASTJET_LIBS="CGAL fastjet"
1011 else
1012   with_fastjet=no
1013 fi
1014
1015 CHECK_HLTMODULE([jet],
1016         [$ALIFASTJET_HEADER], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/JETAN $ALIFASTJET_INCFLAGS],
1017         [$ALIFASTJET_LIBS], [-L$ROOTLIBDIR $ALIFASTJET_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS],
1018         [AOD ESD ANALYSIS ANALYSISalice JETAN JETANMC], 
1019         [-L$ROOTLIBDIR $ALIROOT_LDFLAGS -L$ALICE_ROOT/lib/tgt_$ALICE_TARGET],
1020         [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1021
1022 if test "x$enable_module" = "xmissheader"; then
1023   enable_module="no...header.missing"
1024   enable_jet=$enable_module
1025 elif test "x$enable_module" = "xforce"; then
1026   enable_jet="yes"
1027 else
1028   enable_jet=$enable_module
1029 fi
1030
1031 if test "x$enable_jet" = "xyes" ; then
1032   AC_DEFINE(HLT_JET)
1033   ALIJET_LIBS="$ALIHLTMODULE_LIBS"
1034   
1035   if test "x$with_fastjet" != "xno"; then
1036      AC_DEFINE(HAVE_FASTJET)
1037      AC_DEFINE(WITHFASTJET)
1038      ALIJET_LIBS="$ALIJET_LIBS -L$FASTJET_LDFLAGS"
1039   fi
1040   AC_MSG_CHECKING([compilation with FASTJET package])
1041   AC_MSG_RESULT($with_fastjet)
1042
1043 else
1044   enable_module=$enable_jet
1045 fi
1046
1047 AM_CONDITIONAL(EN_HLT_JET, test x$enable_jet = xyes)
1048 AC_MSG_CHECKING([whether to compile Jet library])
1049 AC_MSG_RESULT([$enable_module])
1050 AC_SUBST([ALIJET_LIBS])
1051
1052 dnl ------------------------------------------------------------------
1053 AH_TEMPLATE([HLT_ITS],[hlt its library])
1054
1055 ALIITS_LIBS=
1056 CHECK_HLTMODULE([its],
1057                 [AliITSCompressRawDataSDD.h], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS],
1058                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1059                 [ITSbase ITSrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1060                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1061
1062 if test "x$enable_module" = "xmissheader"; then
1063   enable_module="no...header.missing"
1064   enable_its=$enable_module
1065 elif test "x$enable_module" = "xforce"; then
1066   enable_its="yes"
1067 else
1068   enable_its=$enable_module
1069   if test "x$enable_its" = "xyes" ; then
1070     AC_LANG_PUSH(C++)
1071     save_CPPFLAGS="$CPPFLAGS"
1072     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS"
1073     # changes in the AliVertexer base class revision 26414, Thu Jun 5 15:36:18 2008
1074     # require AliVertexer::GetNominalPos()
1075     AC_MSG_CHECKING([for required functions in AliITSVertexer])
1076     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliITSVertexerZ.h>], 
1077                                        [AliITSVertexerZ v;
1078                                        v.GetNominalPos()])],
1079                                        [], 
1080                                        [enable_its="no...requires.AliRoot>v4-13-Release"])
1081     AC_MSG_RESULT([$enable_its])       
1082     AC_LANG_POP(C++)
1083     CPPFLAGS="$save_CPPFLAGS"
1084   fi
1085 fi
1086
1087 if test "x$enable_its" = "xyes" ; then 
1088   AC_DEFINE(HLT_ITS)
1089   ALIITS_LIBS=$ALIHLTMODULE_LIBS
1090 else
1091   enable_module=$enable_its
1092 fi
1093 AM_CONDITIONAL(EN_HLT_ITS, test x$enable_its = xyes)
1094 AC_MSG_CHECKING([whether to compile ITS library])
1095 AC_MSG_RESULT([$enable_module])
1096 AC_SUBST([ALIITS_LIBS])
1097
1098 dnl ------------------------------------------------------------------
1099 AH_TEMPLATE([HLT_EMCAL],[hlt emcal library])
1100
1101 ALIEMCAL_LIBS=
1102 CHECK_HLTMODULE([emcal],
1103                 [], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/EMCAL],
1104                 [RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1105                 [EMCALrec EMCALsim EMCALbase], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1106                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1107
1108 if test "x$enable_module" = "xmissheader"; then
1109   enable_module="no...header.missing"
1110   enable_emcal=$enable_module
1111 elif test "x$enable_module" = "xforce"; then
1112   enable_emcal="yes"
1113 else
1114   enable_emcal=$enable_module
1115 fi
1116
1117 if test "x$enable_emcal" = "xyes" ; then 
1118   AC_DEFINE(HLT_EMCAL)
1119   ALIEMCAL_LIBS=$ALIHLTMODULE_LIBS
1120 else
1121   enable_module=$enable_emcal
1122 fi
1123 AM_CONDITIONAL(EN_HLT_EMCAL, test x$enable_emcal = xyes)
1124 AC_MSG_CHECKING([whether to compile EMCAL library])
1125 AC_MSG_RESULT([$enable_module])
1126 AC_SUBST([ALIEMCAL_LIBS])
1127
1128 dnl ------------------------------------------------------------------
1129 AH_TEMPLATE([HLT_COMP],[hlt comp library])
1130
1131 ALICOMP_LIBS=
1132 CHECK_HLTMODULE([comp],
1133                 [], [$ALIROOT_CPPFLAGS],
1134                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1135                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1136                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1137
1138 if test "x$enable_module" = "xmissheader"; then
1139   enable_module="no...header.missing"
1140   enable_comp=$enable_module
1141 elif test "x$enable_module" = "xforce"; then
1142   enable_comp="yes"
1143 else
1144   enable_comp=$enable_module
1145 fi
1146
1147 if test "x$enable_comp" = "xyes" ; then 
1148   AC_DEFINE(HLT_COMP)
1149   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
1150 else
1151   enable_module=$enable_comp
1152 fi
1153 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
1154 AC_MSG_CHECKING([whether to compile comp library])
1155 AC_MSG_RESULT([$enable_module])
1156 AC_SUBST([ALICOMP_LIBS])
1157
1158 dnl ------------------------------------------------------------------
1159 AC_MSG_CHECKING([whether to disable AliRoot logging])
1160 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
1161 AC_ARG_ENABLE(aliroot-logging,
1162   [AC_HELP_STRING([--disable-aliroot-logging],
1163       [disable logging through AliRoot logging methods])],
1164   [],[enable_aliroot_logging=no])
1165 if test "x$have_aliroot" = "xno" ; then
1166   enable_aliroot_logging=yes # this means 'disable'
1167 fi
1168 if test "x$enable_aliroot_logging" != "xno" ; then 
1169   AC_DEFINE(NOALIROOT_LOGGING)
1170 fi
1171 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
1172 AC_MSG_RESULT([$enable_aliroot_logging])
1173
1174 dnl ------------------------------------------------------------------
1175 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
1176 AH_TEMPLATE([DOMC],[MC saving])
1177 AC_ARG_ENABLE(mc-saving,
1178   [AC_HELP_STRING([--enable-mc-saving],
1179       [enable saving MC data through the chain])],
1180   [],[enable_mc_saving=no])
1181 if test "x$enable_mc_saving" = "xyes" ; then 
1182   AC_DEFINE(DOMC)
1183 fi
1184 AC_MSG_RESULT([$enable_mc_saving])
1185
1186 dnl ------------------------------------------------------------------
1187 dnl certainly something old, but we keep the define
1188 AC_MSG_CHECKING([whether to use ROWHOUGH])
1189 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
1190 AC_ARG_ENABLE(rowhough,
1191   [AC_HELP_STRING([--enable-rowhough],
1192       [use ROWHOUGH ])],
1193   [],[enable_rowhough=no])
1194 if test "x$enable_rowhough" = "xyes" ; then 
1195   AC_DEFINE(USEROWHOUGH)
1196 fi
1197 AC_MSG_RESULT([$enable_rowhough])
1198
1199 dnl ------------------------------------------------------------------
1200 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
1201 dnl stand-alone build system. This is most likely something old we can
1202 dnl get rid off later, or do something more reasonable. Since the define
1203 dnl needs the quotes they have to be  escaped. This works well for the
1204 dnl Makefile but not for the configure script. So we have to add the
1205 dnl defines after all the other checks.
1206 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
1207 if test ! "x$have_aliroot" = "xno" ; then
1208   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
1209 fi
1210
1211 dnl ------------------------------------------------------------------
1212 dnl
1213 dnl Documentation
1214 dnl
1215 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
1216 AC_PATH_PROG(PERL, perl)
1217 AC_PATH_PROG(DOXYGEN, doxygen)
1218 AC_ARG_ENABLE(dot,
1219   [AC_HELP_STRING([--enable-dot],
1220       [enable dot documentation generator])],
1221   [],[enable_dot=no])
1222 HAVE_DOT=NO
1223 DOT_PATH=
1224 AC_PATH_PROG(DOT, dot)
1225 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
1226    HAVE_DOT=YES
1227    DOT_PATH=`dirname $DOT`
1228 fi
1229
1230 AC_MSG_CHECKING([for documentation mode])
1231 AC_ARG_ENABLE(doc,
1232   [AC_HELP_STRING([--disable-doc],
1233       [disable documentation build; monolithic build --enable-doc=mono ])],
1234   [],[enable_doc=modules])
1235
1236 if test "x$DOXYGEN" = "x" ; then
1237    enable_doc=no.doxygen
1238 elif test "x$enable_doc" = "xyes" ; then
1239    enable_doc=yes
1240 elif test ! "x$enable_doc" = "xmono" && \
1241      test ! "x$enable_doc" = "xmodules"  && \
1242      test ! "x$enable_doc" = "xno"; then
1243    enable_doc=no
1244    AC_MSG_WARN([unknown option])
1245 fi
1246 if test "x$enable_doc" = "xno" ; then
1247    enable_doc=off
1248    DOXYGEN=
1249 fi
1250
1251 AC_MSG_RESULT([$enable_doc])
1252 AM_CONDITIONAL(MONOLITHIC_DOC, test "x$enable_doc" = "xmono")
1253 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
1254 AC_SUBST([HAVE_DOT])
1255 AC_SUBST([DOT_PATH])
1256
1257 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
1258 dnl echo $HAVE_SRC_SUBDIR
1259 dnl if ! test -d $HAVE_SRC_SUBDIR; then
1260 dnl   HAVE_SRC_SUBDIR=
1261 dnl fi
1262 dnl AC_SUBST([HAVE_SRC_SUBDIR])
1263
1264 dnl ------------------------------------------------------------------
1265 AC_MSG_NOTICE([---------------------------------------------- ])
1266 AC_MSG_NOTICE([                build summary                  ])
1267 AC_MSG_NOTICE([---------------------------------------------- ])
1268
1269 AC_CONFIG_FILES([Makefile 
1270                  BASE/Makefile
1271                  BASE/setenv.sh
1272                  BASE/setenv.csh
1273                  BASE/HOMER/Makefile
1274                  BASE/util/Makefile
1275                  BASE/util/test/Makefile
1276                  BASE/interface/Makefile
1277                  BASE/test/Makefile
1278                  BASE/interface/test/Makefile
1279                  doc/Makefile
1280                  doc/doxygen.conf
1281                  doc/doxymodule.conf])
1282
1283 dnl AliRoot and installation directory for libraries
1284 dnl 
1285 AC_MSG_NOTICE([AliRoot: $have_aliroot])
1286 AM_CONDITIONAL(HAVE_ALIROOT, test "x$have_aliroot" != "xno" )
1287 if test "x$have_aliroot" != "xno"; then 
1288   AC_CONFIG_FILES([sim/Makefile  
1289                    rec/Makefile  
1290                    rec/test/Makefile     
1291                    rec/startAliEVE-barrel-tracks.sh
1292                    shuttle/Makefile
1293                    pendolino/Makefile
1294                    benchmark/Makefile
1295                    QA/Makefile
1296                    ])
1297 fi
1298 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
1299 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
1300 AC_MSG_NOTICE([libdir set to $libdir])
1301 fi
1302
1303 AC_MSG_NOTICE([compile sample library: $enable_sample])
1304 if test "x$enable_sample" = "xyes"; then 
1305   AC_CONFIG_FILES([SampleLib/Makefile])
1306 fi
1307
1308 AC_MSG_NOTICE([compile RCU library: $enable_rcu])
1309 if test "x$enable_rcu" = "xyes"; then 
1310   AC_CONFIG_FILES([RCU/Makefile
1311                    RCU/test/Makefile
1312                    ])
1313 fi
1314
1315 AC_MSG_NOTICE([compile TPC library: $enable_tpc])
1316 if test "x$enable_tpc" = "xyes"; then 
1317   AC_CONFIG_FILES([TPCLib/Makefile            
1318                    TPCLib/test/Makefile       
1319                    TPCLib/mapping2array.cxx     
1320                    TPCLib/EVE/Makefile
1321                    ])
1322 fi
1323
1324 AC_MSG_NOTICE([compile PHOS library: $enable_phos])
1325 if test "x$enable_phos" = "xyes"; then 
1326   AC_CONFIG_FILES([PHOS/Makefile])
1327 fi
1328
1329 AC_MSG_NOTICE([compile TRD library: $enable_trd])
1330 if test "x$enable_trd" = "xyes"; then 
1331   AC_CONFIG_FILES([TRD/Makefile])
1332 fi
1333
1334 AC_MSG_NOTICE([compile FMD library: $enable_fmd])
1335 if test "x$enable_fmd" = "xyes"; then 
1336   AC_CONFIG_FILES([FMD/Makefile])
1337 fi
1338
1339 AC_MSG_NOTICE([compile MUON library: $enable_muon])
1340 if test "x$enable_muon" = "xyes"; then 
1341   AC_CONFIG_FILES([MUON/Makefile])
1342 fi
1343
1344 AC_MSG_NOTICE([compile ITS library: $enable_its])
1345 if test "x$enable_its" = "xyes"; then 
1346   AC_CONFIG_FILES([ITS/Makefile])
1347 fi
1348
1349 AC_MSG_NOTICE([compile EMCAL library: $enable_emcal])
1350 if test "x$enable_emcal" = "xyes"; then 
1351   AC_CONFIG_FILES([EMCAL/Makefile])
1352 fi
1353
1354 AC_MSG_NOTICE([compile trigger library: $enable_trigger])
1355 if test "x$enable_trigger" = "xyes"; then 
1356   AC_CONFIG_FILES([trigger/Makefile
1357                    trigger/test/Makefile])
1358 fi
1359
1360 AC_MSG_NOTICE([compile global library: $enable_global])
1361 if test "x$enable_global" = "xyes"; then 
1362   AC_CONFIG_FILES([global/Makefile])
1363 fi
1364
1365 AC_MSG_NOTICE([compile jet library: $enable_jet])
1366 if test "x$enable_jet" = "xyes"; then 
1367   AC_CONFIG_FILES([JET/Makefile])
1368 fi
1369
1370 AC_MSG_NOTICE([compile comp library: $enable_comp])
1371 if test "x$enable_comp" = "xyes"; then 
1372   AC_CONFIG_FILES([comp/Makefile])
1373 fi
1374
1375 AC_OUTPUT
1376 dnl
1377 dnl EOF
1378 dnl
1379