added libAliHLTTrigger (Jochen)
[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 AC_INIT([Alice High Level Trigger] , [0.8-dev], [Matthias.Richter@ift.uib.no], alice-hlt)
9
10 dnl ------------------------------------------------------------------
11 dnl the package from CVS contains the old Makefiles as well. In order to
12 dnl prevent them from becoming overwritten, we require a separate build
13 dnl directory
14 if test "`dirname $0`" = "." ; then
15    AC_ERROR([please run the script from a separate build directory])
16 fi
17
18 dnl ------------------------------------------------------------------
19 AC_CANONICAL_SYSTEM
20 AC_PREFIX_DEFAULT(${PWD})
21 AC_CONFIG_SRCDIR(BASE/AliHLTComponent.cxx)
22 AM_INIT_AUTOMAKE
23 AC_PROG_CC
24 AC_PROG_CXX
25 AC_PROG_LIBTOOL
26
27 AC_DEBUG
28 AC_OPTIMIZATION
29 AM_CONDITIONAL(STANDALONE_SAMPLELIB, test 0 )
30
31 dnl ------------------------------------------------------------------
32 dnl A warning posted into the auto-generated files
33 dnl Does NOT concern this file ;-)
34 AUTOGENERATED_WARNING="!!!!!!!    DO NOT EDIT THIS FILE !!!!!!"
35 AC_SUBST([AUTOGENERATED_WARNING])
36
37 dnl ------------------------------------------------------------------
38 dnl
39 dnl Check for ROOT
40 dnl
41 ROOT_PATH(, [have_root=1], [AC_ERROR([Stop! The HLT package needs ROOT.])])
42 AM_CONDITIONAL(HAVE_ROOT, test "x$have_root" = "x1" )
43 AC_SUBST([ROOTSYS])
44 ROOTBINDIR=`dirname $ROOTEXEC`
45 AC_SUBST([ROOTBINDIR])
46
47 dnl test for additional required root libraries and headers
48 LIBS='-ldl'
49 if test "x$have_root" = "x1"; then
50   AC_LANG_PUSH(C++)
51   save_CPPFLAGS=$CPPFLAGS
52   save_LDFLAGS=$LDFLAGS
53   save_LIBS=$LIBS
54   CPPFLAGS=`echo $save_CPPFLAGS; for i in ${ROOTINCDIR}; do echo -n "-I$i " ; done`
55   
56   # we check for the libSTEER library which is linked to
57   # - the ROOT libs libGeom libMinuit libVMC libEG
58   # - the AliRoot libESD libRAWData (libRAWDatarec from v4-04-Rev-07)
59   # - ROOT libCint needs also libdl
60   # - from Nov 1 2006 TTreeFormula is needed by AliTagAnalysis and requires
61   #   libTreePlayer.so
62   # - from Jan 07 libESD also depends on libXMLIO
63   # - libSTEER depends on libProofPlayer since Oct 2007 (after v4-07-Release)
64   ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO Thread Proof ProofPlayer'
65   for CHECKLIB in $ROOT_CHECKLIBS ; do
66     LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
67     LIBS="$save_LIBS $ROOTLIBS $ADD_ROOTLIBS"
68     AC_CHECK_LIB([$CHECKLIB],[_init], [ADD_ROOTLIBS="$ADD_ROOTLIBS -l$CHECKLIB"])
69   done
70
71   # TBuffer.h has been made pure virtual in root v5-15-02 and one
72   # has to derive from TBufferFile.h (needed for BASE/AliHLTMessage.h)
73   AC_CHECK_HEADERS([TBufferFile.h])
74
75   # TView.h has been made pure virtual right after root v5-15-02 and one
76   # has to derive from TView3D.h (needed for TPCLib/OnlineDisplay/AliHLTTPCDisplay3D)
77   AC_CHECK_HEADERS([TView3D.h])
78
79   CPPFLAGS=$save_CPPFLAGS
80   LDFLAGS=$save_LDFLAGS
81   LIBS=$save_LIBS
82   AC_LANG_POP(C++)
83 fi
84
85 dnl ------------------------------------------------------------------
86 # TODO: make this configurable through arguments
87 #Define whether you want to run with ALIROOT or only ROOT
88 AH_TEMPLATE([ALIHLT_USEPACKAGE],[running environment])
89 ALIHLT_USEPACKAGE=ALIROOT
90 #ALIHLT_USEPACKAGE=ROOT
91 #ALIHLT_USEPACKAGE=STANDALONE
92 AC_DEFINE(use_aliroot)
93 AC_DEFINE(use_root)
94 CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
95
96 dnl ------------------------------------------------------------------
97 dnl check for AliRoot features
98 AC_LANG_PUSH(C++)
99 have_aliroot=no
100 AC_ARG_WITH(aliroot,[  --with-aliroot   top of the AliRoot installation],
101                     [test -d $with_aliroot && ALICE_ROOT=$with_aliroot],
102                     [])
103
104 if test "x$ALICE_ROOT" != "x" && test -d $ALICE_ROOT ; then
105   dnl ------------------------------------------------------------------
106   dnl Try to estimate the system architecture
107   case $host_os:$host_cpu in
108   linux*:x86_64*)       alice_target='linuxx8664gcc'            ;;
109   linux*)               alice_target='linux'                    ;;
110   *)                    alice_target='unknown'                  ;;
111   esac
112   if test "x$alice_target" = "xunknown" ; then
113     if test -z $ALICE_TARGET ; then
114     AC_MSG_ERROR([Can not estimate system architecture.
115     To avoid the problem, set the ALICE_TARGET variable appropriately.
116     Please send the following information to Matthias.Richter@ift.uib.no:
117         ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
118     else
119     AC_MSG_NOTICE([Unknown system architecture.
120     Please send the following information to Matthias.Richter@ift.uib.no:
121         ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])  
122     fi
123   else
124     if test "x$ALICE_TARGET" != "x" && test "x$ALICE_TARGET" != "x$alice_target" ; then
125     AC_MSG_WARN([The ALICE_TARGET variable does not match your current system
126     overriding $ALICE_TARGET by $alice_target])
127     fi
128     ALICE_TARGET=$alice_target
129   fi
130   ALIROOTBINDIR=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}
131   ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
132   ALIROOTINCDIR=${ALICE_ROOT}/include
133   test -d ${ALIROOTBINDIR} || AC_MSG_WARN([can not find AliRoot binary directory $ALIROOTBINDIR])
134   test -d ${ALIROOTLIBDIR} || AC_MSG_WARN([can not find AliRoot library directory $ALIROOTLIBDIR])
135   test -d ${ALIROOTINCDIR} || AC_MSG_WARN([can not find AliRoot include directory $ALIROOTINCDIR])
136 fi
137
138 AC_MSG_CHECKING([for AliRoot])
139 if test "x$ALICE_ROOT" != "x" \
140    && test -d ${ALIROOTBINDIR} \
141    && test -d ${ALIROOTLIBDIR} \
142    && test -d ${ALIROOTINCDIR}; then
143   have_aliroot=$ALICE_ROOT
144 else
145   ALIROOTBINDIR=
146   ALIROOTLIBDIR=
147   ALIROOTINCDIR=
148 fi
149 AC_MSG_RESULT([$have_aliroot])
150
151 if test ! "x$have_aliroot" = "xno" ; then
152   ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
153   ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
154   ALIROOT_LIBS="-lESD $ADD_ROOTLIBS"
155   save_CPPFLAGS=$CPPFLAGS
156   save_LDFLAGS=$LDFLAGS
157   save_LIBS=$LIBS
158   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
159   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
160   
161   # check for certain AliRoot libraries/files/features
162   # libSTEERBase present since Aug 7 2007
163   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
164   CHECKLIB=STEERBase
165   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
166
167   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
168   CHECKLIB=AOD
169   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
170
171   # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
172   have_alirawdata=no
173   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
174   CHECKLIB=RAWDatabase
175   AC_CHECK_LIB([$CHECKLIB],[_init],
176         [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
177          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
178          CHECKLIB=RAWDatarec
179          AC_CHECK_LIB([$CHECKLIB],[_init],
180                [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
181                 AC_DEFINE(HAVE_ALIRAWDATA)
182                 have_alirawdata=$CHECKLIB])],
183         [# second pass with -RAWData
184          CHECKLIB="-lRAWData"
185          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
186          AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
187                                        #include <AliRawReaderFile.h>
188                                        #include <AliRawReaderDate.h>
189                                        #include <AliRawReaderRoot.h>], 
190                                      [AliRawReaderMemory mreader;
191                                        AliRawReaderFile freader;
192                                        AliRawReaderDate dreader(NULL,0);
193                                        AliRawReaderRoot rreader(NULL,0);])],
194                                      [AC_DEFINE(HAVE_ALIRAWDATA)
195                                        ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
196                                        have_alirawdata=$CHECKLIB], 
197                                       [have_alirawdata=no])
198         ]) dnl AC_CHECK_LIB RAWDatabase
199   AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
200   AC_MSG_RESULT([$have_alirawdata])
201
202   # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
203   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
204   CHECKLIB=CDB
205   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
206
207   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
208   CHECKLIB=STEER
209   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],[have_aliroot=no])
210
211   dnl
212   dnl check whether AliLog supports notification callback
213   dnl
214   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
215   have_alilog_notification=no
216   if test ! "x$have_aliroot" = "xno" ; then
217   AC_MSG_CHECKING([whether AliLog supports notification callback])
218   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliLog.h>], 
219                                   [AliLog::AliLogNotification fct])],
220                                   [have_alilog_notification=yes], 
221                                   [AC_DEFINE(NO_ALILOG_NOTIFICATION)])
222   AC_MSG_RESULT([$have_alilog_notification])
223   fi
224
225   if test "x$have_aliroot" = "xno" ; then
226     # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
227     # but library dependencies might not be resolved completely
228     #ALIROOT_CPPFLAGS=
229     AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
230     This can happen from time to time due to development in AliRoot. You can
231     force compilation of detector libs by --enable-<detector>, but be aware
232     of unresolved references at runtime.])
233     AC_MSG_WARN([       ------------------------------------------ ])
234     AC_MSG_WARN([       Report this to $PACKAGE_BUGREPORT ])
235     AC_MSG_WARN([       please include config.log                  ])
236     AC_MSG_WARN([       ------------------------------------------ ])
237     ALIROOT_LDFLAGS=
238     ALIROOT_LIBS=
239   fi
240
241   dnl
242   dnl required header files and libraries for modules
243   dnl
244   if test ! "x$have_aliroot" = "xno" ; then
245     # the HLTTPCLib needs to link agains TPCbase and TPCrec
246     # TPC library for AliTPCParam and AliSimDigits used in 
247     # AliHLTTPCFileHandler.h and AliHLTTPCDisplay.cxx
248     # fram May 07 TPCbase depends on libGui.so
249     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
250     have_alitpc=yes
251     AC_MSG_CHECKING(for required classes in TPC libraries)
252     if test ! "x$have_alitpc" = "xno" ; then
253       ALITPC_LIBS="-lGui -lTPCbase -lTPCrec"
254       LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
255       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliSimDigits.h>
256                                        #include <AliTPCParam.h>
257                                        #include <AliTPCParamSR.h>
258                                        #include <AliTPCDigitsArray.h>
259                                        #include <AliTPCClustersArray.h>
260                                        #include <AliTPCcluster.h>     
261                                        #include <AliTPCClustersRow.h>], 
262                                       [AliSimDigits dig;
263                                        AliTPCParam param;
264                                        AliTPCParamSR paramsr;
265                                        AliTPCDigitsArray digarray;
266                                        AliTPCClustersArray clustarray;
267                                        AliTPCcluster clust;
268                                        AliTPCClustersRow row])],
269                                       [AC_DEFINE(HAVE_ALITPC)], 
270                                       [have_alitpc=no
271                                        ALITPC_LIBS= ])
272     fi
273     AC_MSG_RESULT($have_alitpc)
274   fi
275   AC_CHECK_HEADERS([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
276   AC_CHECK_HEADERS([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
277
278   have_tpc_mapping=no
279   if test ! "x$have_aliroot" = "xno" ; then
280     # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC 
281     # which is stored in the TPC/mapping/Patchx.data files from
282     # AliRoot version v4-04-Release (May 2006)
283     AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
284     TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
285     AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data], 
286                    [have_tpc_mapping=yes
287                     AC_SUBST(TPC_PAD_MAPPING_PATH)
288                     AC_DEFINE(HAVE_TPC_MAPPING)],
289                    [])
290     
291   fi
292   AC_MSG_CHECKING([for TPC mapping layout])
293   AC_MSG_RESULT([$have_tpc_mapping])
294
295   if test ! "x$have_alirawdata" = "xno" ; then
296     # check for header files needed by the TPCLib/AliHLTTPCDigitReaderPacket
297     # the header file has been moved to the TPC module
298     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS  -I${ALICE_ROOT}/TPC"
299     # AliRawReaderMemory.h AliRawReaderFile.h already checked
300     #AC_CHECK_HEADERS([AliRawReaderMemory.h AliRawReaderFile.h AliTPCRawStream.h])
301     AC_CHECK_HEADERS([AliTPCRawStream.h])
302   fi
303
304   dnl
305   dnl Check for the interface of AliExternalTrackParam which has been changed
306   dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04
307   dnl or higher)
308   externaltrackparam_version=1
309   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliExternalTrackParam.h>], 
310                                   [AliExternalTrackParam trackparam;
311                                    Double_t param[[5]]; Double_t covar[[15]];
312                                    trackparam.Set(0., 0., param, covar);])],
313                                   [externaltrackparam_version=2],
314                                   [AC_DEFINE(EXTERNALTRACKPARAM_V1)])
315   AC_MSG_CHECKING(for version of AliExternalTrackParam)
316   AC_MSG_RESULT($externaltrackparam_version)
317
318   CPPFLAGS=$save_CPPFLAGS
319   LDFLAGS=$save_LDFLAGS
320   LIBS=$save_LIBS
321 fi
322
323 AC_LANG_POP(C++)
324 AC_SUBST([ALICE_ROOT])
325 AC_SUBST([ALIROOT_CPPFLAGS])
326 AC_SUBST([ALIROOT_LDFLAGS])
327 AC_SUBST([ALIROOTBINDIR])
328 AC_SUBST([ALIROOTLIBDIR])
329 AC_SUBST([ALIROOT_LIBS])
330 AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
331
332 HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
333 HLTBASE_LDFLAGS=
334 AC_SUBST([HLTBASE_CPPFLAGS])
335 AC_SUBST([HLTBASE_LDFLAGS])
336
337 dnl ------------------------------------------------------------------
338 dnl check for the HLT PubSub Framework
339 dnl namely for the existence of the HOMER library
340 dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
341 dnl package. It os though possible to choose an external. library
342 dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
343 dnl got the name libAliHLTHOMER
344 AC_MSG_CHECKING([for HLT PubSub Framework])
345 AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
346                     [],
347                     [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
348 if test -z $with_pubsub || ! test -d $with_pubsub ; then
349   with_pubsub=no
350 fi
351 AC_MSG_RESULT([$with_pubsub])
352 HOMER_VERSION=2
353 HOMER_LIBS=
354
355 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
356 if test "x$with_pubsub" != "xno" ; then
357   save_CPPFLAGS=$CPPFLAGS
358   save_LDFLAGS=$LDFLAGS
359   save_LIBS=$LIBS
360   # currently the different versions of the HLT PubSub framework have a different
361   # directory layout
362   if test -d ${with_pubsub}/include/HOMER ; then
363     # the 'early' location of the include files with separated HOMER sub dirs
364     HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
365   elif test -d ${with_pubsub}/include/Util/HOMER ; then
366     # location for HLT Framework versions after Sep 2006
367     HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
368   elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
369     # fall back if include files were not installed (versions after Sep 06)
370     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
371   else
372     # fall back if include files were not installed (versions before Sep 06)
373     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
374   fi
375   HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
376
377   AC_ARG_ENABLE(pubsub-debug,
378     [AC_HELP_STRING([--disable-pubsub-debug],
379         [force the production version of the PubSub framework])],
380     [],[enable_pubsub_debug=yes])
381   homer_type="none"
382   HOMER_TARGET="`uname -s`-`uname -m`"
383   AC_MSG_CHECKING([for HLT PubSub Framework release type])
384   if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
385     homer_type="production"
386     HOMER_TARGET="${HOMER_TARGET}-release"
387   elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
388     homer_type="debug"
389     HOMER_TARGET="${HOMER_TARGET}-debug"
390   fi
391   AC_MSG_RESULT([${homer_type}])
392   HOMERREADER_HEADER=HOMERReader.h
393   HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
394   HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
395   HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
396   CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
397   LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
398   LIBS="$save_LIBS "
399   with_homer=no
400   AC_LANG_PUSH(C++)
401   AC_CHECK_HEADER([$HOMERREADER_HEADER],
402     [ AC_CHECK_LIB([HOMER],[_init],
403       [with_homer=yes
404        HOMER_LIBS="-lHOMER"],
405       [ AC_CHECK_LIB([HOMERReader],[_init],
406                      [with_homer=yes
407                       HOMER_LIBS="-lHOMERReader"])])
408       LIBS="$LIBS $HOMER_LIBS"
409       AC_MSG_CHECKING([version of HOMER library])
410       dnl The Homer library has no versioning, so we do our own
411       dnl version           description
412       dnl ----------------------------------------------------------------------
413       dnl   1          inintial version
414       dnl   2          GetBlockStatusFlags added to the interface
415       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
416                                       [HOMERReader reader("dummy", 0);
417                                        reader.GetBlockStatusFlags(0);])],
418                                       [],
419                                       [HOMER_VERSION=1])
420       AC_MSG_RESULT([$HOMER_VERSION])
421   ],
422   [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
423   AC_LANG_POP(C++)
424   HOMER_INBUILT_LIB=
425 else
426 dnl no pubsub version defined, check if the HOMER lib is available in AliRoot
427   topdir=`dirname $0`
428   HOMER_CPPFLAGS="-I`(cd $topdir; pwd)`/BASE/HOMER"
429   HOMERREADER_HEADER=AliHLTHOMERReader.h
430   HOMER_INBUILT_LIB=`pwd`/BASE/HOMER/libAliHLTHOMER.la
431   HOMER_BINDIR=
432   HOMER_LIBDIR=
433   HOMER_LDFLAGS=
434 fi
435
436   if test "x$with_homer" = "xno" ; then
437     HOMER_CPPFLAGS=
438     HOMER_LDFLAGS=
439     HOMER_LIBS=
440   else
441     HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
442     AC_DEFINE(HAVE_HOMERREADER)
443   fi
444   CPPFLAGS="$save_CPPFLAGS"
445   LDFLAGS="$save_LDFLAGS"
446   LIBS="$save_LIBS"  
447
448 AC_SUBST([HOMERREADER_HEADER])
449 AC_SUBST([HOMER_INBUILT_LIB])
450 AC_SUBST([HOMER_CPPFLAGS])
451 AC_SUBST([HOMER_LDFLAGS])
452 AC_SUBST([HOMER_LIBDIR])
453 AC_SUBST([HOMER_BINDIR])
454 AC_SUBST([HOMER_LIBS])
455
456 dnl ------------------------------------------------------------------
457 AC_MSG_CHECKING([whether to impose strict coding conventions])
458 AC_ARG_ENABLE(strict,
459   [AC_HELP_STRING([--enable-strict],
460       [enable coding convention checks ])],
461   [],[enable_strict=no])
462 if test "x$enable_strict" = "xyes" ; then
463    CPPFLAGS="$CPPFLAGS -Weffc++"
464 fi
465 AC_MSG_RESULT([$enable_strict])
466
467 dnl ------------------------------------------------------------------
468 AC_MSG_CHECKING([whether to compile sample library])
469 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
470 AC_ARG_ENABLE(sample,
471   [AC_HELP_STRING([--disable-sample],
472       [compile the sample library ])],
473   [],
474   [if test "x$have_aliroot" = "xno" ; then
475      enable_sample="no...requires.AliRoot"
476    else
477      enable_sample=yes
478    fi
479   ])
480
481 if test "x$enable_sample" = "xyes" ; then 
482   AC_DEFINE(HLT_SAMPLE)
483 fi
484 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
485 AC_MSG_RESULT([$enable_sample])
486
487 dnl ------------------------------------------------------------------
488 AC_MSG_CHECKING([whether to compile util library])
489 AH_TEMPLATE([HLT_UTIL],[HLT utility library])
490 AC_ARG_ENABLE(util,
491   [AC_HELP_STRING([--disable-util],
492       [compile the util library ])],
493   [],
494   [if test "x$have_aliroot" = "xno" ; then
495      enable_util="no...requires.AliRoot"
496    else
497      enable_util=yes
498    fi
499   ])
500
501 if test "x$enable_util" = "xyes" ; then 
502   AC_DEFINE(HLT_UTIL)
503 fi
504 AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
505 AC_MSG_RESULT([$enable_util])
506
507 dnl ------------------------------------------------------------------
508 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
509
510 CHECK_HLTMODULE([tpc],
511                 [], [],
512                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
513                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
514                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
515
516 if test "x$enable_module" = "xmissheader"; then
517   enable_module="no...missing.headers"
518   enable_tpc="no...missing.headers"
519 elif test "x$have_alitpc" = "xno" ; then
520   enable_module="no...requires.AliRoot.TPC.libraries"
521   enable_tpc="no...requires.AliRoot.TPC.libraries"
522 elif test "x$enable_module" = "xforce"; then
523   enable_tpc="yes"
524 else
525   enable_tpc=$enable_module
526 fi
527
528 if test "x$enable_tpc" = "xyes" ; then 
529   AC_DEFINE(HLT_TPC)
530 fi
531 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
532 AC_MSG_CHECKING([whether to compile tpc library])
533 AC_MSG_RESULT([$enable_module])
534 AC_SUBST([ALITPC_LIBS])
535
536 dnl ------------------------------------------------------------------
537 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
538   
539 ALIPHOS_LIBS=
540 CHECK_HLTMODULE([phos],
541                 [], [$ALIROOT_CPPFLAGS],
542                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
543                 [PHOSbase PHOSrec PHOSsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
544                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
545
546 if test "x$enable_module" = "xmissheader"; then
547   enable_module="no...requires.AliRoot>v4-05-07"
548   enable_phos="no...requires.AliRoot>v4-05-07"
549 elif test "x$enable_module" = "xforce"; then
550   enable_phos="yes"
551 else
552   have_alicalorawstream=no
553   if test ! "x$have_aliroot" = "xno" ; then
554     AC_LANG_PUSH(C++)
555     save_CPPFLAGS="$CPPFLAGS"
556     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
557     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
558     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
559     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
560     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
561                                         #include <AliCaloRawStream.h>], 
562                                        [int i])],
563                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
564                                         have_alicalorawstream=yes], 
565                                        [])
566     AC_MSG_RESULT([$have_alicalorawstream])
567     AC_LANG_POP(C++)
568     CPPFLAGS="$save_CPPFLAGS"
569   fi
570   if test "x$have_alicalorawstream" != "xyes"; then
571     enable_phos="no...requires.AliRoot>v4-05-07"
572   else
573     enable_phos=$enable_module
574   fi
575 fi
576
577 if test "x$enable_phos" = "xyes" ; then 
578   AC_DEFINE(HLT_PHOS)
579   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
580 fi
581 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
582 AC_MSG_CHECKING([whether to compile phos library])
583 AC_MSG_RESULT([$enable_module])
584 AC_SUBST([ALIPHOS_LIBS])
585
586 dnl ------------------------------------------------------------------
587 AH_TEMPLATE([HLT_TRD],[hlt trd library])
588   
589 ALITRD_LIBS=
590 CHECK_HLTMODULE([trd],
591                 [], [],
592                 [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
593                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
594                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
595
596 if test "x$enable_module" = "xmissheader"; then
597   enable_module="no...requires.AliRoot>v4-07-Release"
598   enable_trd="no...requires.AliRoot>v4-07-Release"
599 elif test "x$enable_module" = "xforce"; then
600   enable_trd="yes"
601 else
602   enable_trd=$enable_module
603   if test "x$enable_trd" = "xyes" ; then
604     AC_LANG_PUSH(C++)
605     save_CPPFLAGS="$CPPFLAGS"
606     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
607     AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
608     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
609                                        [AliTRDclusterizer c;
610                                        c.SetRawVersion(0)])],
611                                        [], 
612                                        [enable_trd="no...requires.AliRoot>v4-07-Release"])
613     AC_MSG_RESULT([$enable_trd])       
614     AC_LANG_POP(C++)
615     CPPFLAGS="$save_CPPFLAGS"
616   fi
617 fi
618
619 if test "x$enable_trd" = "xyes" ; then 
620   AC_DEFINE(HLT_TRD)
621   ALITRD_LIBS=$ALIHLTMODULE_LIBS
622 fi
623 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
624 AC_MSG_CHECKING([whether to compile trd library])
625 AC_MSG_RESULT([$enable_module])
626 AC_SUBST([ALITRD_LIBS])
627
628 dnl ------------------------------------------------------------------
629 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
630
631 ALIMUON_LIBS=
632 CHECK_HLTMODULE([dimuon],
633                 [AliMUONVCluster.h AliMUONTriggerIO.h], 
634                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON],
635                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
636                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
637                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
638
639 if test "x$enable_module" = "xmissheader"; then
640   enable_module="no...requires.AliRoot>=v4-08-Release"
641   enable_muon="no...requires.AliRoot>=v4-08-Release"
642 elif test "x$enable_module" = "xforce"; then
643   enable_muon="yes"
644 else
645   enable_muon=$enable_module
646 fi
647
648 if test "x$enable_muon" = "xyes" ; then 
649   AC_DEFINE(HLT_MUON)
650   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
651 fi
652 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
653 AC_MSG_CHECKING([whether to compile muon library])
654 AC_MSG_RESULT([$enable_module])
655 AC_SUBST([ALIMUON_LIBS])
656
657 dnl ------------------------------------------------------------------
658 AH_TEMPLATE([HLT_COMP],[hlt comp library])
659
660 ALICOMP_LIBS=
661 CHECK_HLTMODULE([comp],
662                 [], [$ALIROOT_CPPFLAGS],
663                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
664                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
665                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
666
667 if test "x$enable_module" = "xmissheader"; then
668   enable_module="no...header.missing"
669   enable_comp="no...header.missing"
670 elif test "x$enable_module" = "xforce"; then
671   enable_comp="yes"
672 else
673   enable_comp=$enable_module
674 fi
675
676 if test "x$enable_comp" = "xyes" ; then 
677   AC_DEFINE(HLT_COMP)
678   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
679 fi
680 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
681 AC_MSG_CHECKING([whether to compile comp library])
682 AC_MSG_RESULT([$enable_module])
683 AC_SUBST([ALICOMP_LIBS])
684
685 dnl ------------------------------------------------------------------
686 AC_MSG_CHECKING([whether to disable AliRoot logging])
687 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
688 AC_ARG_ENABLE(aliroot-logging,
689   [AC_HELP_STRING([--disable-aliroot-logging],
690       [disable logging through AliRoot logging methods])],
691   [],[enable_aliroot_logging=no])
692 if test "x$have_aliroot" = "xno" ; then
693   enable_aliroot_logging=yes # this means 'disable'
694 fi
695 if test "x$enable_aliroot_logging" != "xno" ; then 
696   AC_DEFINE(NOALIROOT_LOGGING)
697 fi
698 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
699 AC_MSG_RESULT([$enable_aliroot_logging])
700
701 dnl ------------------------------------------------------------------
702 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
703 AH_TEMPLATE([DOMC],[MC saving])
704 AC_ARG_ENABLE(mc-saving,
705   [AC_HELP_STRING([--enable-mc-saving],
706       [enable saving MC data through the chain])],
707   [],[enable_mc_saving=no])
708 if test "x$enable_mc_saving" = "xyes" ; then 
709   AC_DEFINE(DOMC)
710 fi
711 AC_MSG_RESULT([$enable_mc_saving])
712
713 dnl ------------------------------------------------------------------
714 dnl certainly something old, but we keep the define
715 AC_MSG_CHECKING([whether to use ROWHOUGH])
716 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
717 AC_ARG_ENABLE(rowhough,
718   [AC_HELP_STRING([--enable-rowhough],
719       [use ROWHOUGH ])],
720   [],[enable_rowhough=no])
721 if test "x$enable_rowhough" = "xyes" ; then 
722   AC_DEFINE(USEROWHOUGH)
723 fi
724 AC_MSG_RESULT([$enable_rowhough])
725
726 dnl ------------------------------------------------------------------
727 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
728 dnl stand-alone build system. This is most likely something old we can
729 dnl get rid off later, or do something more reasonable. Since the define
730 dnl needs the quotes they have to be  escaped. This works well for the
731 dnl Makefile but not for the configure script. So we have to add the
732 dnl defines after all the other checks.
733 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
734 if test ! "x$have_aliroot" = "xno" ; then
735   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
736 fi
737
738 dnl ------------------------------------------------------------------
739 dnl
740 dnl Documentation
741 dnl
742 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
743 AC_PATH_PROG(PERL, perl)
744 AC_PATH_PROG(DOXYGEN, doxygen)
745 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
746 AC_ARG_ENABLE(dot,
747   [AC_HELP_STRING([--enable-dot],
748       [enable dot documentation generator])],
749   [],[enable_dot=no])
750 HAVE_DOT=NO
751 DOT_PATH=
752 AC_PATH_PROG(DOT, dot)
753 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
754    HAVE_DOT=YES
755    DOT_PATH=`dirname $DOT`
756 fi
757 AC_SUBST([HAVE_DOT])
758 AC_SUBST([DOT_PATH])
759
760 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
761 dnl echo $HAVE_SRC_SUBDIR
762 dnl if ! test -d $HAVE_SRC_SUBDIR; then
763 dnl   HAVE_SRC_SUBDIR=
764 dnl fi
765 dnl AC_SUBST([HAVE_SRC_SUBDIR])
766
767 dnl ------------------------------------------------------------------
768 dnl inatallation directory for libraries
769 dnl 
770 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
771 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
772 AC_MSG_NOTICE([libdir set to $libdir])
773 fi
774 dnl ------------------------------------------------------------------
775 AC_CONFIG_FILES([Makefile 
776                  BASE/Makefile
777                  BASE/setenv.sh
778                  BASE/setenv.csh
779                  BASE/HOMER/Makefile
780                  BASE/util/Makefile
781                  BASE/interface/Makefile
782                  sim/Makefile
783                  rec/Makefile
784                  SampleLib/Makefile
785                  TPCLib/Makefile
786                  TPCLib/mapping2array.cxx
787                  TPCLib/OnlineDisplay/Makefile
788                  PHOS/Makefile
789                  TRD/Makefile
790                  MUON/Makefile
791                  trigger/Makefile
792                  comp/Makefile
793                  doc/Makefile
794                  doc/doxygen.conf])
795
796
797 AC_OUTPUT
798 dnl
799 dnl EOF
800 dnl
801