]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/configure.ac
aa59811000511ffdc3c8d25bd35fb92838c4ce5b
[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([-Wno-portability])
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_NOTICE([-------------------------------------------------])
555 AC_MSG_NOTICE([checking dependencies for HLTbase library])
556 HLTBASE_CHECKLIBS='XMLParser'
557 for CHECKLIB in $HLTBASE_CHECKLIBS ; do
558   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
559   LIBS="$save_LIBS $ROOTLIBS $ALIHLTBASE_LIBS"
560   AC_CHECK_LIB([$CHECKLIB],[_init], [ALIHLTBASE_LIBS="$ALIHLTBASE_LIBS -l$CHECKLIB"])
561 done
562 AC_SUBST([ALIHLTBASE_LIBS])
563
564 dnl ------------------------------------------------------------------
565 AC_MSG_CHECKING([whether to compile sample library])
566 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
567 AC_ARG_ENABLE(sample,
568   [AC_HELP_STRING([--disable-sample],
569       [compile the sample library ])],
570   [],
571   [if test "x$have_aliroot" = "xno" ; then
572      enable_sample="no...requires.AliRoot"
573    else
574      enable_sample=yes
575    fi
576   ])
577
578 if test "x$enable_sample" = "xyes" ; then 
579   AC_DEFINE(HLT_SAMPLE)
580 fi
581 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
582 AC_MSG_RESULT([$enable_sample])
583
584 dnl ------------------------------------------------------------------
585 AH_TEMPLATE([HLT_UTIL],[HLT utility library])
586 ALIUTIL_LIBS=
587 CHECK_HLTMODULE([util],
588                 [], 
589                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/RAW -I$ALICE_ROOT/PYTHIA6],
590                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
591                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
592                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
593
594 if test "x$enable_module" = "xmissheader"; then
595   enable_module="no...missing.headers"
596   enable_util=$enable_module
597 elif test "x$enable_module" = "xforce"; then
598   enable_util="yes"
599 else
600   enable_util=$enable_module
601 fi
602 if test "x$enable_util" = "xyes" ; then 
603   AC_DEFINE(HLT_UTIL)
604   ALIUTIL_LIBS=$ALIHLTMODULE_LIBS
605 fi
606 AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
607 AC_MSG_CHECKING([whether to compile Util library])
608 AC_MSG_RESULT([$enable_module])
609 AC_SUBST([ALIUTIL_LIBS])
610
611 dnl ------------------------------------------------------------------
612 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
613
614 ALITPC_LIBS=
615 CHECK_HLTMODULE([tpc],
616                 [AliTPCRawStream.h], 
617                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
618                 [Gui ANALYSIS STAT], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
619                 [TPCbase TPCrec TPCcalib], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
620                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
621
622 if test "x$enable_module" = "xmissheader"; then
623   enable_module="no...missing.headers"
624   enable_tpc=$enable_module
625 elif test "x$enable_module" = "xforce"; then
626   enable_tpc="yes"
627 else
628   enable_tpc=$enable_module
629 fi
630
631 if test "x$enable_tpc" = "xyes" ; then 
632   AC_LANG_PUSH(C++)
633   AC_DEFINE(HLT_TPC)
634   ALITPC_LIBS=$ALIHLTMODULE_LIBS
635   dnl
636   dnl Check for functionality in the TPC reconstruction required for online
637   dnl processing
638   dnl 
639   have_tpc_hltoffline_rec=no
640   AC_MSG_CHECKING(for on-line features of TPC offline reconstruction)
641     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
642     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
643     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
644     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliTPCtrackerMI.h>
645                                        #include <AliTPCclustererMI.h>   
646                                        #include <TObjArray.h>], 
647                                     [AliTPCtrackerMI tracker;
648                                        TObjArray* array=NULL;
649                                        tracker.LoadClusters(array);
650                                        AliTPCclustererMI cl(NULL, NULL);
651                                        cl.GetOutputClonesArray();])],
652                                     [have_tpc_hltoffline_rec=yes], 
653                                       [AC_DEFINE(HAVE_NOT_TPCOFFLINE_REC)])
654     LIBS=$save_LIBS
655   AC_MSG_RESULT([$have_tpc_hltoffline_rec])
656
657   AC_CHECK_HEADER([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
658   AC_CHECK_HEADER([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
659   AC_CHECK_HEADER([AliAltroRawStreamV3.h], [], [AC_DEFINE(HAVE_NOT_ALTRORAWSTREAMV3)])
660
661   have_tpc_mapping=no
662   if test ! "x$have_aliroot" = "xno" ; then
663     # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC 
664     # which is stored in the TPC/mapping/Patchx.data files from
665     # AliRoot version v4-04-Release (May 2006)
666     AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
667     TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
668     AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data], 
669                    [have_tpc_mapping=yes
670                     AC_SUBST(TPC_PAD_MAPPING_PATH)
671                     AC_DEFINE(HAVE_TPC_MAPPING)],
672                    [])
673     
674   fi
675   AC_MSG_CHECKING([for TPC mapping layout])
676   AC_MSG_RESULT([$have_tpc_mapping])
677   AC_LANG_POP(C++)
678
679 else
680   enable_module=$enable_tpc
681 fi
682 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
683 AC_MSG_CHECKING([whether to compile TPC library])
684 AC_MSG_RESULT([$enable_module])
685 AC_SUBST([ALITPC_LIBS])
686
687 dnl ------------------------------------------------------------------
688 AH_TEMPLATE([HLT_RCU],[hlt rcu library])
689
690 CHECK_HLTMODULE([rcu],
691                 [AliAltroDecoder.h], 
692                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
693                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
694                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
695                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
696
697 if test "x$enable_module" = "xmissheader"; then
698   enable_module="no...missing.headers"
699   enable_rcu=$enable_module
700 elif test "x$enable_module" = "xforce"; then
701   enable_rcu="yes"
702 else
703   AC_LANG_PUSH(C++)
704   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
705   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
706   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
707   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
708                                   [AliAltroDecoder decoder;
709                                   decoder.CopyBackward(NULL, 0);])],
710                                   [enable_rcu=$enable_module], 
711                                   [enable_module="no...requires.AliRoot>v4-10-Release"
712                                    enable_rcu="no...requires.AliRoot>v4-10-Release"])
713   CPPFLAGS=$save_CPPFLAGS
714   LDFLAGS=$save_LDFLAGS
715   LIBS=$save_LIBS
716   AC_LANG_POP(C++)
717 fi
718
719 if test "x$enable_rcu" = "xyes" ; then 
720   AC_DEFINE(HLT_RCU)
721 else
722   enable_module=$enable_rcu
723 fi
724 AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
725 AC_MSG_CHECKING([whether to compile RCU library])
726 AC_MSG_RESULT([$enable_module])
727 AC_SUBST([ALIRCU_LIBS])
728
729 dnl ------------------------------------------------------------------
730 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
731   
732 ALIPHOS_LIBS=
733 CHECK_HLTMODULE([phos],
734                 [], [$ALIROOT_CPPFLAGS],
735                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
736                 [PHOSUtils PHOSbase PHOSrec PHOSsim PHOSshuttle], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
737                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
738
739 if test "x$enable_module" = "xmissheader"; then
740   enable_module="no...requires.AliRoot>v4-05-07"
741   enable_phos=$enable_module
742 elif test "x$enable_module" = "xforce"; then
743   enable_phos="yes"
744 else
745   have_alicalorawstream=no
746   if test ! "x$have_aliroot" = "xno" ; then
747     AC_LANG_PUSH(C++)
748     save_CPPFLAGS="$CPPFLAGS"
749     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
750     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
751     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/PHOS"
752     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
753     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
754                                         #include <AliCaloRawStream.h>], 
755                                        [int i])],
756                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
757                                         have_alicalorawstream=yes], 
758                                        [])
759     AC_MSG_RESULT([$have_aliphosrecoparam])
760     AC_MSG_CHECKING([for required EMC functionality in AliPHOSRecoParam.h ])
761     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliPHOSRecoParam.h>], 
762                                        [AliPHOSRecoParam param;
763                                         param.GetEMCClusteringThreshold()])],
764                                        [have_aliphosrecoparam=yes], 
765                                        [AC_DEFINE(HAVE_NOT_PHOSRECOPARAMEMC)])
766     AC_MSG_RESULT([$have_alicalorawstream])
767     AC_LANG_POP(C++)
768     CPPFLAGS="$save_CPPFLAGS"
769   fi
770   if test "x$have_alicalorawstream" != "xyes"; then
771     enable_phos="no...requires.AliRoot>v4-05-07"
772   else
773     enable_phos=$enable_module
774   fi
775 fi
776
777 if test "x$enable_phos" = "xyes" ; then 
778   AC_DEFINE(HLT_PHOS)
779   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
780 else
781   enable_module=$enable_phos
782 fi
783 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
784 AC_MSG_CHECKING([whether to compile PHOS library])
785 AC_MSG_RESULT([$enable_module])
786 AC_SUBST([ALIPHOS_LIBS])
787
788 dnl ------------------------------------------------------------------
789 AH_TEMPLATE([HLT_TRD],[hlt trd library])
790   
791 ALITRD_LIBS=
792 CHECK_HLTMODULE([trd],
793                 [], [],
794                 [MLP XMLParser], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
795                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
796                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
797
798 if test "x$enable_module" = "xmissheader"; then
799   enable_module="no...requires.AliRoot>v4-07-Release"
800   enable_trd=$enable_module
801 elif test "x$enable_module" = "xforce"; then
802   enable_trd="yes"
803 else
804   enable_trd=$enable_module
805   if test "x$enable_trd" = "xyes" ; then
806     AC_LANG_PUSH(C++)
807     save_CPPFLAGS="$CPPFLAGS"
808     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
809     # AliTRDclusterizer::SetRawVersion() requires >v4-07-Release
810     # changed to AliTRDrecoParam::SetSeedingOn() due to revision 26327, Mon Jun 2 2008
811     # changed to AliTRDReconstructor::SetStreamLevel() due to revision 27797, Tue Aug 5 2008
812     # changed to AliTRDReconstructor::SetClusters() according to revision 28069, Mon Aug 18 2008
813     # changed to AliTRDCluster according to revision 30461, Thu Dec 18 2008
814     # changed to AliTRDclusterizer::GetAddedClusters according to revision 31299, Wed Mar 4 2009
815     AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
816     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
817                                        [AliTRDclusterizer c;
818                                        c.GetAddedClusters()])],
819                                        [], 
820                                        [enable_trd="no...requires.AliRoot>v4-16-Release"])
821     AC_MSG_RESULT([$enable_trd])       
822     AC_LANG_POP(C++)
823     CPPFLAGS="$save_CPPFLAGS"
824   fi
825 fi
826
827 if test "x$enable_trd" = "xyes" ; then 
828   AC_DEFINE(HLT_TRD)
829   ALITRD_LIBS=$ALIHLTMODULE_LIBS
830 else
831   enable_module=$enable_trd
832 fi
833 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
834 AC_MSG_CHECKING([whether to compile TRD library])
835 AC_MSG_RESULT([$enable_module])
836 AC_SUBST([ALITRD_LIBS])
837
838 dnl ------------------------------------------------------------------
839 AH_TEMPLATE([HLT_FMD],[hlt fmd library])
840
841 ALIFMD_LIBS=$ALIHLTMODULE_LIBS
842 CHECK_HLTMODULE([fmd],
843                 [], [],
844                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
845                 [FMDbase FMDrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS],
846                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
847
848 if test "x$enable_module" = "xmissheader"; then
849   enable_module="no...missing.headers"
850   enable_fmd=$enable_module
851 elif test "x$enable_module" = "xforce"; then
852   enable_fmd="yes"
853 else
854   enable_fmd=$enable_module
855 fi
856
857 if test "x$enable_fmd" = "xyes" ; then
858   AC_DEFINE(HLT_FMD)
859   ALIFMD_LIBS=$ALIHLTMODULE_LIBS
860 else
861   enable_module=$enable_fmd
862 fi
863 AM_CONDITIONAL(EN_HLT_FMD, test x$enable_fmd = xyes)
864 AC_MSG_CHECKING([whether to compile FMD library])
865 AC_MSG_RESULT([$enable_module])
866 AC_SUBST([ALIFMD_LIBS])
867
868 dnl ------------------------------------------------------------------
869 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
870
871 ALIMUON_LIBS=
872 CHECK_HLTMODULE([dimuon],
873                 [AliMpExMap.h AliMUONTriggerIO.h], 
874                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
875                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
876                 [MUONcore MUONraw MUONbase MUONgeometry MUONmapping MUONcalib MUONsim MUONtrigger MUONevaluation MUONrec], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
877                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
878
879 if test "x$enable_module" = "xmissheader"; then
880   enable_module="no...requires.AliRoot>=v4-08-Release"
881   enable_muon=$enable_module
882 elif test "x$enable_module" = "xforce"; then
883   enable_muon="yes"
884 else
885   enable_muon=$enable_module
886 fi
887
888 if test "x$enable_muon" = "xyes" ; then 
889   AC_DEFINE(HLT_MUON)
890   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
891   AC_LANG_PUSH(C++)
892   save_CPPFLAGS="$CPPFLAGS"
893
894   dnl
895   dnl Check for functionality GetRawStream AliMUONDigitMaker.h
896   dnl 
897   have_muon_digitmaker_getrawstream=no
898   AC_MSG_CHECKING(for GetRawStream methods of AliMUONDigitMaker)
899     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON"
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 <AliMUONDigitMaker.h>], 
903                                     [AliMUONDigitMaker dm;
904                                        dm.GetRawStreamTracker();])],
905                                     [have_muon_digitmaker_getrawstream=yes], 
906                                       [AC_DEFINE(HAVE_NOT_MUON_DIGITMAKER_GETRAWSTREAM)])
907     LIBS=$save_LIBS
908   AC_MSG_RESULT([$have_muon_digitmaker_getrawstream])
909
910   dnl
911   dnl Check for AliMpPad::GetPositionX/Y
912   dnl change of implementation in MUON code
913   dnl revision 31769, Wed Apr 1 2009
914   dnl 
915   have_muon_alimppad_getposition=no
916   AC_MSG_CHECKING(for GetPosition methods of AliMpPad)
917     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/MUON/mapping"
918     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
919     LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALIMUON_LIBS"
920     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliMpPad.h>], 
921                                     [AliMpPad pad;
922                                      pad.GetPositionX();])],
923                                     [have_muon_alimppad_getposition=yes], 
924                                       [AC_DEFINE(HAVE_NOT_MUON_ALIMPPAD_GETPOSITION)])
925     LIBS=$save_LIBS
926   AC_MSG_RESULT([$have_muon_alimppad_getposition])
927
928   CPPFLAGS="$save_CPPFLAGS"
929
930   AC_LANG_POP(C++)
931 else
932   enable_module=$enable_muon
933 fi
934 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
935 AC_MSG_CHECKING([whether to compile MUON library])
936 AC_MSG_RESULT([$enable_module])
937 AC_SUBST([ALIMUON_LIBS])
938
939 dnl ------------------------------------------------------------------
940 AH_TEMPLATE([HLT_TRIGGER],[hlt trigger library])
941
942 ALITRIGGER_LIBS=
943 CHECK_HLTMODULE([trigger],
944                 [], [$ALIROOT_CPPFLAGS],
945                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
946                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
947                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
948
949 if test "x$enable_module" = "xmissheader"; then
950   enable_module="no...header.missing"
951   enable_trigger=$enable_module
952 elif test "x$enable_module" = "xforce"; then
953   enable_trigger="yes"
954 else
955   enable_trigger=$enable_module
956 fi
957
958 if test "x$enable_trigger" = "xyes" ; then 
959   AC_DEFINE(HLT_TRIGGER)
960   ALITRIGGER_LIBS=$ALIHLTMODULE_LIBS
961 else
962   enable_module=$enable_trigger
963 fi
964 AM_CONDITIONAL(EN_HLT_TRIGGER, test x$enable_trigger = xyes)
965 AC_MSG_CHECKING([whether to compile Trigger library])
966 AC_MSG_RESULT([$enable_module])
967 AC_SUBST([ALITRIGGER_LIBS])
968
969 dnl ------------------------------------------------------------------
970 AH_TEMPLATE([HLT_GLOBAL],[hlt global library])
971
972 ALIGLOBAL_LIBS=
973 CHECK_HLTMODULE([global],
974                 [], [$ALIROOT_CPPFLAGS],
975                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
976                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
977                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
978
979 if test "x$enable_module" = "xmissheader"; then
980   enable_module="no...header.missing"
981   enable_global=$enable_module
982 elif test "x$enable_module" = "xforce"; then
983   enable_global="yes"
984 else
985   enable_global=$enable_module
986   if test "x$enable_global" = "xyes" ; then
987     AC_LANG_PUSH(C++)
988     save_CPPFLAGS="$CPPFLAGS"
989     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
990     AC_MSG_CHECKING([for required functions in AliESDtrack])
991     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliESDtrack.h>], 
992                                        [AliESDtrack t;
993                                        t.SetGlobalChi2(0)])],
994                                        [], 
995                                        [enable_global="no...requires.AliRoot>v4-17-Release"])
996     AC_MSG_RESULT([$enable_global])       
997     AC_LANG_POP(C++)
998     CPPFLAGS="$save_CPPFLAGS"
999   fi
1000 fi
1001
1002 if test "x$enable_global" = "xyes" ; then 
1003   AC_DEFINE(HLT_GLOBAL)
1004   ALIGLOBAL_LIBS=$ALIHLTMODULE_LIBS
1005 else
1006   enable_module=$enable_global
1007 fi
1008 AM_CONDITIONAL(EN_HLT_GLOBAL, test x$enable_global = xyes)
1009 AC_MSG_CHECKING([whether to compile Global library])
1010 AC_MSG_RESULT([$enable_module])
1011 AC_SUBST([ALIGLOBAL_LIBS])
1012
1013 dnl ------------------------------------------------------------------
1014 AH_TEMPLATE([HLT_JET],[hlt jet library])
1015
1016 ALIFASTJET_HEADER=
1017 ALIFASTJET_INCFLAGS=
1018 ALIFASTJET_LIBS=
1019 ALIFASTJET_LDFLAGS=
1020 AC_ARG_WITH(fastjet, [installation path of the FASTJET package],
1021                      [ test "x$with_fastjet" != "xno" && export FASTJET=$with_fastjet],
1022                      [ test -n $FASTJET && with_fastjet=$FASTJET ])
1023
1024 if test "x$with_fastjet" != "x" && test "x$with_fastjet" != "xno" ; then
1025   ALIFASTJET_INCFLAGS="-I${with_fastjet}/include"
1026   ALIFASTJET_HEADER="PseudoJet.hh"
1027   ALIFASTJET_LDFLAGS="-L${with_fastjet}/lib"
1028   ALIFASTJET_LIBS="CGAL fastjet"
1029 else
1030   with_fastjet=no
1031 fi
1032
1033 CHECK_HLTMODULE([jet],
1034         [$ALIFASTJET_HEADER], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/JETAN $ALIFASTJET_INCFLAGS],
1035         [$ALIFASTJET_LIBS], [-L$ROOTLIBDIR $ALIFASTJET_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS],
1036         [AOD ESD ANALYSIS ANALYSISalice JETAN JETANMC], 
1037         [-L$ROOTLIBDIR $ALIROOT_LDFLAGS -L$ALICE_ROOT/lib/tgt_$ALICE_TARGET],
1038         [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1039
1040 if test "x$enable_module" = "xmissheader"; then
1041   enable_module="no...header.missing"
1042   enable_jet=$enable_module
1043 elif test "x$enable_module" = "xforce"; then
1044   enable_jet="yes"
1045 else
1046   enable_jet=$enable_module
1047 fi
1048
1049 if test "x$enable_jet" = "xyes" ; then
1050   AC_DEFINE(HLT_JET)
1051   ALIJET_LIBS="$ALIHLTMODULE_LIBS"
1052   
1053   if test "x$with_fastjet" != "xno"; then
1054      AC_DEFINE(HAVE_FASTJET)
1055      AC_DEFINE(WITHFASTJET)
1056      ALIJET_LIBS="$ALIJET_LIBS -L$FASTJET_LDFLAGS"
1057   fi
1058   AC_MSG_CHECKING([compilation with FASTJET package])
1059   AC_MSG_RESULT($with_fastjet)
1060
1061 else
1062   enable_module=$enable_jet
1063 fi
1064
1065 AM_CONDITIONAL(EN_HLT_JET, test x$enable_jet = xyes)
1066 AC_MSG_CHECKING([whether to compile Jet library])
1067 AC_MSG_RESULT([$enable_module])
1068 AC_SUBST([ALIJET_LIBS])
1069
1070 dnl ------------------------------------------------------------------
1071 AH_TEMPLATE([HLT_ITS],[hlt its library])
1072
1073 ALIITS_LIBS=
1074 CHECK_HLTMODULE([its],
1075                 [AliITSCompressRawDataSDD.h], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS],
1076                 [Gui RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1077                 [ITSbase ITSrec ITSsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1078                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1079
1080 if test "x$enable_module" = "xmissheader"; then
1081   enable_module="no...header.missing"
1082   enable_its=$enable_module
1083 elif test "x$enable_module" = "xforce"; then
1084   enable_its="yes"
1085 else
1086   enable_its=$enable_module
1087   if test "x$enable_its" = "xyes" ; then
1088     AC_LANG_PUSH(C++)
1089     save_CPPFLAGS="$CPPFLAGS"
1090     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/ITS"
1091     # changes in the AliVertexer base class revision 26414, Thu Jun 5 15:36:18 2008
1092     # require AliVertexer::GetNominalPos()
1093     AC_MSG_CHECKING([for required functions in AliITSVertexer])
1094     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliITSVertexerZ.h>], 
1095                                        [AliITSVertexerZ v;
1096                                        v.GetNominalPos()])],
1097                                        [], 
1098                                        [enable_its="no...requires.AliRoot>v4-13-Release"])
1099     AC_MSG_RESULT([$enable_its])       
1100     AC_LANG_POP(C++)
1101     CPPFLAGS="$save_CPPFLAGS"
1102   fi
1103 fi
1104
1105 if test "x$enable_its" = "xyes" ; then 
1106   AC_DEFINE(HLT_ITS)
1107   ALIITS_LIBS=$ALIHLTMODULE_LIBS
1108 else
1109   enable_module=$enable_its
1110 fi
1111 AM_CONDITIONAL(EN_HLT_ITS, test x$enable_its = xyes)
1112 AC_MSG_CHECKING([whether to compile ITS library])
1113 AC_MSG_RESULT([$enable_module])
1114 AC_SUBST([ALIITS_LIBS])
1115
1116 dnl ------------------------------------------------------------------
1117 AH_TEMPLATE([HLT_EMCAL],[hlt emcal library])
1118
1119 ALIEMCAL_LIBS=
1120 CHECK_HLTMODULE([emcal],
1121                 [], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/EMCAL],
1122                 [RAWDatasim], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1123                 [EMCALrec EMCALsim EMCALbase], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1124                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1125
1126 if test "x$enable_module" = "xmissheader"; then
1127   enable_module="no...header.missing"
1128   enable_emcal=$enable_module
1129 elif test "x$enable_module" = "xforce"; then
1130   enable_emcal="yes"
1131 else
1132   enable_emcal=$enable_module
1133 fi
1134
1135 if test "x$enable_emcal" = "xyes" ; then 
1136   AC_DEFINE(HLT_EMCAL)
1137   ALIEMCAL_LIBS=$ALIHLTMODULE_LIBS
1138 else
1139   enable_module=$enable_emcal
1140 fi
1141 AM_CONDITIONAL(EN_HLT_EMCAL, test x$enable_emcal = xyes)
1142 AC_MSG_CHECKING([whether to compile EMCAL library])
1143 AC_MSG_RESULT([$enable_module])
1144 AC_SUBST([ALIEMCAL_LIBS])
1145
1146 dnl ------------------------------------------------------------------
1147 AH_TEMPLATE([HLT_COMP],[hlt comp library])
1148
1149 ALICOMP_LIBS=
1150 CHECK_HLTMODULE([comp],
1151                 [], [$ALIROOT_CPPFLAGS],
1152                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
1153                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
1154                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
1155
1156 if test "x$enable_module" = "xmissheader"; then
1157   enable_module="no...header.missing"
1158   enable_comp=$enable_module
1159 elif test "x$enable_module" = "xforce"; then
1160   enable_comp="yes"
1161 else
1162   enable_comp=$enable_module
1163 fi
1164
1165 if test "x$enable_comp" = "xyes" ; then 
1166   AC_DEFINE(HLT_COMP)
1167   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
1168 else
1169   enable_module=$enable_comp
1170 fi
1171 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
1172 AC_MSG_CHECKING([whether to compile comp library])
1173 AC_MSG_RESULT([$enable_module])
1174 AC_SUBST([ALICOMP_LIBS])
1175
1176 dnl ------------------------------------------------------------------
1177 AC_MSG_CHECKING([whether to disable AliRoot logging])
1178 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
1179 AC_ARG_ENABLE(aliroot-logging,
1180   [AC_HELP_STRING([--disable-aliroot-logging],
1181       [disable logging through AliRoot logging methods])],
1182   [],[enable_aliroot_logging=no])
1183 if test "x$have_aliroot" = "xno" ; then
1184   enable_aliroot_logging=yes # this means 'disable'
1185 fi
1186 if test "x$enable_aliroot_logging" != "xno" ; then 
1187   AC_DEFINE(NOALIROOT_LOGGING)
1188 fi
1189 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
1190 AC_MSG_RESULT([$enable_aliroot_logging])
1191
1192 dnl ------------------------------------------------------------------
1193 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
1194 AH_TEMPLATE([DOMC],[MC saving])
1195 AC_ARG_ENABLE(mc-saving,
1196   [AC_HELP_STRING([--enable-mc-saving],
1197       [enable saving MC data through the chain])],
1198   [],[enable_mc_saving=no])
1199 if test "x$enable_mc_saving" = "xyes" ; then 
1200   AC_DEFINE(DOMC)
1201 fi
1202 AC_MSG_RESULT([$enable_mc_saving])
1203
1204 dnl ------------------------------------------------------------------
1205 dnl certainly something old, but we keep the define
1206 AC_MSG_CHECKING([whether to use ROWHOUGH])
1207 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
1208 AC_ARG_ENABLE(rowhough,
1209   [AC_HELP_STRING([--enable-rowhough],
1210       [use ROWHOUGH ])],
1211   [],[enable_rowhough=no])
1212 if test "x$enable_rowhough" = "xyes" ; then 
1213   AC_DEFINE(USEROWHOUGH)
1214 fi
1215 AC_MSG_RESULT([$enable_rowhough])
1216
1217 dnl ------------------------------------------------------------------
1218 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
1219 dnl stand-alone build system. This is most likely something old we can
1220 dnl get rid off later, or do something more reasonable. Since the define
1221 dnl needs the quotes they have to be  escaped. This works well for the
1222 dnl Makefile but not for the configure script. So we have to add the
1223 dnl defines after all the other checks.
1224 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
1225 if test ! "x$have_aliroot" = "xno" ; then
1226   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
1227 fi
1228
1229 dnl ------------------------------------------------------------------
1230 dnl
1231 dnl Documentation
1232 dnl
1233 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
1234 AC_PATH_PROG(PERL, perl)
1235 AC_PATH_PROG(DOXYGEN, doxygen)
1236 AC_ARG_ENABLE(dot,
1237   [AC_HELP_STRING([--enable-dot],
1238       [enable dot documentation generator])],
1239   [],[enable_dot=no])
1240 HAVE_DOT=NO
1241 DOT_PATH=
1242 AC_PATH_PROG(DOT, dot)
1243 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
1244    HAVE_DOT=YES
1245    DOT_PATH=`dirname $DOT`
1246 fi
1247
1248 AC_MSG_CHECKING([for documentation mode])
1249 AC_ARG_ENABLE(doc,
1250   [AC_HELP_STRING([--disable-doc],
1251       [disable documentation build; monolithic build --enable-doc=mono ])],
1252   [],[enable_doc=modules])
1253
1254 if test "x$DOXYGEN" = "x" ; then
1255    enable_doc=no.doxygen
1256 elif test "x$enable_doc" = "xyes" ; then
1257    enable_doc=yes
1258 elif test ! "x$enable_doc" = "xmono" && \
1259      test ! "x$enable_doc" = "xmodules"  && \
1260      test ! "x$enable_doc" = "xno"; then
1261    enable_doc=no
1262    AC_MSG_WARN([unknown option])
1263 fi
1264 if test "x$enable_doc" = "xno" ; then
1265    enable_doc=off
1266    DOXYGEN=
1267 fi
1268
1269 AC_MSG_RESULT([$enable_doc])
1270 AM_CONDITIONAL(MONOLITHIC_DOC, test "x$enable_doc" = "xmono")
1271 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
1272 AC_SUBST([HAVE_DOT])
1273 AC_SUBST([DOT_PATH])
1274
1275 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
1276 dnl echo $HAVE_SRC_SUBDIR
1277 dnl if ! test -d $HAVE_SRC_SUBDIR; then
1278 dnl   HAVE_SRC_SUBDIR=
1279 dnl fi
1280 dnl AC_SUBST([HAVE_SRC_SUBDIR])
1281
1282 dnl ------------------------------------------------------------------
1283 AC_MSG_NOTICE([---------------------------------------------- ])
1284 AC_MSG_NOTICE([                build summary                  ])
1285 AC_MSG_NOTICE([---------------------------------------------- ])
1286
1287 AC_CONFIG_FILES([Makefile 
1288                  BASE/Makefile
1289                  BASE/setenv.sh
1290                  BASE/setenv.csh
1291                  BASE/HOMER/Makefile
1292                  BASE/util/Makefile
1293                  BASE/util/test/Makefile
1294                  BASE/interface/Makefile
1295                  BASE/test/Makefile
1296                  BASE/interface/test/Makefile
1297                  doc/Makefile
1298                  doc/doxygen.conf
1299                  doc/doxymodule.conf])
1300
1301 dnl AliRoot and installation directory for libraries
1302 dnl 
1303 AC_MSG_NOTICE([AliRoot: $have_aliroot])
1304 AM_CONDITIONAL(HAVE_ALIROOT, test "x$have_aliroot" != "xno" )
1305 if test "x$have_aliroot" != "xno"; then 
1306   AC_CONFIG_FILES([sim/Makefile  
1307                    rec/Makefile  
1308                    rec/test/Makefile     
1309                    rec/startAliEVE-barrel-tracks.sh
1310                    shuttle/Makefile
1311                    pendolino/Makefile
1312                    benchmark/Makefile
1313                    QA/Makefile
1314                    ])
1315 fi
1316 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
1317 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
1318 AC_MSG_NOTICE([libdir set to $libdir])
1319 fi
1320
1321 AC_MSG_NOTICE([compile sample library: $enable_sample])
1322 if test "x$enable_sample" = "xyes"; then 
1323   AC_CONFIG_FILES([SampleLib/Makefile])
1324 fi
1325
1326 AC_MSG_NOTICE([compile RCU library: $enable_rcu])
1327 if test "x$enable_rcu" = "xyes"; then 
1328   AC_CONFIG_FILES([RCU/Makefile
1329                    RCU/test/Makefile
1330                    ])
1331 fi
1332
1333 AC_MSG_NOTICE([compile TPC library: $enable_tpc])
1334 if test "x$enable_tpc" = "xyes"; then 
1335   AC_CONFIG_FILES([TPCLib/Makefile            
1336                    TPCLib/test/Makefile       
1337                    TPCLib/mapping2array.cxx     
1338                    TPCLib/EVE/Makefile
1339                    TPCLib/calibration/Makefile
1340                    ])
1341 fi
1342
1343 AC_MSG_NOTICE([compile PHOS library: $enable_phos])
1344 if test "x$enable_phos" = "xyes"; then 
1345   AC_CONFIG_FILES([PHOS/Makefile])
1346 fi
1347
1348 AC_MSG_NOTICE([compile TRD library: $enable_trd])
1349 if test "x$enable_trd" = "xyes"; then 
1350   AC_CONFIG_FILES([TRD/Makefile])
1351 fi
1352
1353 AC_MSG_NOTICE([compile FMD library: $enable_fmd])
1354 if test "x$enable_fmd" = "xyes"; then 
1355   AC_CONFIG_FILES([FMD/Makefile])
1356 fi
1357
1358 AC_MSG_NOTICE([compile MUON library: $enable_muon])
1359 if test "x$enable_muon" = "xyes"; then 
1360   AC_CONFIG_FILES([MUON/Makefile])
1361 fi
1362
1363 AC_MSG_NOTICE([compile ITS library: $enable_its])
1364 if test "x$enable_its" = "xyes"; then 
1365   AC_CONFIG_FILES([ITS/Makefile])
1366 fi
1367
1368 AC_MSG_NOTICE([compile EMCAL library: $enable_emcal])
1369 if test "x$enable_emcal" = "xyes"; then 
1370   AC_CONFIG_FILES([EMCAL/Makefile])
1371 fi
1372
1373 AC_MSG_NOTICE([compile trigger library: $enable_trigger])
1374 if test "x$enable_trigger" = "xyes"; then 
1375   AC_CONFIG_FILES([trigger/Makefile
1376                    trigger/test/Makefile])
1377 fi
1378
1379 AC_MSG_NOTICE([compile global library: $enable_global])
1380 if test "x$enable_global" = "xyes"; then 
1381   AC_CONFIG_FILES([global/Makefile])
1382 fi
1383
1384 AC_MSG_NOTICE([compile jet library: $enable_jet])
1385 if test "x$enable_jet" = "xyes"; then 
1386   AC_CONFIG_FILES([JET/Makefile])
1387 fi
1388
1389 AC_MSG_NOTICE([compile comp library: $enable_comp])
1390 if test "x$enable_comp" = "xyes"; then 
1391   AC_CONFIG_FILES([comp/Makefile])
1392 fi
1393
1394 AC_OUTPUT
1395 dnl
1396 dnl EOF
1397 dnl
1398