added ALTRO data encoder and corresponding unit test
[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++ -Wall"
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_RCU],[hlt rcu library])
528
529 CHECK_HLTMODULE([rcu],
530                 [AliAltroDecoder.h], 
531                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
532                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
533                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
534                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
535
536 if test "x$enable_module" = "xmissheader"; then
537   enable_module="no...missing.headers"
538   enable_rcu="no...missing.headers"
539 elif test "x$have_alircu" = "xno" ; then
540   enable_module="no...requires.AliRoot.RAW.libraries"
541   enable_rcu="no...requires.AliRoot.RAW.libraries"
542 elif test "x$enable_module" = "xforce"; then
543   enable_rcu="yes"
544 else
545   AC_LANG_PUSH(C++)
546   save_CPPFLAGS=$CPPFLAGS
547   save_LDFLAGS=$LDFLAGS
548   save_LIBS=$LIBS
549   CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
550   LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
551   LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
552   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
553                                   [AliAltroDecoder decoder;
554                                   decoder.CopyBackward(NULL, 0);])],
555                                   [enable_rcu=$enable_module], 
556                                   [enable_module="no...requires.AliRoot>v4-10-Release"
557                                    enable_rcu="no...requires.AliRoot>v4-10-Release"])
558   CPPFLAGS=$save_CPPFLAGS
559   LDFLAGS=$save_LDFLAGS
560   LIBS=$save_LIBS
561   AC_LANG_POP(C++)
562 fi
563
564 if test "x$enable_rcu" = "xyes" ; then 
565   AC_DEFINE(HLT_RCU)
566 fi
567 AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
568 AC_MSG_CHECKING([whether to compile rcu library])
569 AC_MSG_RESULT([$enable_module])
570 AC_SUBST([ALIRCU_LIBS])
571
572 dnl ------------------------------------------------------------------
573 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
574   
575 ALIPHOS_LIBS=
576 CHECK_HLTMODULE([phos],
577                 [], [$ALIROOT_CPPFLAGS],
578                 [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS],
579                 [PHOSbase PHOSrec PHOSsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
580                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
581
582 if test "x$enable_module" = "xmissheader"; then
583   enable_module="no...requires.AliRoot>v4-05-07"
584   enable_phos="no...requires.AliRoot>v4-05-07"
585 elif test "x$enable_module" = "xforce"; then
586   enable_phos="yes"
587 else
588   have_alicalorawstream=no
589   if test ! "x$have_aliroot" = "xno" ; then
590     AC_LANG_PUSH(C++)
591     save_CPPFLAGS="$CPPFLAGS"
592     # this can not be used as AliCaloRawStream.h indirectly depends on TString.h
593     #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes])
594     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
595     AC_MSG_CHECKING([for AliCaloRawStream.h usability])
596     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <TString.h>
597                                         #include <AliCaloRawStream.h>], 
598                                        [int i])],
599                                        [AC_DEFINE(HAVE_ALICALORAWSTREAM)
600                                         have_alicalorawstream=yes], 
601                                        [])
602     AC_MSG_RESULT([$have_alicalorawstream])
603     AC_LANG_POP(C++)
604     CPPFLAGS="$save_CPPFLAGS"
605   fi
606   if test "x$have_alicalorawstream" != "xyes"; then
607     enable_phos="no...requires.AliRoot>v4-05-07"
608   else
609     enable_phos=$enable_module
610   fi
611 fi
612
613 if test "x$enable_phos" = "xyes" ; then 
614   AC_DEFINE(HLT_PHOS)
615   ALIPHOS_LIBS=$ALIHLTMODULE_LIBS
616 fi
617 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
618 AC_MSG_CHECKING([whether to compile phos library])
619 AC_MSG_RESULT([$enable_module])
620 AC_SUBST([ALIPHOS_LIBS])
621
622 dnl ------------------------------------------------------------------
623 AH_TEMPLATE([HLT_TRD],[hlt trd library])
624   
625 ALITRD_LIBS=
626 CHECK_HLTMODULE([trd],
627                 [], [],
628                 [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
629                 [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
630                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
631
632 if test "x$enable_module" = "xmissheader"; then
633   enable_module="no...requires.AliRoot>v4-07-Release"
634   enable_trd="no...requires.AliRoot>v4-07-Release"
635 elif test "x$enable_module" = "xforce"; then
636   enable_trd="yes"
637 else
638   enable_trd=$enable_module
639   if test "x$enable_trd" = "xyes" ; then
640     AC_LANG_PUSH(C++)
641     save_CPPFLAGS="$CPPFLAGS"
642     CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD"
643     AC_MSG_CHECKING([for required functions in AliTRDclusterizer])
644     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AliTRDclusterizer.h>], 
645                                        [AliTRDclusterizer c;
646                                        c.SetRawVersion(0)])],
647                                        [], 
648                                        [enable_trd="no...requires.AliRoot>v4-07-Release"])
649     AC_MSG_RESULT([$enable_trd])       
650     AC_LANG_POP(C++)
651     CPPFLAGS="$save_CPPFLAGS"
652   fi
653 fi
654
655 if test "x$enable_trd" = "xyes" ; then 
656   AC_DEFINE(HLT_TRD)
657   ALITRD_LIBS=$ALIHLTMODULE_LIBS
658 fi
659 AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes)
660 AC_MSG_CHECKING([whether to compile trd library])
661 AC_MSG_RESULT([$enable_module])
662 AC_SUBST([ALITRD_LIBS])
663
664 dnl ------------------------------------------------------------------
665 AH_TEMPLATE([HLT_MUON],[hlt dimuon library])
666
667 ALIMUON_LIBS=
668 CHECK_HLTMODULE([dimuon],
669                 [AliMpExMap.h AliMUONTriggerIO.h], 
670                 [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON -I$ALICE_ROOT/MUON/mapping],
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...requires.AliRoot>=v4-08-Release"
677   enable_muon="no...requires.AliRoot>=v4-08-Release"
678 elif test "x$enable_module" = "xforce"; then
679   enable_muon="yes"
680 else
681   enable_muon=$enable_module
682 fi
683
684 if test "x$enable_muon" = "xyes" ; then 
685   AC_DEFINE(HLT_MUON)
686   ALIMUON_LIBS=$ALIHLTMODULE_LIBS
687 fi
688 AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes)
689 AC_MSG_CHECKING([whether to compile muon library])
690 AC_MSG_RESULT([$enable_module])
691 AC_SUBST([ALIMUON_LIBS])
692
693 dnl ------------------------------------------------------------------
694 AH_TEMPLATE([HLT_COMP],[hlt comp library])
695
696 ALICOMP_LIBS=
697 CHECK_HLTMODULE([comp],
698                 [], [$ALIROOT_CPPFLAGS],
699                 [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
700                 [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
701                 [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
702
703 if test "x$enable_module" = "xmissheader"; then
704   enable_module="no...header.missing"
705   enable_comp="no...header.missing"
706 elif test "x$enable_module" = "xforce"; then
707   enable_comp="yes"
708 else
709   enable_comp=$enable_module
710 fi
711
712 if test "x$enable_comp" = "xyes" ; then 
713   AC_DEFINE(HLT_COMP)
714   ALICOMP_LIBS=$ALIHLTMODULE_LIBS
715 fi
716 AM_CONDITIONAL(EN_HLT_COMP, test x$enable_comp = xyes)
717 AC_MSG_CHECKING([whether to compile comp library])
718 AC_MSG_RESULT([$enable_module])
719 AC_SUBST([ALICOMP_LIBS])
720
721 dnl ------------------------------------------------------------------
722 AC_MSG_CHECKING([whether to disable AliRoot logging])
723 AH_TEMPLATE([NOALIROOT_LOGGING],[disable AliRoot logging])
724 AC_ARG_ENABLE(aliroot-logging,
725   [AC_HELP_STRING([--disable-aliroot-logging],
726       [disable logging through AliRoot logging methods])],
727   [],[enable_aliroot_logging=no])
728 if test "x$have_aliroot" = "xno" ; then
729   enable_aliroot_logging=yes # this means 'disable'
730 fi
731 if test "x$enable_aliroot_logging" != "xno" ; then 
732   AC_DEFINE(NOALIROOT_LOGGING)
733 fi
734 AM_CONDITIONAL(NOALIROOT_LOGGING, test x$enable_aliroot_logging != no)
735 AC_MSG_RESULT([$enable_aliroot_logging])
736
737 dnl ------------------------------------------------------------------
738 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
739 AH_TEMPLATE([DOMC],[MC saving])
740 AC_ARG_ENABLE(mc-saving,
741   [AC_HELP_STRING([--enable-mc-saving],
742       [enable saving MC data through the chain])],
743   [],[enable_mc_saving=no])
744 if test "x$enable_mc_saving" = "xyes" ; then 
745   AC_DEFINE(DOMC)
746 fi
747 AC_MSG_RESULT([$enable_mc_saving])
748
749 dnl ------------------------------------------------------------------
750 dnl certainly something old, but we keep the define
751 AC_MSG_CHECKING([whether to use ROWHOUGH])
752 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
753 AC_ARG_ENABLE(rowhough,
754   [AC_HELP_STRING([--enable-rowhough],
755       [use ROWHOUGH ])],
756   [],[enable_rowhough=no])
757 if test "x$enable_rowhough" = "xyes" ; then 
758   AC_DEFINE(USEROWHOUGH)
759 fi
760 AC_MSG_RESULT([$enable_rowhough])
761
762 dnl ------------------------------------------------------------------
763 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
764 dnl stand-alone build system. This is most likely something old we can
765 dnl get rid off later, or do something more reasonable. Since the define
766 dnl needs the quotes they have to be  escaped. This works well for the
767 dnl Makefile but not for the configure script. So we have to add the
768 dnl defines after all the other checks.
769 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
770 if test ! "x$have_aliroot" = "xno" ; then
771   CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
772 fi
773
774 dnl ------------------------------------------------------------------
775 dnl
776 dnl Documentation
777 dnl
778 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
779 AC_PATH_PROG(PERL, perl)
780 AC_PATH_PROG(DOXYGEN, doxygen)
781 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
782 AC_ARG_ENABLE(dot,
783   [AC_HELP_STRING([--enable-dot],
784       [enable dot documentation generator])],
785   [],[enable_dot=no])
786 HAVE_DOT=NO
787 DOT_PATH=
788 AC_PATH_PROG(DOT, dot)
789 if test "x$DOT" != "x" && test "x$enable_dot" = "xyes" ; then
790    HAVE_DOT=YES
791    DOT_PATH=`dirname $DOT`
792 fi
793 AC_SUBST([HAVE_DOT])
794 AC_SUBST([DOT_PATH])
795
796 dnl HAVE_SRC_SUBDIR=${abs_top_srcdir}/src
797 dnl echo $HAVE_SRC_SUBDIR
798 dnl if ! test -d $HAVE_SRC_SUBDIR; then
799 dnl   HAVE_SRC_SUBDIR=
800 dnl fi
801 dnl AC_SUBST([HAVE_SRC_SUBDIR])
802
803 dnl ------------------------------------------------------------------
804 dnl inatallation directory for libraries
805 dnl 
806 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
807 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
808 AC_MSG_NOTICE([libdir set to $libdir])
809 fi
810 dnl ------------------------------------------------------------------
811 AC_CONFIG_FILES([Makefile 
812                  BASE/Makefile
813                  BASE/setenv.sh
814                  BASE/setenv.csh
815                  BASE/HOMER/Makefile
816                  BASE/util/Makefile
817                  BASE/interface/Makefile
818                  BASE/test/Makefile
819                  sim/Makefile
820                  rec/Makefile
821                  shuttle/Makefile
822                  SampleLib/Makefile
823                  TPCLib/Makefile
824                  TPCLib/mapping2array.cxx
825                  TPCLib/OnlineDisplay/Makefile
826                  RCU/Makefile
827                  RCU/test/Makefile
828                  PHOS/Makefile
829                  TRD/Makefile
830                  MUON/Makefile
831                  trigger/Makefile
832                  comp/Makefile
833                  doc/Makefile
834                  doc/doxygen.conf
835                  doc/doxymodule.conf])
836
837
838 AC_OUTPUT
839 dnl
840 dnl EOF
841 dnl
842