1 dnl -*- mode: autoconf -*-
4 dnl template for the configuration script for the Alice HLT
5 dnl framework and components
7 dnl ------------------------------------------------------------------
8 AC_INIT([Alice High Level Trigger] , [0.5-dev], [Matthias.Richter@ift.uib.no], alice-hlt)
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
14 if test "`dirname $0`" = "." ; then
15 AC_ERROR([please run the script from a separate build directory])
18 dnl ------------------------------------------------------------------
20 AC_PREFIX_DEFAULT(${PWD})
21 AC_CONFIG_SRCDIR(BASE/AliHLTComponent.cxx)
29 AM_CONDITIONAL(STANDALONE_SAMPLELIB, test 0 )
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])
37 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" )
44 ROOTBINDIR=`dirname $ROOTEXEC`
45 AC_SUBST([ROOTBINDIR])
47 dnl test for additional required root libraries
48 # we check for the libSTEER library which is linked to
49 # - the ROOT libs libGeom libMinuit libVMC libEG
50 # - the AliRoot libESD libRAWData (libRAWDatarec from v4-04-Rev-07)
51 # - ROOT libCint needs also libdl
52 # - from Nov 1 2006 TTreeFormula is needed by AliTagAnalysis and requires
54 # - from Jan 07 libESD also depends on libXMLIO
56 if test "x$have_root" = "x1"; then
57 save_CPPFLAGS=$CPPFLAGS
61 ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO'
62 for CHECKLIB in $ROOT_CHECKLIBS ; do
63 CPPFLAGS="$save_CPPFLAGS"
64 LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
65 LIBS="$save_LIBS $ROOTLIBS $ADD_ROOTLIBS"
66 AC_CHECK_LIB([$CHECKLIB],[_init], [ADD_ROOTLIBS="$ADD_ROOTLIBS -l$CHECKLIB"])
69 CPPFLAGS=$save_CPPFLAGS
74 dnl ------------------------------------------------------------------
75 # TODO: make this configurable through arguments
76 #Define whether you want to run with ALIROOT or only ROOT
77 AH_TEMPLATE([ALIHLT_USEPACKAGE],[running environment])
78 ALIHLT_USEPACKAGE=ALIROOT
79 #ALIHLT_USEPACKAGE=ROOT
80 #ALIHLT_USEPACKAGE=STANDALONE
81 AC_DEFINE(use_aliroot)
83 CPPFLAGS="$CPPFLAGS ${ROOTCFLAGS}"
85 dnl ------------------------------------------------------------------
86 dnl check for AliRoot features
89 AC_ARG_WITH(aliroot,[ --with-aliroot top of the AliRoot installation],
90 [test -d $with_aliroot && ALICE_ROOT=$with_aliroot],
93 if test "x$ALICE_ROOT" != "x" && test -d $ALICE_ROOT ; then
94 dnl ------------------------------------------------------------------
95 dnl Try to estimate the system architecture
96 case $host_os:$host_cpu in
97 linux*:x86_64*) alice_target='linuxx8664gcc' ;;
98 linux*) alice_target='linux' ;;
99 *) alice_target='unknown' ;;
101 if test "x$alice_target" = "xunknown" ; then
102 if test -z $ALICE_TARGET ; then
103 AC_MSG_ERROR([Can not estimate system architecture.
104 To avoid the problem, set the ALICE_TARGET variable appropriately.
105 Please send the following information to Matthias.Richter@ift.uib.no:
106 ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
108 AC_MSG_NOTICE([Unknown system architecture.
109 Please send the following information to Matthias.Richter@ift.uib.no:
110 ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
113 if test "x$ALICE_TARGET" != "x" && test "x$ALICE_TARGET" != "x$alice_target" ; then
114 AC_MSG_WARN([The ALICE_TARGET variable does not match your current system
115 overriding $ALICE_TARGET by $alice_target])
117 ALICE_TARGET=$alice_target
119 ALIROOTBINDIR=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}
120 ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
121 ALIROOTINCDIR=${ALICE_ROOT}/include
122 test -d ${ALIROOTBINDIR} || AC_MSG_WARN([can not find AliRoot binary directory $ALIROOTBINDIR])
123 test -d ${ALIROOTLIBDIR} || AC_MSG_WARN([can not find AliRoot library directory $ALIROOTLIBDIR])
124 test -d ${ALIROOTINCDIR} || AC_MSG_WARN([can not find AliRoot include directory $ALIROOTINCDIR])
127 AC_MSG_CHECKING([for AliRoot])
128 if test "x$ALICE_ROOT" != "x" \
129 && test -d ${ALIROOTBINDIR} \
130 && test -d ${ALIROOTLIBDIR} \
131 && test -d ${ALIROOTINCDIR}; then
132 have_aliroot=$ALICE_ROOT
138 AC_MSG_RESULT([$have_aliroot])
140 if test ! "x$have_aliroot" = "xno" ; then
141 ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
142 ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
143 ALIROOT_LIBS="-lESD $ADD_ROOTLIBS"
144 save_CPPFLAGS=$CPPFLAGS
145 save_LDFLAGS=$LDFLAGS
147 CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
148 LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
150 # check for certain AliRoot libraries/files/features
151 # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
152 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
154 AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
156 # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
158 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
160 AC_CHECK_LIB([$CHECKLIB],[_init],
161 [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
162 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
164 AC_CHECK_LIB([$CHECKLIB],[_init],
165 [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
166 AC_DEFINE(HAVE_ALIRAWDATA)
167 have_alirawdata=$CHECKLIB])],
168 [# second pass with -RAWData
170 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
171 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
172 #include <AliRawReaderFile.h>
173 #include <AliRawReaderDate.h>
174 #include <AliRawReaderRoot.h>],
175 [AliRawReaderMemory mreader;
176 AliRawReaderFile freader;
177 AliRawReaderDate dreader(NULL,0);
178 AliRawReaderRoot rreader(NULL,0);])],
179 [AC_DEFINE(HAVE_ALIRAWDATA)
180 ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
181 have_alirawdata=$CHECKLIB],
182 [have_alirawdata=no])
183 ]) dnl AC_CHECK_LIB RAWDatabase
184 AC_MSG_CHECKING(for AliRawReader classes in RAWData libraries)
185 AC_MSG_RESULT($have_alirawdata)
187 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
189 AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
191 if test ! "x$have_aliroot" = "xno" ; then
192 # the HLTTPCLib needs to link agains TPCbase and TPCrec
193 # TPC library for AliTPCParam and AliSimDigits used in
194 # AliHLTTPCFileHandler.h and AliHLTTPCDisplay.cxx
195 saveALIROOT_CPPFLAGS="$ALIROOT_CPPFLAGS"
196 ALIROOT_CPPFLAGS="$saveALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC"
197 CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
199 AC_MSG_CHECKING(for required classes in TPC libraries)
200 if test ! "x$have_alitpc" = "xno" ; then
201 save_ALIROOT_LIBS=$ALIROOT_LIBS
202 ALIROOT_LIBS="$save_ALIROOT_LIBS -lTPCbase -lTPCrec"
203 LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
204 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliSimDigits.h>
205 #include <AliTPCParam.h>
206 #include <AliTPCParamSR.h>
207 #include <AliTPCDigitsArray.h>
208 #include <AliTPCClustersArray.h>
209 #include <AliTPCcluster.h>
210 #include <AliTPCClustersRow.h>],
213 AliTPCParamSR paramsr;
214 AliTPCDigitsArray digarray;
215 AliTPCClustersArray clustarray;
217 AliTPCClustersRow row])],
218 [AC_DEFINE(HAVE_ALITPC)
219 saveALIROOT_CPPFLAGS=$ALIROOT_CPPFLAGS
220 saveALIROOT_LIBS=$ALIROOT_LIBS],
222 ALIROOT_CPPFLAGS=$saveALIROOT_CPPFLAGS
223 ALIROOT_LIBS=$saveALIROOT_LIBS])
225 AC_MSG_RESULT($have_alitpc)
228 if test ! "x$have_alirawdata" = "xno" ; then
229 # check for header files needed by the TPCLib/AliHLTTPCDigitReaderPacket
230 # the header file has been moved to the TPC module
231 CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
232 # AliRawReaderMemory.h AliRawReaderFile.h already checked
233 #AC_CHECK_HEADERS([AliRawReaderMemory.h AliRawReaderFile.h AliTPCRawStream.h])
234 AC_CHECK_HEADERS([AliTPCRawStream.h])
238 if test ! "x$have_aliroot" = "xno" ; then
239 # the TPCLib/AliHLTTPCRawReader needs the actual Pad layot of the TPC
240 # which is stored in the TPC/mapping/Patchx.data files from
241 # AliRoot version v4-04-Release (May 2006)
242 AH_TEMPLATE([HAVE_TPC_MAPPING],[TPC pad mapping available])
243 TPC_PAD_MAPPING_PATH=$have_aliroot/TPC/mapping
244 AC_CHECK_FILE( [$TPC_PAD_MAPPING_PATH/Patch0.data],
245 [have_tpc_mapping=yes
246 AC_SUBST(TPC_PAD_MAPPING_PATH)
247 AC_DEFINE(HAVE_TPC_MAPPING)],
251 AC_MSG_CHECKING([for TPC mapping layout])
252 AM_CONDITIONAL(USE_TPC_MAPPING, test x$have_tpc_mapping = xyes)
253 AC_MSG_RESULT([$have_tpc_mapping])
255 if test "x$have_aliroot" = "xno" ; then
260 CPPFLAGS=$save_CPPFLAGS
261 LDFLAGS=$save_LDFLAGS
265 AC_SUBST([ALIROOT_CPPFLAGS])
266 AC_SUBST([ALIROOT_LDFLAGS])
267 AC_SUBST([ALIROOTBINDIR])
268 AC_SUBST([ALIROOTLIBDIR])
269 AC_SUBST([ALIROOT_LIBS])
271 HLTBASE_CPPFLAGS='-I${top_srcdir}/BASE'
273 AC_SUBST([HLTBASE_CPPFLAGS])
274 AC_SUBST([HLTBASE_LDFLAGS])
276 dnl ------------------------------------------------------------------
277 dnl check for the HLT PubSub Framework
278 AC_MSG_CHECKING([for HLT PubSub Framework])
279 AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
281 [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
282 if test -z $with_pubsub || ! test -d $with_pubsub ; then
285 AC_MSG_RESULT([$with_pubsub])
289 AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
290 if test "x$with_pubsub" != "xno" ; then
291 save_CPPFLAGS=$CPPFLAGS
292 save_LDFLAGS=$LDFLAGS
294 # currently the different versions of the HLT PubSub framework have a different
296 if test -d ${with_pubsub}/include/HOMER ; then
297 # the 'early' location of the include files with separated HOMER sub dirs
298 HOMER_CPPFLAGS="-I${with_pubsub}/include/HOMER -I${with_pubsub}/include/HOMER/reader"
299 elif test -d ${with_pubsub}/include/Util/HOMER ; then
300 # location for HLT Framework versions after Sep 2006
301 HOMER_CPPFLAGS="-I${with_pubsub}/include/Util/HOMER"
302 elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
303 # fall back if include files were not installed (versions after Sep 06)
304 HOMER_CPPFLAGS="-I${with_pubsub}/src/Util/HOMER/include"
306 # fall back if include files were not installed (versions before Sep 06)
307 HOMER_CPPFLAGS="-I${with_pubsub}/src/Util/HOMER/reader/include -I${with_pubsub}/src/Util/HOMER/data/include"
309 HOMER_BINDIR="${with_pubsub}/bin/`uname -s`-`uname -m`"
310 HOMER_LIBDIR="${with_pubsub}/lib/`uname -s`-`uname -m`"
311 HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
312 CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
313 LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
317 AC_CHECK_HEADER([HOMERReader.h],
318 [ AC_CHECK_LIB([HOMER],[_init],
320 HOMER_LIBS="-lHOMER"],
321 [ AC_CHECK_LIB([HOMERReader],[_init],
323 HOMER_LIBS="-lHOMERReader"])])
324 LIBS="$LIBS $HOMER_LIBS"
325 AC_MSG_CHECKING([for HOMER version])
326 dnl The Homer library has no versioning, so we do our own
327 dnl version description
328 dnl ----------------------------------------------------------------------
329 dnl 1 inintial version
330 dnl 2 GetBlockStatusFlags added to the interface
331 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <HOMERReader.h>],
332 [HOMERReader reader("dummy", 0);
333 reader.GetBlockStatusFlags(0);])],
334 [if test $HOMER_VERSION -lt 2 ; then HOMER_VERSION=2; fi],
336 AC_MSG_RESULT([$HOMER_VERSION])
337 ]) #AC_CHECK_HEADER([HOMERReader.h])
339 if test "x$with_homer" = "xno" ; then
344 HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
345 AC_DEFINE(HAVE_HOMERREADER)
347 CPPFLAGS="$save_CPPFLAGS"
348 LDFLAGS="$save_LDFLAGS"
351 AC_SUBST([HOMER_CPPFLAGS])
352 AC_SUBST([HOMER_LDFLAGS])
353 AC_SUBST([HOMER_LIBDIR])
354 AC_SUBST([HOMER_BINDIR])
355 AC_SUBST([HOMER_LIBS])
357 dnl ------------------------------------------------------------------
358 AC_MSG_CHECKING([whether to impose strict coding conventions])
359 AC_ARG_ENABLE(strict,
360 [AC_HELP_STRING([--enable-strict],
361 [enable coding convention checks ])],
362 [],[enable_strict=no])
363 if test "x$enable_strict" = "xyes" ; then
364 CPPFLAGS="$CPPFLAGS -Weffc++"
366 AC_MSG_RESULT([$enable_strict])
368 dnl ------------------------------------------------------------------
369 AC_MSG_CHECKING([whether to compile sample library])
370 AH_TEMPLATE([HLT_SAMPLE],[hlt sample library])
371 AC_ARG_ENABLE(sample,
372 [AC_HELP_STRING([--enable-sample],
373 [compile the sample library ])],
374 [],[enable_sample=yes])
375 if test "x$enable_sample" = "xyes" ; then
376 AC_DEFINE(HLT_SAMPLE)
378 AM_CONDITIONAL(EN_HLT_SAMPLE, test x$enable_sample = xyes)
379 AC_MSG_RESULT([$enable_sample])
381 dnl ------------------------------------------------------------------
382 AC_MSG_CHECKING([whether to compile tpc library])
383 AH_TEMPLATE([HLT_TPC],[hlt tpc library])
385 [AC_HELP_STRING([--enable-tpc],
386 [compile the tpc library ])],
388 if test "x$have_aliroot" = "xno" ; then
389 enable_tpc="no...requires.AliRoot"
390 elif test "x$have_alitpc" = "xno" ; then
391 enable_tpc="no...requires.AliRoot.TPC.libraries"
393 if test "x$enable_tpc" = "xyes" ; then
396 AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes)
397 AC_MSG_RESULT([$enable_tpc])
399 dnl ------------------------------------------------------------------
400 AC_MSG_CHECKING([whether to compile phos library])
401 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
403 [AC_HELP_STRING([--enable-phos],
404 [compile the phos library ])],
405 [],[enable_phos=yes])
406 if test "x$have_aliroot" = "xno" ; then
407 enable_phos="no...requires.AliRoot"
409 if test "x$enable_phos" = "xyes" ; then
412 AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes)
413 AC_MSG_RESULT([$enable_phos])
415 dnl ------------------------------------------------------------------
416 AC_MSG_CHECKING([whether to enable HLT logging])
417 AH_TEMPLATE([NOLOGGING],[disable hlt logging])
418 AC_ARG_ENABLE(logging,
419 [AC_HELP_STRING([--enable-logging],
421 [],[enable_logging=yes])
422 if test "x$enable_logging" != "xyes" ; then
425 AC_MSG_RESULT([$enable_logging])
427 dnl ------------------------------------------------------------------
428 AC_MSG_CHECKING([whether to enable saving MC data through the chain])
429 AH_TEMPLATE([DOMC],[MC saving])
430 AC_ARG_ENABLE(mc-saving,
431 [AC_HELP_STRING([--enable-mc-saving],
432 [enable saving MC data through the chain])],
433 [],[enable_mc_saving=no])
434 if test "x$enable_mc_saving" = "xyes" ; then
437 AC_MSG_RESULT([$enable_mc_saving])
439 dnl ------------------------------------------------------------------
440 dnl certainly something old, but we keep the define
441 AC_MSG_CHECKING([whether to use ROWHOUGH])
442 AH_TEMPLATE([USEROWHOUGH],[HLT ROWHOUGH])
443 AC_ARG_ENABLE(rowhough,
444 [AC_HELP_STRING([--enable-rowhough],
446 [],[enable_rowhough=no])
447 if test "x$enable_rowhough" = "xyes" ; then
448 AC_DEFINE(USEROWHOUGH)
450 AC_MSG_RESULT([$enable_rowhough])
452 dnl ------------------------------------------------------------------
453 dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
454 dnl stand-alone build system. This is most likely something old we can
455 dnl get rid off later, or do something more reasonable. Since the define
456 dnl needs the quotes they have to be escaped. This works well for the
457 dnl Makefile but not for the configure script. So we have to add the
458 dnl defines after all the other checks.
459 CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
460 if test ! "x$have_aliroot" = "xno" ; then
461 CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
464 dnl ------------------------------------------------------------------
468 AC_ARG_VAR(DOXYGEN, The Documentation Generator)
469 AC_PATH_PROG(PERL, perl)
470 AC_PATH_PROG(DOXYGEN, doxygen)
471 AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
474 AC_PATH_PROG(DOT, dot)
475 if ! test "x$DOT" = "x" ; then
477 DOT_PATH=`dirname $DOT`
482 dnl ------------------------------------------------------------------
483 dnl inatallation directory for libraries
485 if test "x$prefix" != "xNONE" && test $ALICE_ROOT = $prefix ; then
486 libdir=\${exec_prefix}/lib/tgt_$ALICE_TARGET
487 AC_MSG_NOTICE([libdir set to $libdir])
489 dnl ------------------------------------------------------------------
490 AC_CONFIG_FILES([Makefile
496 TPCLib/mapping2array.cxx
497 TPCLib/OnlineDisplay/Makefile