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