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