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