From: richterm Date: Mon, 29 Oct 2007 13:13:39 +0000 (+0000) Subject: macro added: library checks specific to each HLT module X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=f59fee6df2ea7ba8faa1648ad48a5bca1bef42ad macro added: library checks specific to each HLT module --- diff --git a/HLT/README b/HLT/README index 47ac54daa61..68ac6faa833 100644 --- a/HLT/README +++ b/HLT/README @@ -154,6 +154,9 @@ might fail. Compilation of detector libraries can be forced by the switch --enable-detector, e.g. --enable-phos + +Compilation can also be forced by typing 'make' in the detector +sub-directory. Debugging (default disabled) diff --git a/HLT/acinclude.m4 b/HLT/acinclude.m4 index 93a7de905fc..27f9e48945d 100644 --- a/HLT/acinclude.m4 +++ b/HLT/acinclude.m4 @@ -51,7 +51,7 @@ AC_DEFUN([AC_OPTIMIZATION], AC_REQUIRE([AC_PROG_CXX]) AC_ARG_ENABLE(optimization, - [AC_HELP_STRING([--enable-optimization],[Enable optimization of objects])], + [AC_HELP_STRING([--disable-optimization],[Enable optimization of objects])], [],[enable_optimization=yes]) AC_MSG_CHECKING(for optimiztion level) @@ -170,6 +170,107 @@ AC_DEFUN([ROOT_PATH], fi ]) +dnl ------------------------------------------------------------------ +dnl +dnl Autoconf macro to check conditions for an HLT module +dnl - header dependencies +dnl - library dependencies +dnl - AliRoot availability +dnl The macro also exports the --enable/--disable option for the +dnl module. +dnl +dnl Synopsis: +dnl +dnl ROOT_PATH([module], +dnl [headers], [additional CPPFLAGS], +dnl [libraries], [LD flags], [LIBS], +dnl [circ libraries], [LD flags], [LIBS]) +dnl +dnl First argument is the module name. +dnl +dnl Arg 2 and 3 allow to check a list of header files and to specify +dnl additional CPPFLAGS which might be necessary to perform the checks. +dnl +dnl Arg 4 to 6 allow to check a list of libraries, with additional +dnl LDFLAGS and LIBS to be specified. +dnl +dnl Arg 7 to 9 is the same for libraries with circular dependencies +dnl among each other. +dnl +dnl Return: +dnl enable_module=yes +dnl - AliRoot was found && +dnl - header files found && +dnl - module not disabled +dnl +dnl enable_module=no...requires.AliRoot +dnl - AliRoot not found +dnl +dnl enable_module=missheader +dnl - one of the specified header files is missing +dnl +dnl Libraries are probed and the variable ALIHLTMODULE_LIBS is set to +dnl all libraries which could be found. +dnl +dnl Some examples: +dnl +dnl Matthias Richter +AC_DEFUN([CHECK_HLTMODULE], +[ +AH_TEMPLATE([HLT_[$1]],[hlt [$1] library]) +AC_ARG_ENABLE([$1], + [AC_HELP_STRING([--disable-[$1]], + [ compile the $1 library ])], + [], + [enable_module=yes + if test "x$have_aliroot" = "xno" ; then + enable_module="no...requires.AliRoot" + else + AC_MSG_NOTICE([checking dependencies for [$1] library]) + + AC_LANG_PUSH(C++) + save_CPPFLAGS="$CPPFLAGS" + save_LDFLAGS="$LDFLAGS" + save_LIBS="$LIBS" + CPPFLAGS="$save_CPPFLAGS [$3]" + + AC_CHECK_HEADERS([$2], [], [enable_module="missheader"]) + + dnl ========================================================================== + dnl + dnl required header files and libraries for the AliHLTxxx library + dnl + + dnl ROOT/AliRoot libs needed by libAliHLTxxx + CHECKLIBS="[$4]" + ALIHLTMODULE_LIBS= + LDFLAGS="$save_LDFLAGS [$5]" + for CHECKLIB in $CHECKLIBS ; do + LIBS="$save_LIBS $ROOTLIBS [$6] $ALIHLTMODULE_LIBS" + AC_CHECK_LIB([$CHECKLIB],[_init], [ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS -l$CHECKLIB"]) + done + + dnl libs with circular dependencies needed by libAliHLTxxx + CHECKLIBS="[$7]" + CIRCULARS= + for dep in [$7]; do + CIRCULARS="$CIRCULARS -l$dep" + done + ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS" + LDFLAGS="$save_LDFLAGS [$8]" + for CHECKLIB in $CHECKLIBS ; do + LIBS="$save_LIBS [$9] $CIRCULARS $ALIHLTMODULE_LIBS" + AC_CHECK_LIB([$CHECKLIB],[_init], [ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS -l$CHECKLIB"]) + done + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + AC_LANG_POP(C++) + + fi + ]) +]) + # # EOF diff --git a/HLT/configure.ac b/HLT/configure.ac index 5b59e6dabbc..d0fa92afd3f 100644 --- a/HLT/configure.ac +++ b/HLT/configure.ac @@ -246,15 +246,12 @@ if test ! "x$have_aliroot" = "xno" ; then # TPC library for AliTPCParam and AliSimDigits used in # AliHLTTPCFileHandler.h and AliHLTTPCDisplay.cxx # fram May 07 TPCbase depends on libGui.so - saveALIROOT_CPPFLAGS="$ALIROOT_CPPFLAGS" - ALIROOT_CPPFLAGS="$saveALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC" - CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS" + CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC" have_alitpc=yes AC_MSG_CHECKING(for required classes in TPC libraries) if test ! "x$have_alitpc" = "xno" ; then - save_ALIROOT_LIBS=$ALIROOT_LIBS - ALIROOT_LIBS="$save_ALIROOT_LIBS -lTPCbase -lTPCrec -lGui -lSTEER" - LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS" + ALITPC_LIBS="-lGui -lTPCbase -lTPCrec" + LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $ALITPC_LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([#include #include #include @@ -269,63 +266,15 @@ if test ! "x$have_aliroot" = "xno" ; then AliTPCClustersArray clustarray; AliTPCcluster clust; AliTPCClustersRow row])], - [AC_DEFINE(HAVE_ALITPC) - saveALIROOT_CPPFLAGS=$ALIROOT_CPPFLAGS - saveALIROOT_LIBS=$ALIROOT_LIBS], + [AC_DEFINE(HAVE_ALITPC)], [have_alitpc=no - ALIROOT_CPPFLAGS=$saveALIROOT_CPPFLAGS - ALIROOT_LIBS=$saveALIROOT_LIBS]) + ALITPC_LIBS= ]) fi AC_MSG_RESULT($have_alitpc) fi AC_CHECK_HEADERS([AliTPCCalibPulser.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPULSER)]) AC_CHECK_HEADERS([AliTPCCalibPedestal.h], [], [AC_DEFINE(HAVE_NOT_ALITPCCALIBPEDESTAL)]) - dnl - dnl Check for the interface of AliExternalTrackParam which has been changed - dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04 - dnl or higher) - externaltrackparam_version=1 - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [AliExternalTrackParam trackparam; - Double_t param[[5]]; Double_t covar[[15]]; - trackparam.Set(0., 0., param, covar);])], - [externaltrackparam_version=2], - [AC_DEFINE(EXTERNALTRACKPARAM_V1)]) - AC_MSG_CHECKING(for version of AliExternalTrackParam) - AC_MSG_RESULT($externaltrackparam_version) - - dnl - dnl required header files and libraries for the AliHLTPHOS library - dnl - have_alicalorawstream=no - if test ! "x$have_aliroot" = "xno" ; then - # this can not be used as AliCaloRawStream.h indirectly depends on TString.h - #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes]) - AC_MSG_CHECKING([for AliCaloRawStream.h usability]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include - #include ], - [int i])], - [AC_DEFINE(HAVE_ALICALORAWSTREAM) - have_alicalorawstream=yes], - []) - AC_MSG_RESULT([$have_alicalorawstream]) - fi - - dnl - dnl required header files and libraries for the AliHLTTRD library - dnl - AC_CHECK_HEADERS([AliGeomManager.h], [], [AC_DEFINE([HAVNT_ALIGEOMMANAGER])]) - - if test ! "x$have_alirawdata" = "xno" ; then - # check for header files needed by the TPCLib/AliHLTTPCDigitReaderPacket - # the header file has been moved to the TPC module - CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS" - # AliRawReaderMemory.h AliRawReaderFile.h already checked - #AC_CHECK_HEADERS([AliRawReaderMemory.h AliRawReaderFile.h AliTPCRawStream.h]) - AC_CHECK_HEADERS([AliTPCRawStream.h]) - fi - have_tpc_mapping=no if test ! "x$have_aliroot" = "xno" ; then # the TPCLib/AliHLTTPCRawReader needs the actual Pad layout of the TPC @@ -343,10 +292,34 @@ if test ! "x$have_aliroot" = "xno" ; then AC_MSG_CHECKING([for TPC mapping layout]) AC_MSG_RESULT([$have_tpc_mapping]) + if test ! "x$have_alirawdata" = "xno" ; then + # check for header files needed by the TPCLib/AliHLTTPCDigitReaderPacket + # the header file has been moved to the TPC module + CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I${ALICE_ROOT}/TPC" + # AliRawReaderMemory.h AliRawReaderFile.h already checked + #AC_CHECK_HEADERS([AliRawReaderMemory.h AliRawReaderFile.h AliTPCRawStream.h]) + AC_CHECK_HEADERS([AliTPCRawStream.h]) + fi + + dnl + dnl Check for the interface of AliExternalTrackParam which has been changed + dnl in revision 1.17 of AliExternalTrackParam.h (AliRoot version v4-05-04 + dnl or higher) + externaltrackparam_version=1 + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [AliExternalTrackParam trackparam; + Double_t param[[5]]; Double_t covar[[15]]; + trackparam.Set(0., 0., param, covar);])], + [externaltrackparam_version=2], + [AC_DEFINE(EXTERNALTRACKPARAM_V1)]) + AC_MSG_CHECKING(for version of AliExternalTrackParam) + AC_MSG_RESULT($externaltrackparam_version) + CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS fi + AC_LANG_POP(C++) AC_SUBST([ALICE_ROOT]) AC_SUBST([ALIROOT_CPPFLAGS]) @@ -532,88 +505,137 @@ AM_CONDITIONAL(EN_HLT_UTIL, test x$enable_util = xyes) AC_MSG_RESULT([$enable_util]) dnl ------------------------------------------------------------------ -AC_MSG_CHECKING([whether to compile tpc library]) AH_TEMPLATE([HLT_TPC],[hlt tpc library]) -AC_ARG_ENABLE(tpc, - [AC_HELP_STRING([--disable-tpc], - [compile the tpc library ])], - [], - [if test "x$have_aliroot" = "xno" ; then - enable_tpc="no...requires.AliRoot" - elif test "x$have_alitpc" = "xno" ; then - enable_tpc="no...requires.AliRoot.TPC.libraries" - else - enable_tpc=yes - fi - ]) + +CHECK_HLTMODULE([tpc], + [], [], + [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS], + [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], + [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS]) + +if test "x$enable-module" = "xmissheader"; then + enable_tpc="no...missing.headers" +elif test "x$have_alitpc" = "xno" ; then + enable_tpc="no...requires.AliRoot.TPC.libraries" +else + enable_tpc=$enable_module +fi if test "x$enable_tpc" = "xyes" ; then AC_DEFINE(HLT_TPC) fi AM_CONDITIONAL(EN_HLT_TPC, test x$enable_tpc = xyes) +AC_MSG_CHECKING([whether to compile tpc library]) AC_MSG_RESULT([$enable_tpc]) +AC_SUBST([ALITPC_LIBS]) dnl ------------------------------------------------------------------ -AC_MSG_CHECKING([whether to compile phos library]) AH_TEMPLATE([HLT_PHOS],[hlt phos library]) -AC_ARG_ENABLE(phos, - [AC_HELP_STRING([--disable-phos], - [compile the phos library ])], - [], - [if test "x$have_aliroot" = "xno" ; then - enable_phos="no...requires.AliRoot" - elif ! test "x$have_alicalorawstream" = "xyes"; then - enable_phos="no...requires.AliRoot>v4-05-07" - else - enable_phos=yes - fi - ]) + +ALIPHOS_LIBS= +CHECK_HLTMODULE([phos], + [], [$ALIROOT_CPPFLAGS], + [RAWDatasim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS], + [PHOSbase PHOSrec PHOSsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], + [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS]) + +if test "x$enable-module" = "xmissheader"; then + enable_phos="no...requires.AliRoot>v4-05-07" +else + have_alicalorawstream=no + if test ! "x$have_aliroot" = "xno" ; then + AC_LANG_PUSH(C++) + save_CPPFLAGS="$CPPFLAGS" + # this can not be used as AliCaloRawStream.h indirectly depends on TString.h + #AC_CHECK_HEADERS([AliCaloRawStream.h], [have_alicalorawstream=yes]) + CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS" + AC_MSG_CHECKING([for AliCaloRawStream.h usability]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include + #include ], + [int i])], + [AC_DEFINE(HAVE_ALICALORAWSTREAM) + have_alicalorawstream=yes], + []) + AC_MSG_RESULT([$have_alicalorawstream]) + AC_LANG_POP(C++) + CPPFLAGS="$save_CPPFLAGS" + fi + if test "x$have_alicalorawstream" != "xyes"; then + enable_phos="no...requires.AliRoot>v4-05-07" + else + enable_phos=$enable_module + fi +fi if test "x$enable_phos" = "xyes" ; then AC_DEFINE(HLT_PHOS) + ALIPHOS_LIBS=$ALIHLTMODULE_LIBS fi AM_CONDITIONAL(EN_HLT_PHOS, test x$enable_phos = xyes) +AC_MSG_CHECKING([whether to compile phos library]) AC_MSG_RESULT([$enable_phos]) +AC_SUBST([ALIPHOS_LIBS]) -dnl ------------------------------------------------------------------ -AC_MSG_CHECKING([whether to compile trd library]) -AH_TEMPLATE([HLT_TRD],[hlt trd library]) -AC_ARG_ENABLE(trd, - [AC_HELP_STRING([--disable-trd], - [compile the trd library ])], - [], - [if test "x$have_aliroot" = "xno" ; then - enable_trd="no...requires.AliRoot" - else - enable_trd=yes - fi - ]) +ALITRD_LIBS= +CHECK_HLTMODULE([trd], + [], [], + [MLP], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS], + [TRDbase TRDrec TRDsim], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], + [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS]) + +if test "x$enable-module" = "xmissheader"; then + enable_trd="no...requires.AliRoot>v4-07-Release" +else + enable_trd=$enable_module + if test "x$enable_trd" = "xyes" ; then + AC_LANG_PUSH(C++) + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS -I$ALICE_ROOT/TRD" + AC_MSG_CHECKING([for required functions in AliTRDclusterizer]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [AliTRDclusterizer c; + c.SetRawVersion(0)])], + [], + [enable_trd="no...requires.AliRoot>v4-07-Release"]) + AC_MSG_RESULT([$enable_trd]) + AC_LANG_POP(C++) + CPPFLAGS="$save_CPPFLAGS" + fi +fi if test "x$enable_trd" = "xyes" ; then AC_DEFINE(HLT_TRD) + ALITRD_LIBS=$ALIHLTMODULE_LIBS fi AM_CONDITIONAL(EN_HLT_TRD, test x$enable_trd = xyes) +AC_MSG_CHECKING([whether to compile trd library]) AC_MSG_RESULT([$enable_trd]) +AC_SUBST([ALITRD_LIBS]) dnl ------------------------------------------------------------------ -AC_MSG_CHECKING([whether to compile dimuon library]) AH_TEMPLATE([HLT_MUON],[hlt dimuon library]) -AC_ARG_ENABLE(dimuon, - [AC_HELP_STRING([--disable-dimuon], - [compile the dimuon library ])], - [], - [if test "x$have_aliroot" = "xno" ; then - enable_dimuon="no...requires.AliRoot" - else - enable_dimuon=yes - fi - ]) -if test "x$enable_dimuon" = "xyes" ; then +ALIMUON_LIBS= +CHECK_HLTMODULE([muon], + [AliMUONVCluster.h], [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/MUON], + [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS], + [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], + [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS]) + +if test "x$enable_module" = "xmissheader"; then + enable_muon="no...requires.AliRoot>v4-07-Release" +else + enable_muon=$enable_module +fi + +if test "x$enable_muon" = "xyes" ; then AC_DEFINE(HLT_MUON) + ALIMUON_LIBS=$ALIHLTMODULE_LIBS fi -AM_CONDITIONAL(EN_HLT_MUON, test x$enable_dimuon = xyes) -AC_MSG_RESULT([$enable_dimuon]) +AM_CONDITIONAL(EN_HLT_MUON, test x$enable_muon = xyes) +AC_MSG_CHECKING([whether to compile muon library]) +AC_MSG_RESULT([$enable_muon]) +AC_SUBST([ALIMUON_LIBS]) dnl ------------------------------------------------------------------ AC_MSG_CHECKING([whether to disable AliRoot logging])