]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/acinclude.m4
bug fix in ordering the strip
[u/mrichter/AliRoot.git] / HLT / acinclude.m4
1 dnl
2 dnl $Id$
3 dnl
4 dnl  Copyright (C) 2002 Christian Holm Christensen <cholm@nbi.dk>
5 dnl
6 dnl  This library is free software; you can redistribute it and/or
7 dnl  modify it under the terms of the GNU Lesser General Public License
8 dnl  as published by the Free Software Foundation; either version 2.1
9 dnl  of the License, or (at your option) any later version.
10 dnl
11 dnl  This library is distributed in the hope that it will be useful,
12 dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 dnl  Lesser General Public License for more details.
15 dnl
16 dnl  You should have received a copy of the GNU Lesser General Public
17 dnl  License along with this library; if not, write to the Free
18 dnl  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 dnl  02111-1307 USA
20 dnl
21 dnl ------------------------------------------------------------------
22 AC_DEFUN([AC_DEBUG],
23 [
24   AC_REQUIRE([AC_PROG_CC])
25   AC_REQUIRE([AC_PROG_CXX])
26   AC_MSG_CHECKING(whether to make debug objects)
27   AC_ARG_ENABLE(debug,
28     [AC_HELP_STRING([--enable-debug],[Enable debugging symbols in objects])],
29     [],[enable_debug=no])
30   if test "x$enable_debug" = "xno" ; then
31     AC_DEFINE(NDEBUG)
32     CFLAGS=`echo $CFLAGS | sed 's,-g,,'`
33     CXXFLAGS=`echo $CXXFLAGS | sed 's,-g,,'`
34   else
35     AC_DEFINE(__DEBUG)
36     AC_DEFINE(DEBUG)
37     case $CXXFLAGS in
38     *-g*) ;;
39     *)    CXXFLAGS="$CXXFLAGS -g" ;;
40     esac
41     case $CFLAGS in
42     *-g*) ;;
43     *)    CFLAGS="$CFLAGS -g" ;;
44     esac
45   fi
46   AC_MSG_RESULT($enable_debug 'CFLAGS=$CFLAGS')
47 ])
48
49 dnl ------------------------------------------------------------------
50 AC_DEFUN([AC_PROFILING],
51 [
52   AC_REQUIRE([AC_PROG_CC])
53   AC_REQUIRE([AC_PROG_CXX])
54   AC_MSG_CHECKING(whether to add profiling info)
55   AC_ARG_ENABLE(profiling,
56     [AC_HELP_STRING([--enable-profiling],[Enable profiling info in objects])],
57     [],[enable_profiling=no])
58   if test "x$enable_profiling" = "xno" ; then
59     CFLAGS=`echo $CFLAGS | sed 's,-pg,,'`
60     CXXFLAGS=`echo $CXXFLAGS | sed 's,-pg,,'`
61   else
62     AC_DEFINE(PROFILING)
63     case $CXXFLAGS in
64     *-pg*) ;;
65     *)    CXXFLAGS="$CXXFLAGS -pg" ;;
66     esac
67     case $CFLAGS in
68     *-pg*) ;;
69     *)    CFLAGS="$CFLAGS -pg" ;;
70     esac
71   fi
72   AC_MSG_RESULT($enable_profiling 'CFLAGS=$CFLAGS')
73 ])
74
75 dnl ------------------------------------------------------------------
76 AC_DEFUN([AC_OPTIMIZATION],
77 [
78   AC_REQUIRE([AC_PROG_CC])
79   AC_REQUIRE([AC_PROG_CXX])
80
81   AC_ARG_ENABLE(optimization,
82     [AC_HELP_STRING([--disable-optimization],[Enable optimization of objects])],
83     [],[enable_optimization=yes])
84
85   AC_MSG_CHECKING(for optimiztion level)
86
87   changequote(<<, >>)dnl
88   if test "x$enable_optimization" = "xno" ; then
89     CFLAGS=`echo   $CFLAGS   | sed 's,-O\([0-9][0-9]*\|\),,'`
90     CXXFLAGS=`echo $CXXFLAGS | sed 's,-O\([0-9][0-9]*\|\),,'`
91   elif test "x$enable_optimization" = "xyes" ; then
92     case $CXXFLAGS in
93     *-O*) ;;
94     *)    CXXFLAGS="$CXXFLAGS -O2" ;;
95     esac
96     case $CFLAGS in
97     *-O*) ;;
98     *)    CFLAGS="$CXXFLAGS -O2" ;;
99     esac
100   else
101     CFLAGS=`echo   $CFLAGS   | sed "s,-O\([0-9][0-9]*\|\),-O$enable_optimization,"`
102     CXXFLAGS=`echo $CXXFLAGS | sed "s,-O\([0-9][0-9]*\|\),-O$enable_optimization,"`
103   fi
104   changequote([, ])dnl
105   AC_MSG_RESULT($enable_optimization 'CFLAGS=$CFLAGS')
106 ])
107
108 dnl ------------------------------------------------------------------
109
110 dnl
111 dnl Autoconf macro to check for existence or ROOT on the system
112 dnl Synopsis:
113 dnl
114 dnl  ROOT_PATH([MINIMUM-VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
115 dnl
116 dnl Some examples: 
117 dnl 
118 dnl    ROOT_PATH(3.03/05, , AC_MSG_ERROR(Your ROOT version is too old))
119 dnl    ROOT_PATH(, AC_DEFINE([HAVE_ROOT]))
120 dnl 
121 dnl The macro defines the following substitution variables
122 dnl
123 dnl    ROOTCONF           full path to root-config
124 dnl    ROOTEXEC           full path to root
125 dnl    ROOTCINT           full path to rootcint
126 dnl    ROOTLIBDIR         Where the ROOT libraries are 
127 dnl    ROOTINCDIR         Where the ROOT headers are 
128 dnl    ROOTCFLAGS         Extra compiler flags
129 dnl    ROOTLIBS           ROOT basic libraries 
130 dnl    ROOTGLIBS          ROOT basic + GUI libraries
131 dnl    ROOTAUXLIBS        Auxilary libraries and linker flags for ROOT
132 dnl    ROOTAUXCFLAGS      Auxilary compiler flags 
133 dnl    ROOTRPATH          Same as ROOTLIBDIR
134 dnl
135 dnl The macro will fail if root-config and rootcint isn't found.
136 dnl
137 dnl Christian Holm Christensen <cholm@nbi.dk>
138 dnl
139 AC_DEFUN([ROOT_PATH],
140 [
141   AC_ARG_WITH(rootsys,
142   [  --with-rootsys          top of the ROOT installation directory],
143     user_rootsys=$withval,
144     user_rootsys="none")
145   if test ! x"$user_rootsys" = xnone; then
146     rootbin="$user_rootsys/bin"
147   elif test ! x"$ROOTSYS" = x ; then 
148     rootbin="$ROOTSYS/bin"
149   else 
150    rootbin=$PATH
151   fi
152   AC_PATH_PROG(ROOTCONF, root-config , no, $rootbin)
153   AC_PATH_PROG(ROOTEXEC, root , no, $rootbin)
154   AC_PATH_PROG(ROOTCINT, rootcint , no, $rootbin)
155         
156   if test ! x"$ROOTCONF" = "xno" && \
157      test ! x"$ROOTCINT" = "xno" ; then 
158
159     # define some variables 
160     ROOTLIBDIR=`$ROOTCONF --libdir`
161     ROOTINCDIR=`$ROOTCONF --incdir`
162     ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags` 
163     ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
164     ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
165     ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
166     ROOTAUXLIBS=`$ROOTCONF --auxlibs`
167     ROOTRPATH=$ROOTLIBDIR
168         
169     if test $1 ; then 
170       AC_MSG_CHECKING(wether ROOT version >= [$1])
171       vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
172       requ=`echo $1 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
173       if test $vers -lt $requ ; then 
174         AC_MSG_RESULT(no)
175         no_root="yes"
176       else 
177         AC_MSG_RESULT(yes)
178       fi
179     fi
180   else
181     # otherwise, we say no_root
182     no_root="yes"
183   fi
184
185   AC_SUBST(ROOTLIBDIR)
186   AC_SUBST(ROOTINCDIR)
187   AC_SUBST(ROOTCFLAGS)
188   AC_SUBST(ROOTLIBS)
189   AC_SUBST(ROOTGLIBS) 
190   AC_SUBST(ROOTAUXLIBS)
191   AC_SUBST(ROOTAUXCFLAGS)
192   AC_SUBST(ROOTRPATH)
193
194   if test "x$no_root" = "x" ; then 
195     ifelse([$2], , :, [$2])     
196   else 
197     ifelse([$3], , :, [$3])     
198   fi
199 ])
200
201 dnl ------------------------------------------------------------------
202 dnl
203 dnl Autoconf macro to check conditions for an HLT module
204 dnl          - header dependencies
205 dnl          - library dependencies
206 dnl          - AliRoot availability
207 dnl The macro also exports the --enable/--disable option for the
208 dnl module.
209 dnl
210 dnl Synopsis:
211 dnl
212 dnl  ROOT_PATH([module],
213 dnl            [headers], [additional CPPFLAGS],
214 dnl            [libraries], [LD flags], [LIBS],
215 dnl            [circ libraries], [LD flags], [LIBS])
216 dnl
217 dnl First argument is the module name.
218 dnl
219 dnl Arg 2 and 3 allow to check a list of header files and to specify
220 dnl additional CPPFLAGS which might be necessary to perform the checks.
221 dnl 
222 dnl Arg 4 to 6 allow to check a list of libraries, with additional
223 dnl LDFLAGS and LIBS to be specified.
224 dnl
225 dnl Arg 7 to 9 is the same for libraries with circular dependencies
226 dnl among each other.
227 dnl
228 dnl Return:
229 dnl enable_module=yes
230 dnl   - AliRoot was found &&
231 dnl   - header files found &&
232 dnl   - module not disabled
233 dnl
234 dnl enable_module=no...requires.AliRoot
235 dnl   - AliRoot not found
236 dnl
237 dnl enable_module=missheader
238 dnl   - one of the specified header files is missing
239 dnl
240 dnl Libraries are probed and the variable ALIHLTMODULE_LIBS is set to
241 dnl all libraries which could be found.
242 dnl 
243 dnl Some examples:
244 dnl
245 dnl Matthias Richter <Matthias.Richter@uib.no>
246 AC_DEFUN([CHECK_HLTMODULE],
247 [
248 AH_TEMPLATE([HLT_[$1]],[hlt [$1] library])
249 AC_ARG_ENABLE([$1],
250   [AC_HELP_STRING([--disable-[$1]],
251       [   compile the $1 library ])],
252   [if test "x$enableval" = "xno";
253      then enable_module=no
254    elif test "x$disable_all" = "xyes"; then
255      # do checks if library has been enabled after global disable
256      enable_module=yes
257    else
258      enable_module=force
259   fi],
260   [if test "x$disable_all" = "xyes"; then
261    enable_module=no...modules.disabled
262    else
263    enable_module=yes
264    fi # if test "x$disable_all" = "yes"
265   ])
266   if test "x$enable_module" = "xyes"; then
267    if test "x$have_aliroot" = "xno" ; then
268      enable_module="no...requires.AliRoot"
269    else
270      AC_MSG_NOTICE([-------------------------------------------------])
271      AC_MSG_NOTICE([checking dependencies for [$1] library])
272
273      AC_LANG_PUSH(C++)
274      save_CPPFLAGS="$CPPFLAGS"
275      save_LDFLAGS="$LDFLAGS"
276      save_LIBS="$LIBS"
277      CPPFLAGS="$save_CPPFLAGS [$3]"
278
279      if test "x[$2]" != "x"; then
280         AC_CHECK_HEADERS([$2], [], [enable_module="missheader"])
281      fi
282
283      dnl ==========================================================================
284      dnl
285      dnl required header files and libraries for the AliHLTxxx library  
286      dnl
287      
288      dnl ROOT/AliRoot libs needed by libAliHLTxxx
289      CHECKLIBS="[$4]"
290      ALIHLTMODULE_LIBS=
291      LDFLAGS="$save_LDFLAGS [$5]"
292      for CHECKLIB in $CHECKLIBS ; do
293        LIBS="$save_LIBS $ROOTLIBS [$6] $ALIHLTMODULE_LIBS"
294        AC_CHECK_LIB([$CHECKLIB],[_init], [ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS -l$CHECKLIB"])
295      done
296
297      dnl libs with circular dependencies needed by libAliHLTxxx
298      CHECKLIBS="[$7]"
299      CIRCULARS=
300      for dep in [$7]; do 
301        CIRCULARS="$CIRCULARS -l$dep"
302      done
303      ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS"
304      LDFLAGS="$save_LDFLAGS [$8]"
305      for CHECKLIB in $CHECKLIBS ; do
306        CIRCULARS=`echo $CIRCULARS | sed -e "s|-l$CHECKLIB||"`
307        LIBS="$save_LIBS [$9] $CIRCULARS $ALIHLTMODULE_LIBS"
308        AC_CHECK_LIB([$CHECKLIB],[_init], [ALIHLTMODULE_LIBS="$ALIHLTMODULE_LIBS -l$CHECKLIB"])
309      done
310      CPPFLAGS="$save_CPPFLAGS"
311      LDFLAGS="$save_LDFLAGS"
312      LIBS="$save_LIBS"  
313      AC_LANG_POP(C++)
314
315    fi # if test "x$have_aliroot" = "xno"
316   fi  # if test "x$enable_module" = "xyes"
317 ])
318
319
320 #
321 # EOF
322 #