• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# lib-link.m4 serial 20 (gettext-0.18)
2dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl From Bruno Haible.
8
9AC_PREREQ([2.54])
10
11dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
12dnl the libraries corresponding to explicit and implicit dependencies.
13dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
14dnl augments the CPPFLAGS variable.
15dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
16dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
17AC_DEFUN([AC_LIB_LINKFLAGS],
18[
19  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
20  AC_REQUIRE([AC_LIB_RPATH])
21  pushdef([Name],[translit([$1],[./-], [___])])
22  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
23                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
24  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
25    AC_LIB_LINKFLAGS_BODY([$1], [$2])
26    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
27    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
28    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
29    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
30  ])
31  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
32  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
33  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
34  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
35  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
36  AC_SUBST([LIB]NAME)
37  AC_SUBST([LTLIB]NAME)
38  AC_SUBST([LIB]NAME[_PREFIX])
39  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
40  dnl results of this search when this library appears as a dependency.
41  HAVE_LIB[]NAME=yes
42  popdef([NAME])
43  popdef([Name])
44])
45
46dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
47dnl searches for libname and the libraries corresponding to explicit and
48dnl implicit dependencies, together with the specified include files and
49dnl the ability to compile and link the specified testcode. The missing-message
50dnl defaults to 'no' and may contain additional hints for the user.
51dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
52dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
53dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
54dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
55dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
56dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
57AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
58[
59  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
60  AC_REQUIRE([AC_LIB_RPATH])
61  pushdef([Name],[translit([$1],[./-], [___])])
62  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
63                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
64
65  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
66  dnl accordingly.
67  AC_LIB_LINKFLAGS_BODY([$1], [$2])
68
69  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
70  dnl because if the user has installed lib[]Name and not disabled its use
71  dnl via --without-lib[]Name-prefix, he wants to use it.
72  ac_save_CPPFLAGS="$CPPFLAGS"
73  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
74
75  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
76    ac_save_LIBS="$LIBS"
77    LIBS="$LIBS $LIB[]NAME"
78    AC_TRY_LINK([$3], [$4],
79      [ac_cv_lib[]Name=yes],
80      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
81    LIBS="$ac_save_LIBS"
82  ])
83  if test "$ac_cv_lib[]Name" = yes; then
84    HAVE_LIB[]NAME=yes
85    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
86    AC_MSG_CHECKING([how to link with lib[]$1])
87    AC_MSG_RESULT([$LIB[]NAME])
88  else
89    HAVE_LIB[]NAME=no
90    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
91    dnl $INC[]NAME either.
92    CPPFLAGS="$ac_save_CPPFLAGS"
93    LIB[]NAME=
94    LTLIB[]NAME=
95    LIB[]NAME[]_PREFIX=
96  fi
97  AC_SUBST([HAVE_LIB]NAME)
98  AC_SUBST([LIB]NAME)
99  AC_SUBST([LTLIB]NAME)
100  AC_SUBST([LIB]NAME[_PREFIX])
101  popdef([NAME])
102  popdef([Name])
103])
104
105dnl Determine the platform dependent parameters needed to use rpath:
106dnl   acl_libext,
107dnl   acl_shlibext,
108dnl   acl_hardcode_libdir_flag_spec,
109dnl   acl_hardcode_libdir_separator,
110dnl   acl_hardcode_direct,
111dnl   acl_hardcode_minus_L.
112AC_DEFUN([AC_LIB_RPATH],
113[
114  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
115  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
116  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
117  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
118  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
119  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
120  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
121    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
122    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
123    . ./conftest.sh
124    rm -f ./conftest.sh
125    acl_cv_rpath=done
126  ])
127  wl="$acl_cv_wl"
128  acl_libext="$acl_cv_libext"
129  acl_shlibext="$acl_cv_shlibext"
130  acl_libname_spec="$acl_cv_libname_spec"
131  acl_library_names_spec="$acl_cv_library_names_spec"
132  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
133  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
134  acl_hardcode_direct="$acl_cv_hardcode_direct"
135  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
136  dnl Determine whether the user wants rpath handling at all.
137  AC_ARG_ENABLE([rpath],
138    [  --disable-rpath         do not hardcode runtime library paths],
139    :, enable_rpath=yes)
140])
141
142dnl AC_LIB_FROMPACKAGE(name, package)
143dnl declares that libname comes from the given package. The configure file
144dnl will then not have a --with-libname-prefix option but a
145dnl --with-package-prefix option. Several libraries can come from the same
146dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
147dnl macro call that searches for libname.
148AC_DEFUN([AC_LIB_FROMPACKAGE],
149[
150  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
151                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
152  define([acl_frompackage_]NAME, [$2])
153  popdef([NAME])
154  pushdef([PACK],[$2])
155  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
156                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
157  define([acl_libsinpackage_]PACKUP,
158    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
159  popdef([PACKUP])
160  popdef([PACK])
161])
162
163dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
164dnl the libraries corresponding to explicit and implicit dependencies.
165dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
166dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
167dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
168AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
169[
170  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
171  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
172                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
173  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
174  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
175                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
176  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
177  dnl Autoconf >= 2.61 supports dots in --with options.
178  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
179  dnl By default, look in $includedir and $libdir.
180  use_additional=yes
181  AC_LIB_WITH_FINAL_PREFIX([
182    eval additional_includedir=\"$includedir\"
183    eval additional_libdir=\"$libdir\"
184  ])
185  AC_ARG_WITH(P_A_C_K[-prefix],
186[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
187  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
188[
189    if test "X$withval" = "Xno"; then
190      use_additional=no
191    else
192      if test "X$withval" = "X"; then
193        AC_LIB_WITH_FINAL_PREFIX([
194          eval additional_includedir=\"$includedir\"
195          eval additional_libdir=\"$libdir\"
196        ])
197      else
198        additional_includedir="$withval/include"
199        additional_libdir="$withval/$acl_libdirstem"
200        if test "$acl_libdirstem2" != "$acl_libdirstem" \
201           && ! test -d "$withval/$acl_libdirstem"; then
202          additional_libdir="$withval/$acl_libdirstem2"
203        fi
204      fi
205    fi
206])
207  dnl Search the library and its dependencies in $additional_libdir and
208  dnl $LDFLAGS. Using breadth-first-seach.
209  LIB[]NAME=
210  LTLIB[]NAME=
211  INC[]NAME=
212  LIB[]NAME[]_PREFIX=
213  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
214  dnl computed. So it has to be reset here.
215  HAVE_LIB[]NAME=
216  rpathdirs=
217  ltrpathdirs=
218  names_already_handled=
219  names_next_round='$1 $2'
220  while test -n "$names_next_round"; do
221    names_this_round="$names_next_round"
222    names_next_round=
223    for name in $names_this_round; do
224      already_handled=
225      for n in $names_already_handled; do
226        if test "$n" = "$name"; then
227          already_handled=yes
228          break
229        fi
230      done
231      if test -z "$already_handled"; then
232        names_already_handled="$names_already_handled $name"
233        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
234        dnl or AC_LIB_HAVE_LINKFLAGS call.
235        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
236        eval value=\"\$HAVE_LIB$uppername\"
237        if test -n "$value"; then
238          if test "$value" = yes; then
239            eval value=\"\$LIB$uppername\"
240            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
241            eval value=\"\$LTLIB$uppername\"
242            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
243          else
244            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
245            dnl that this library doesn't exist. So just drop it.
246            :
247          fi
248        else
249          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
250          dnl and the already constructed $LIBNAME/$LTLIBNAME.
251          found_dir=
252          found_la=
253          found_so=
254          found_a=
255          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
256          if test -n "$acl_shlibext"; then
257            shrext=".$acl_shlibext"             # typically: shrext=.so
258          else
259            shrext=
260          fi
261          if test $use_additional = yes; then
262            dir="$additional_libdir"
263            dnl The same code as in the loop below:
264            dnl First look for a shared library.
265            if test -n "$acl_shlibext"; then
266              if test -f "$dir/$libname$shrext"; then
267                found_dir="$dir"
268                found_so="$dir/$libname$shrext"
269              else
270                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
271                  ver=`(cd "$dir" && \
272                        for f in "$libname$shrext".*; do echo "$f"; done \
273                        | sed -e "s,^$libname$shrext\\\\.,," \
274                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
275                        | sed 1q ) 2>/dev/null`
276                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
277                    found_dir="$dir"
278                    found_so="$dir/$libname$shrext.$ver"
279                  fi
280                else
281                  eval library_names=\"$acl_library_names_spec\"
282                  for f in $library_names; do
283                    if test -f "$dir/$f"; then
284                      found_dir="$dir"
285                      found_so="$dir/$f"
286                      break
287                    fi
288                  done
289                fi
290              fi
291            fi
292            dnl Then look for a static library.
293            if test "X$found_dir" = "X"; then
294              if test -f "$dir/$libname.$acl_libext"; then
295                found_dir="$dir"
296                found_a="$dir/$libname.$acl_libext"
297              fi
298            fi
299            if test "X$found_dir" != "X"; then
300              if test -f "$dir/$libname.la"; then
301                found_la="$dir/$libname.la"
302              fi
303            fi
304          fi
305          if test "X$found_dir" = "X"; then
306            for x in $LDFLAGS $LTLIB[]NAME; do
307              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
308              case "$x" in
309                -L*)
310                  dir=`echo "X$x" | sed -e 's/^X-L//'`
311                  dnl First look for a shared library.
312                  if test -n "$acl_shlibext"; then
313                    if test -f "$dir/$libname$shrext"; then
314                      found_dir="$dir"
315                      found_so="$dir/$libname$shrext"
316                    else
317                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
318                        ver=`(cd "$dir" && \
319                              for f in "$libname$shrext".*; do echo "$f"; done \
320                              | sed -e "s,^$libname$shrext\\\\.,," \
321                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
322                              | sed 1q ) 2>/dev/null`
323                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
324                          found_dir="$dir"
325                          found_so="$dir/$libname$shrext.$ver"
326                        fi
327                      else
328                        eval library_names=\"$acl_library_names_spec\"
329                        for f in $library_names; do
330                          if test -f "$dir/$f"; then
331                            found_dir="$dir"
332                            found_so="$dir/$f"
333                            break
334                          fi
335                        done
336                      fi
337                    fi
338                  fi
339                  dnl Then look for a static library.
340                  if test "X$found_dir" = "X"; then
341                    if test -f "$dir/$libname.$acl_libext"; then
342                      found_dir="$dir"
343                      found_a="$dir/$libname.$acl_libext"
344                    fi
345                  fi
346                  if test "X$found_dir" != "X"; then
347                    if test -f "$dir/$libname.la"; then
348                      found_la="$dir/$libname.la"
349                    fi
350                  fi
351                  ;;
352              esac
353              if test "X$found_dir" != "X"; then
354                break
355              fi
356            done
357          fi
358          if test "X$found_dir" != "X"; then
359            dnl Found the library.
360            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
361            if test "X$found_so" != "X"; then
362              dnl Linking with a shared library. We attempt to hardcode its
363              dnl directory into the executable's runpath, unless it's the
364              dnl standard /usr/lib.
365              if test "$enable_rpath" = no \
366                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
367                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
368                dnl No hardcoding is needed.
369                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
370              else
371                dnl Use an explicit option to hardcode DIR into the resulting
372                dnl binary.
373                dnl Potentially add DIR to ltrpathdirs.
374                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
375                haveit=
376                for x in $ltrpathdirs; do
377                  if test "X$x" = "X$found_dir"; then
378                    haveit=yes
379                    break
380                  fi
381                done
382                if test -z "$haveit"; then
383                  ltrpathdirs="$ltrpathdirs $found_dir"
384                fi
385                dnl The hardcoding into $LIBNAME is system dependent.
386                if test "$acl_hardcode_direct" = yes; then
387                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
388                  dnl resulting binary.
389                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
390                else
391                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
392                    dnl Use an explicit option to hardcode DIR into the resulting
393                    dnl binary.
394                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
395                    dnl Potentially add DIR to rpathdirs.
396                    dnl The rpathdirs will be appended to $LIBNAME at the end.
397                    haveit=
398                    for x in $rpathdirs; do
399                      if test "X$x" = "X$found_dir"; then
400                        haveit=yes
401                        break
402                      fi
403                    done
404                    if test -z "$haveit"; then
405                      rpathdirs="$rpathdirs $found_dir"
406                    fi
407                  else
408                    dnl Rely on "-L$found_dir".
409                    dnl But don't add it if it's already contained in the LDFLAGS
410                    dnl or the already constructed $LIBNAME
411                    haveit=
412                    for x in $LDFLAGS $LIB[]NAME; do
413                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
414                      if test "X$x" = "X-L$found_dir"; then
415                        haveit=yes
416                        break
417                      fi
418                    done
419                    if test -z "$haveit"; then
420                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
421                    fi
422                    if test "$acl_hardcode_minus_L" != no; then
423                      dnl FIXME: Not sure whether we should use
424                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
425                      dnl here.
426                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
427                    else
428                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
429                      dnl here, because this doesn't fit in flags passed to the
430                      dnl compiler. So give up. No hardcoding. This affects only
431                      dnl very old systems.
432                      dnl FIXME: Not sure whether we should use
433                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
434                      dnl here.
435                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
436                    fi
437                  fi
438                fi
439              fi
440            else
441              if test "X$found_a" != "X"; then
442                dnl Linking with a static library.
443                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
444              else
445                dnl We shouldn't come here, but anyway it's good to have a
446                dnl fallback.
447                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
448              fi
449            fi
450            dnl Assume the include files are nearby.
451            additional_includedir=
452            case "$found_dir" in
453              */$acl_libdirstem | */$acl_libdirstem/)
454                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
455                if test "$name" = '$1'; then
456                  LIB[]NAME[]_PREFIX="$basedir"
457                fi
458                additional_includedir="$basedir/include"
459                ;;
460              */$acl_libdirstem2 | */$acl_libdirstem2/)
461                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
462                if test "$name" = '$1'; then
463                  LIB[]NAME[]_PREFIX="$basedir"
464                fi
465                additional_includedir="$basedir/include"
466                ;;
467            esac
468            if test "X$additional_includedir" != "X"; then
469              dnl Potentially add $additional_includedir to $INCNAME.
470              dnl But don't add it
471              dnl   1. if it's the standard /usr/include,
472              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
473              dnl   3. if it's already present in $CPPFLAGS or the already
474              dnl      constructed $INCNAME,
475              dnl   4. if it doesn't exist as a directory.
476              if test "X$additional_includedir" != "X/usr/include"; then
477                haveit=
478                if test "X$additional_includedir" = "X/usr/local/include"; then
479                  if test -n "$GCC"; then
480                    case $host_os in
481                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
482                    esac
483                  fi
484                fi
485                if test -z "$haveit"; then
486                  for x in $CPPFLAGS $INC[]NAME; do
487                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
488                    if test "X$x" = "X-I$additional_includedir"; then
489                      haveit=yes
490                      break
491                    fi
492                  done
493                  if test -z "$haveit"; then
494                    if test -d "$additional_includedir"; then
495                      dnl Really add $additional_includedir to $INCNAME.
496                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
497                    fi
498                  fi
499                fi
500              fi
501            fi
502            dnl Look for dependencies.
503            if test -n "$found_la"; then
504              dnl Read the .la file. It defines the variables
505              dnl dlname, library_names, old_library, dependency_libs, current,
506              dnl age, revision, installed, dlopen, dlpreopen, libdir.
507              save_libdir="$libdir"
508              case "$found_la" in
509                */* | *\\*) . "$found_la" ;;
510                *) . "./$found_la" ;;
511              esac
512              libdir="$save_libdir"
513              dnl We use only dependency_libs.
514              for dep in $dependency_libs; do
515                case "$dep" in
516                  -L*)
517                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
518                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
519                    dnl But don't add it
520                    dnl   1. if it's the standard /usr/lib,
521                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
522                    dnl   3. if it's already present in $LDFLAGS or the already
523                    dnl      constructed $LIBNAME,
524                    dnl   4. if it doesn't exist as a directory.
525                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
526                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
527                      haveit=
528                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
529                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
530                        if test -n "$GCC"; then
531                          case $host_os in
532                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
533                          esac
534                        fi
535                      fi
536                      if test -z "$haveit"; then
537                        haveit=
538                        for x in $LDFLAGS $LIB[]NAME; do
539                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
540                          if test "X$x" = "X-L$additional_libdir"; then
541                            haveit=yes
542                            break
543                          fi
544                        done
545                        if test -z "$haveit"; then
546                          if test -d "$additional_libdir"; then
547                            dnl Really add $additional_libdir to $LIBNAME.
548                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
549                          fi
550                        fi
551                        haveit=
552                        for x in $LDFLAGS $LTLIB[]NAME; do
553                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
554                          if test "X$x" = "X-L$additional_libdir"; then
555                            haveit=yes
556                            break
557                          fi
558                        done
559                        if test -z "$haveit"; then
560                          if test -d "$additional_libdir"; then
561                            dnl Really add $additional_libdir to $LTLIBNAME.
562                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
563                          fi
564                        fi
565                      fi
566                    fi
567                    ;;
568                  -R*)
569                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
570                    if test "$enable_rpath" != no; then
571                      dnl Potentially add DIR to rpathdirs.
572                      dnl The rpathdirs will be appended to $LIBNAME at the end.
573                      haveit=
574                      for x in $rpathdirs; do
575                        if test "X$x" = "X$dir"; then
576                          haveit=yes
577                          break
578                        fi
579                      done
580                      if test -z "$haveit"; then
581                        rpathdirs="$rpathdirs $dir"
582                      fi
583                      dnl Potentially add DIR to ltrpathdirs.
584                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
585                      haveit=
586                      for x in $ltrpathdirs; do
587                        if test "X$x" = "X$dir"; then
588                          haveit=yes
589                          break
590                        fi
591                      done
592                      if test -z "$haveit"; then
593                        ltrpathdirs="$ltrpathdirs $dir"
594                      fi
595                    fi
596                    ;;
597                  -l*)
598                    dnl Handle this in the next round.
599                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
600                    ;;
601                  *.la)
602                    dnl Handle this in the next round. Throw away the .la's
603                    dnl directory; it is already contained in a preceding -L
604                    dnl option.
605                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
606                    ;;
607                  *)
608                    dnl Most likely an immediate library name.
609                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
610                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
611                    ;;
612                esac
613              done
614            fi
615          else
616            dnl Didn't find the library; assume it is in the system directories
617            dnl known to the linker and runtime loader. (All the system
618            dnl directories known to the linker should also be known to the
619            dnl runtime loader, otherwise the system is severely misconfigured.)
620            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
621            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
622          fi
623        fi
624      fi
625    done
626  done
627  if test "X$rpathdirs" != "X"; then
628    if test -n "$acl_hardcode_libdir_separator"; then
629      dnl Weird platform: only the last -rpath option counts, the user must
630      dnl pass all path elements in one option. We can arrange that for a
631      dnl single library, but not when more than one $LIBNAMEs are used.
632      alldirs=
633      for found_dir in $rpathdirs; do
634        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
635      done
636      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
637      acl_save_libdir="$libdir"
638      libdir="$alldirs"
639      eval flag=\"$acl_hardcode_libdir_flag_spec\"
640      libdir="$acl_save_libdir"
641      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
642    else
643      dnl The -rpath options are cumulative.
644      for found_dir in $rpathdirs; do
645        acl_save_libdir="$libdir"
646        libdir="$found_dir"
647        eval flag=\"$acl_hardcode_libdir_flag_spec\"
648        libdir="$acl_save_libdir"
649        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
650      done
651    fi
652  fi
653  if test "X$ltrpathdirs" != "X"; then
654    dnl When using libtool, the option that works for both libraries and
655    dnl executables is -R. The -R options are cumulative.
656    for found_dir in $ltrpathdirs; do
657      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
658    done
659  fi
660  popdef([P_A_C_K])
661  popdef([PACKLIBS])
662  popdef([PACKUP])
663  popdef([PACK])
664  popdef([NAME])
665])
666
667dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
668dnl unless already present in VAR.
669dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
670dnl contains two or three consecutive elements that belong together.
671AC_DEFUN([AC_LIB_APPENDTOVAR],
672[
673  for element in [$2]; do
674    haveit=
675    for x in $[$1]; do
676      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
677      if test "X$x" = "X$element"; then
678        haveit=yes
679        break
680      fi
681    done
682    if test -z "$haveit"; then
683      [$1]="${[$1]}${[$1]:+ }$element"
684    fi
685  done
686])
687
688dnl For those cases where a variable contains several -L and -l options
689dnl referring to unknown libraries and directories, this macro determines the
690dnl necessary additional linker options for the runtime path.
691dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
692dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
693dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
694dnl otherwise linking without libtool is assumed.
695AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
696[
697  AC_REQUIRE([AC_LIB_RPATH])
698  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
699  $1=
700  if test "$enable_rpath" != no; then
701    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
702      dnl Use an explicit option to hardcode directories into the resulting
703      dnl binary.
704      rpathdirs=
705      next=
706      for opt in $2; do
707        if test -n "$next"; then
708          dir="$next"
709          dnl No need to hardcode the standard /usr/lib.
710          if test "X$dir" != "X/usr/$acl_libdirstem" \
711             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
712            rpathdirs="$rpathdirs $dir"
713          fi
714          next=
715        else
716          case $opt in
717            -L) next=yes ;;
718            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
719                 dnl No need to hardcode the standard /usr/lib.
720                 if test "X$dir" != "X/usr/$acl_libdirstem" \
721                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
722                   rpathdirs="$rpathdirs $dir"
723                 fi
724                 next= ;;
725            *) next= ;;
726          esac
727        fi
728      done
729      if test "X$rpathdirs" != "X"; then
730        if test -n ""$3""; then
731          dnl libtool is used for linking. Use -R options.
732          for dir in $rpathdirs; do
733            $1="${$1}${$1:+ }-R$dir"
734          done
735        else
736          dnl The linker is used for linking directly.
737          if test -n "$acl_hardcode_libdir_separator"; then
738            dnl Weird platform: only the last -rpath option counts, the user
739            dnl must pass all path elements in one option.
740            alldirs=
741            for dir in $rpathdirs; do
742              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
743            done
744            acl_save_libdir="$libdir"
745            libdir="$alldirs"
746            eval flag=\"$acl_hardcode_libdir_flag_spec\"
747            libdir="$acl_save_libdir"
748            $1="$flag"
749          else
750            dnl The -rpath options are cumulative.
751            for dir in $rpathdirs; do
752              acl_save_libdir="$libdir"
753              libdir="$dir"
754              eval flag=\"$acl_hardcode_libdir_flag_spec\"
755              libdir="$acl_save_libdir"
756              $1="${$1}${$1:+ }$flag"
757            done
758          fi
759        fi
760      fi
761    fi
762  fi
763  AC_SUBST([$1])
764])
765