added event type for component configuration; corrected data type operator semantics...
[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.9-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                 have_alirawdata=$CHECKLIB])],
182         [# second pass with -RAWData
183          CHECKLIB="-lRAWData"
184          LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
185          AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
186                                        #include <AliRawReaderFile.h>
187                                        #include <AliRawReaderDate.h>
188                                        #include <AliRawReaderRoot.h>], 
189                                      [AliRawReaderMemory mreader;
190                                        AliRawReaderFile freader;
191                                        AliRawReaderDate dreader(NULL,0);
192                                        AliRawReaderRoot rreader(NULL,0);])],
193                                      [ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
194                                        have_alirawdata=$CHECKLIB], 
195                                       [have_alirawdata=no])
196         ]) dnl AC_CHECK_LIB RAWDatabase
197   AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
198   AC_MSG_RESULT([$have_alirawdata])
199
200   # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
201   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
202   CHECKLIB=CDB
203   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
204
205   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
206   CHECKLIB=STEER
207   AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],[have_aliroot=no])
208
209   dnl
210   dnl check whether AliLog supports notification callback
211   dnl
212   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
213   have_alilog_notification=no
214   if test ! "x$have_aliroot" = "xno" ; then
215   AC_MSG_CHECKING([whether AliLog supports notification callback])
216   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliLog.h>], 
217                                   [AliLog::AliLogNotification fct])],
218                                   [have_alilog_notification=yes], 
219                                   [AC_DEFINE(NO_ALILOG_NOTIFICATION)])
220   AC_MSG_RESULT([$have_alilog_notification])
221   fi
222
223   if test "x$have_aliroot" = "xno" ; then
224     # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
225     # but library dependencies might not be resolved completely
226     #ALIROOT_CPPFLAGS=
227     AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
228     This can happen from time to time due to development in AliRoot. You can
229     force compilation of detector libs by --enable-<detector>, but be aware
230     of unresolved references at runtime.])
231     AC_MSG_WARN([       ------------------------------------------ ])
232     AC_MSG_WARN([       Report this to $PACKAGE_BUGREPORT ])
233     AC_MSG_WARN([       please include config.log                  ])
234     AC_MSG_WARN([       ------------------------------------------ ])
235     ALIROOT_LDFLAGS=
236     ALIROOT_LIBS=
237   fi
238
239   dnl
240   dnl required header files and libraries for modules
241   dnl
242   if test ! "x$have_aliroot" = "xno" ; then
243     # the HLTTPCLib needs to link agains TPCbase and TPCrec
244     # TPC library for AliTPCParam and AliSimDigits used in 
245     # AliHLTTPCFileHandler.h and AliHLTTPCDisplay.cxx
246     # from May 07 TPCbase depends on libGui.so
247     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
248     have_alitpc=yes
249     AC_MSG_CHECKING(for required classes in TPC libraries)
250     if test ! "x$have_alitpc" = "xno" ; then
251       ALITPC_LIBS="-lGui -lTPCbase -lTPCrec"
252       LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS"
253       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliSimDigits.h>
254                                        #include <AliTPCParam.h>
255                                        #include <AliTPCParamSR.h>
256                                        #include <AliTPCDigitsArray.h>
257                                        #include <AliTPCClustersArray.h>
258                                        #include <AliTPCcluster.h>     
259                                        #include <AliTPCClustersRow.h>], 
260                                       [AliSimDigits dig;
261                                        AliTPCParam param;
262                                        AliTPCParamSR paramsr;
263                                        AliTPCDigitsArray digarray;
264                                        AliTPCClustersArray clustarray;
265                                        AliTPCcluster clust;
266                                        AliTPCClustersRow row])],
267                                       [AC_DEFINE(HAVE_ALITPC)], 
268                                       [have_alitpc=no
269                                        ALITPC_LIBS= ])
270     fi
271     AC_MSG_RESULT($have_alitpc)
272   fi
273   AC_CHECK_HEADERS([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)])
274   AC_CHECK_HEADERS([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)])
275
276   have_tpc_mapping=no
277   if test ! "x$have_aliroot" = "xno" ; then
278     # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC 
279     # which is stored in the TPC/mapping/Patchx.data files from
280     # AliRoot version v4-04-Release (May 2006)
281     AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
282     TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
283     AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data], 
284                    [have_tpc_mapping=yes
285                     AC_SUBST(TPC_PAD_MAPPING_PATH)
286                     AC_DEFINE(HAVE_TPC_MAPPING)],
287                    [])
288     
289   fi
290   AC_MSG_CHECKING([for TPC mapping layout])
291   AC_MSG_RESULT([$have_tpc_mapping])
292
293   dnl
294   dnl Check for the interface of AliExternalTrackParam which has been changed
295   dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04
296   dnl or higher)
297   externaltrackparam_version=1
298   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliExternalTrackParam.h>], 
299                                   [AliExternalTrackParam trackparam;
300                                    Double_t param[[5]]; Double_t covar[[15]];
301                                    trackparam.Set(0., 0., param, covar);])],
302                                   [externaltrackparam_version=2],
303                                   [AC_DEFINE(EXTERNALTRACKPARAM_V1)])
304   AC_MSG_CHECKING(for version of AliExternalTrackParam)
305   AC_MSG_RESULT($externaltrackparam_version)
306
307   CPPFLAGS=$save_CPPFLAGS
308   LDFLAGS=$save_LDFLAGS
309   LIBS=$save_LIBS
310 fi
311
312 AC_LANG_POP(C++)
313 AC_SUBST([ALICE_ROOT])
314 AC_SUBST([ALIROOT_CPPFLAGS])
315 AC_SUBST([ALIROOT_LDFLAGS])
316 AC_SUBST([ALIROOTBINDIR])
317 AC_SUBST([ALIROOTLIBDIR])
318 AC_SUBST([ALIROOT_LIBS])
319 AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
320
321 HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
322 HLTBASE_LDFLAGS=
323 AC_SUBST([HLTBASE_CPPFLAGS])
324 AC_SUBST([HLTBASE_LDFLAGS])
325
326 dnl ------------------------------------------------------------------
327 dnl check for the HLT PubSub Framework
328 dnl namely for the existence of the HOMER library
329 dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
330 dnl package. It os though possible to choose an external. library
331 dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
332 dnl got the name libAliHLTHOMER
333 AC_MSG_CHECKING([for HLT PubSub Framework])
334 AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
335                     [],
336                     [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
337 if test -z $with_pubsub || ! test -d $with_pubsub ; then
338   with_pubsub=no
339 fi
340 AC_MSG_RESULT([$with_pubsub])
341 HOMER_VERSION=2
342 HOMER_LIBS=
343
344 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
345 if test "x$with_pubsub" != "xno" ; then
346   save_CPPFLAGS=$CPPFLAGS
347   save_LDFLAGS=$LDFLAGS
348   save_LIBS=$LIBS
349   # currently the different versions of the HLT PubSub framework have a different
350   # directory layout
351   if test -d ${with_pubsub}/include/HOMER ; then
352     # the 'early' location of the include files with separated HOMER sub dirs
353     HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
354   elif test -d ${with_pubsub}/include/Util/HOMER ; then
355     # location for HLT Framework versions after Sep 2006
356     HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
357   elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
358     # fall back if include files were not installed (versions after Sep 06)
359     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
360   else
361     # fall back if include files were not installed (versions before Sep 06)
362     HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
363   fi
364   HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
365
366   AC_ARG_ENABLE(pubsub-debug,
367     [AC_HELP_STRING([--disable-pubsub-debug],
368         [force the production version of the PubSub framework])],
369     [],[enable_pubsub_debug=yes])
370   homer_type="none"
371   HOMER_TARGET="`uname -s`-`uname -m`"
372   AC_MSG_CHECKING([for HLT PubSub Framework release type])
373   if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
374     homer_type="production"
375     HOMER_TARGET="${HOMER_TARGET}-release"
376   elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
377     homer_type="debug"
378     HOMER_TARGET="${HOMER_TARGET}-debug"
379   fi
380   AC_MSG_RESULT([${homer_type}])
381   HOMERREADER_HEADER=HOMERReader.h
382   HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
383   HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
384   HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
385   CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
386   LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
387   LIBS="$save_LIBS "
388   with_homer=no
389   AC_LANG_PUSH(C++)
390   AC_CHECK_HEADER([$HOMERREADER_HEADER],
391     [ AC_CHECK_LIB([HOMER],[_init],
392       [with_homer=yes
393        HOMER_LIBS="-lHOMER"],
394       [ AC_CHECK_LIB([HOMERReader],[_init],
395                      [with_homer=yes
396                       HOMER_LIBS="-lHOMERReader"])])
397       LIBS="$LIBS $HOMER_LIBS"
398       AC_MSG_CHECKING([version of HOMER library])
399       dnl The Homer library has no versioning, so we do our own
400       dnl version           description
401       dnl ----------------------------------------------------------------------
402       dnl   1          inintial version
403       dnl   2          GetBlockStatusFlags added to the interface
404       AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
405                                       [HOMERReader reader("dummy", 0);
406                                        reader.GetBlockStatusFlags(0);])],
407                                       [],
408                                       [HOMER_VERSION=1])
409       AC_MSG_RESULT([$HOMER_VERSION])
410   ],
411   [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
412   AC_LANG_POP(C++)
413   HOMER_INBUILT_LIB=
414 else
415 dnl no pubsub version defined, check if the HOMER lib is available in AliRoot
416   topdir=`dirname $0`
417   HOMER_CPPFLAGS="-I`(cd $topdir; pwd)`/BASE/HOMER"
418   HOMERREADER_HEADER=AliHLTHOMERReader.h
419   HOMER_INBUILT_LIB=`pwd`/BASE/HOMER/libAliHLTHOMER.la
420   HOMER_BINDIR=
421   HOMER_LIBDIR=
422   HOMER_LDFLAGS=
423 fi
424
425   if test "x$with_homer" = "xno" ; then
426     HOMER_CPPFLAGS=
427     HOMER_LDFLAGS=
428     HOMER_LIBS=
429   else
430     HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
431     AC_DEFINE(HAVE_HOMERREADER)
432   fi
433   CPPFLAGS="$save_CPPFLAGS"
434   LDFLAGS="$save_LDFLAGS"
435   LIBS="$save_LIBS"  
436
437 AC_SUBST([HOMERREADER_HEADER])
438 AC_SUBST([HOMER_INBUILT_LIB])
439 AC_SUBST([HOMER_CPPFLAGS])
440 AC_SUBST([HOMER_LDFLAGS])
441 AC_SUBST([HOMER_LIBDIR])
442 AC_SUBST([HOMER_BINDIR])
443 AC_SUBST([HOMER_LIBS])
444
445 dnl ------------------------------------------------------------------
446 AC_MSG_CHECKING([whether to impose strict coding conventions])
447 AC_ARG_ENABLE(strict,
448   [AC_HELP_STRING([--disable-strict],
449       [disable coding convention checks ])],
450   [],[enable_strict=yes])
451 if test "x$enable_strict" = "xyes" ; then
452    CPPFLAGS="$CPPFLAGS -Weffc++"
453 fi
454 AC_MSG_RESULT([$enable_strict])
455
456 dnl ------------------------------------------------------------------
457 AC_MSG_CHECKING([whether to compile sample library])
458 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
459 AC_ARG_ENABLE(sample,
460   [AC_HELP_STRING([--disable-sample],
461       [compile the sample library ])],
462   [],
463   [if test "x$have_aliroot" = "xno" ; then
464      enable_sample="no...requires.AliRoot"
465    else
466      enable_sample=yes
467    fi
468   ])
469
470 if test "x$enable_sample" = "xyes" ; then 
471   AC_DEFINE(HLT_SAMPLE)
472 fi
473 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
474 AC_MSG_RESULT([$enable_sample])
475
476 dnl ------------------------------------------------------------------
477 AC_MSG_CHECKING([whether to compile util library])
478 AH_TEMPLATE([HLT_UTIL],[HLT utility library])
479 AC_ARG_ENABLE(util,
480   [AC_HELP_STRING([--disable-util],
481       [compile the util library ])],
482   [],
483   [if test "x$have_aliroot" = "xno" ; then
484      enable_util="no...requires.AliRoot"
485    else
486      enable_util=yes
487    fi
488   ])
489
490 if test "x$enable_util" = "xyes" ; then 
491   AC_DEFINE(HLT_UTIL)
492 fi
493 AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes)
494 AC_MSG_RESULT([$enable_util])
495
496 dnl ------------------------------------------------------------------
497 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
498
499 CHECK_HLTMODULE([tpc],
500                 [AliTPCRawStream.h], 
501                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/TPC],
502                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
503                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
504                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
505
506 if test "x$enable_module" = "xmissheader"; then
507   enable_module="no...missing.headers"
508   enable_tpc="no...missing.headers"
509 elif test "x$have_alitpc" = "xno" ; then
510   enable_module="no...requires.AliRoot.TPC.libraries"
511   enable_tpc="no...requires.AliRoot.TPC.libraries"
512 elif test "x$enable_module" = "xforce"; then
513   enable_tpc="yes"
514 else
515   enable_tpc=$enable_module
516 fi
517
518 if test "x$enable_tpc" = "xyes" ; then 
519   AC_DEFINE(HLT_TPC)
520 fi
521 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
522 AC_MSG_CHECKING([whether to compile tpc library])
523 AC_MSG_RESULT([$enable_module])
524 AC_SUBST([ALITPC_LIBS])
525
526 dnl ------------------------------------------------------------------
527 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
528   
529 ALIPHOS_LIBS=
530 CHECK_HLTMODULE([phos],
531                 [], [$ALIROOT_CPPFLAGS],
532                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
533                 [PHOSbase PHOSrec PHOSsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
534                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
535
536 if test "x$enable_module" = "xmissheader"; then
537   enable_module="no...requires.AliRoot>v4-05-07"
538   enable_phos="no...requires.AliRoot>v4-05-07"
539 elif test "x$enable_module" = "xforce"; then
540   enable_phos="yes"
541 else
542   have_alicalorawstream=no
543   if test ! "x$have_aliroot" = "xno" ; then
544     AC_LANG_PUSH(C++)
545     save_CPPFLAGS="$CPPFLAGS"
546     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
547     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
548     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
549     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
550     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
551                                         #include <AliCaloRawStream.h>], 
552                                        [int i])],
553                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
554                                         have_alicalorawstream=yes], 
555                                        [])
556     AC_MSG_RESULT([$have_alicalorawstream])
557     AC_LANG_POP(C++)
558     CPPFLAGS="$save_CPPFLAGS"
559   fi
560   if test "x$have_alicalorawstream" != "xyes"; then
561     enable_phos="no...requires.AliRoot>v4-05-07"
562   else
563     enable_phos=$enable_module
564   fi
565 fi
566
567 if test "x$enable_phos" = "xyes" ; then 
568   AC_DEFINE(HLT_PHOS)
569   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
570 fi
571 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
572 AC_MSG_CHECKING([whether to compile phos library])
573 AC_MSG_RESULT([$enable_module])
574 AC_SUBST([ALIPHOS_LIBS])
575
576 dnl ------------------------------------------------------------------
577 AH_TEMPLATE([HLT_TRD],[hlt trd library])
578   
579 ALITRD_LIBS=
580 CHECK_HLTMODULE([trd],
581                 [], [],
582                 [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
583                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
584                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
585
586 if test "x$enable_module" = "xmissheader"; then
587   enable_module="no...requires.AliRoot>v4-07-Release"
588   enable_trd="no...requires.AliRoot>v4-07-Release"
589 elif test "x$enable_module" = "xforce"; then
590   enable_trd="yes"
591 else
592   enable_trd=$enable_module
593   if test "x$enable_trd" = "xyes" ; then
594     AC_LANG_PUSH(C++)
595     save_CPPFLAGS="$CPPFLAGS"
596     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
597     AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
598     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
599                                        [AliTRDclusterizer c;
600                                        c.SetRawVersion(0)])],
601                                        [], 
602                                        [enable_trd="no...requires.AliRoot>v4-07-Release"])
603     AC_MSG_RESULT([$enable_trd])       
604     AC_LANG_POP(C++)
605     CPPFLAGS="$save_CPPFLAGS"
606   fi
607 fi
608
609 if test "x$enable_trd" = "xyes" ; then 
610   AC_DEFINE(HLT_TRD)
611   ALITRD_LIBS=$ALIHLTMODULE_LIBS
612 fi
613 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
614 AC_MSG_CHECKING([whether to compile trd library])
615 AC_MSG_RESULT([$enable_module])
616 AC_SUBST([ALITRD_LIBS])
617
618 dnl ------------------------------------------------------------------
619 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
620
621 ALIMUON_LIBS=
622 CHECK_HLTMODULE([dimuon],
623                 [AliMpExMap.h AliMUONTriggerIO.h], 
624                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
625                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
626                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
627                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
628
629 if test "x$enable_module" = "xmissheader"; then
630   enable_module="no...requires.AliRoot>=v4-08-Release"
631   enable_muon="no...requires.AliRoot>=v4-08-Release"
632 elif test "x$enable_module" = "xforce"; then
633   enable_muon="yes"
634 else
635   enable_muon=$enable_module
636 fi
637
638 if test "x$enable_muon" = "xyes" ; then 
639   AC_DEFINE(HLT_MUON)
640   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
641 fi
642 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
643 AC_MSG_CHECKING([whether to compile muon library])
644 AC_MSG_RESULT([$enable_module])
645 AC_SUBST([ALIMUON_LIBS])
646
647 dnl ------------------------------------------------------------------
648 AH_TEMPLATE([HLT_COMP],[hlt comp library])
649
650 ALICOMP_LIBS=
651 CHECK_HLTMODULE([comp],
652                 [], [$ALIROOT_CPPFLAGS],
653                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
654                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
655                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
656
657 if test "x$enable_module" = "xmissheader"; then
658   enable_module="no...header.missing"
659   enable_comp="no...header.missing"
660 elif test "x$enable_module" = "xforce"; then
661   enable_comp="yes"
662 else
663   enable_comp=$enable_module
664 fi
665
666 if test "x$enable_comp" = "xyes" ; then 
667   AC_DEFINE(HLT_COMP)
668   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
669 fi
670 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
671 AC_MSG_CHECKING([whether to compile comp library])
672 AC_MSG_RESULT([$enable_module])
673 AC_SUBST([ALICOMP_LIBS])
674
675 dnl ------------------------------------------------------------------
676 AC_MSG_CHECKING([whether to disable AliRoot logging])
677 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
678 AC_ARG_ENABLE(aliroot-logging,
679   [AC_HELP_STRING([--disable-aliroot-logging],
680       [disable logging through AliRoot logging methods])],
681   [],[enable_aliroot_logging=no])
682 if test "x$have_aliroot" = "xno" ; then
683   enable_aliroot_logging=yes # this means 'disable'
684 fi
685 if test "x$enable_aliroot_logging" != "xno" ; then 
686   AC_DEFINE(NOALIROOT_LOGGING)
687 fi
688 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
689 AC_MSG_RESULT([$enable_aliroot_logging])
690
691 dnl ------------------------------------------------------------------
692 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
693 AH_TEMPLATE([DOMC],[MC saving])
694 AC_ARG_ENABLE(mc-saving,
695   [AC_HELP_STRING([--enable-mc-saving],
696       [enable saving MC data through the chain])],
697   [],[enable_mc_saving=no])
698 if test "x$enable_mc_saving" = "xyes" ; then 
699   AC_DEFINE(DOMC)
700 fi
701 AC_MSG_RESULT([$enable_mc_saving])
702
703 dnl ------------------------------------------------------------------
704 dnl certainly something old, but we keep the define
705 AC_MSG_CHECKING([whether to use ROWHOUGH])
706 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
707 AC_ARG_ENABLE(rowhough,
708   [AC_HELP_STRING([--enable-rowhough],
709       [use ROWHOUGH ])],
710   [],[enable_rowhough=no])
711 if test "x$enable_rowhough" = "xyes" ; then 
712   AC_DEFINE(USEROWHOUGH)
713 fi
714 AC_MSG_RESULT([$enable_rowhough])
715
716 dnl ------------------------------------------------------------------
717 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
718 dnl stand-alone build system. This is most likely something old we can
719 dnl get rid off later, or do something more reasonable. Since the define
720 dnl needs the quotes they have to be  escaped. This works well for the
721 dnl Makefile but not for the configure script. So we have to add the
722 dnl defines after all the other checks.
723 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
724 if test ! "x$have_aliroot" = "xno" ; then
725   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
726 fi
727
728 dnl ------------------------------------------------------------------
729 dnl
730 dnl Documentation
731 dnl
732 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
733 AC_PATH_PROG(PERL, perl)
734 AC_PATH_PROG(DOXYGEN, doxygen)
735 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
736 AC_ARG_ENABLE(dot,
737   [AC_HELP_STRING([--enable-dot],
738       [enable dot documentation generator])],
739   [],[enable_dot=no])
740 HAVE_DOT=NO
741 DOT_PATH=
742 AC_PATH_PROG(DOT, dot)
743 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
744    HAVE_DOT=YES
745    DOT_PATH=`dirname $DOT`
746 fi
747 AC_SUBST([HAVE_DOT])
748 AC_SUBST([DOT_PATH])
749
750 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
751 dnl echo $HAVE_SRC_SUBDIR
752 dnl if ! test -d $HAVE_SRC_SUBDIR; then
753 dnl   HAVE_SRC_SUBDIR=
754 dnl fi
755 dnl AC_SUBST([HAVE_SRC_SUBDIR])
756
757 dnl ------------------------------------------------------------------
758 dnl inatallation directory for libraries
759 dnl 
760 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
761 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
762 AC_MSG_NOTICE([libdir set to $libdir])
763 fi
764 dnl ------------------------------------------------------------------
765 AC_CONFIG_FILES([Makefile 
766                  BASE/Makefile
767                  BASE/setenv.sh
768                  BASE/setenv.csh
769                  BASE/HOMER/Makefile
770                  BASE/util/Makefile
771                  BASE/interface/Makefile
772                  BASE/test/Makefile
773                  sim/Makefile
774                  rec/Makefile
775                  SampleLib/Makefile
776                  TPCLib/Makefile
777                  TPCLib/mapping2array.cxx
778                  TPCLib/OnlineDisplay/Makefile
779                  PHOS/Makefile
780                  TRD/Makefile
781                  MUON/Makefile
782                  trigger/Makefile
783                  comp/Makefile
784                  doc/Makefile
785                  doc/doxygen.conf])
786
787
788 AC_OUTPUT
789 dnl
790 dnl EOF
791 dnl
792