Initial import of binutils 2.22 on the new vendor branch
[dragonfly.git] / contrib / groff / m4 / lib-link.m4
1 # lib-link.m4 serial 17 (gettext-0.18)
2 dnl Copyright (C) 2001-2008 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 dnl From Bruno Haible.
8
9 AC_PREREQ(2.54)
10
11 dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
12 dnl the libraries corresponding to explicit and implicit dependencies.
13 dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
14 dnl augments the CPPFLAGS variable.
15 dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
16 dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
17 AC_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
46 dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
47 dnl searches for libname and the libraries corresponding to explicit and
48 dnl implicit dependencies, together with the specified include files and
49 dnl the ability to compile and link the specified testcode. If found, it
50 dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
51 dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
52 dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
53 dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
54 dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
55 dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
56 AC_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
102 dnl Determine the platform dependent parameters needed to use rpath:
103 dnl   acl_libext,
104 dnl   acl_shlibext,
105 dnl   acl_hardcode_libdir_flag_spec,
106 dnl   acl_hardcode_libdir_separator,
107 dnl   acl_hardcode_direct,
108 dnl   acl_hardcode_minus_L.
109 AC_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
139 dnl AC_LIB_FROMPACKAGE(name, package)
140 dnl declares that libname comes from the given package. The configure file
141 dnl will then not have a --with-libname-prefix option but a
142 dnl --with-package-prefix option. Several libraries can come from the same
143 dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
144 dnl macro call that searches for libname.
145 AC_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
160 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
161 dnl the libraries corresponding to explicit and implicit dependencies.
162 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
163 dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
164 dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
165 AC_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
661 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
662 dnl unless already present in VAR.
663 dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
664 dnl contains two or three consecutive elements that belong together.
665 AC_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
682 dnl For those cases where a variable contains several -L and -l options
683 dnl referring to unknown libraries and directories, this macro determines the
684 dnl necessary additional linker options for the runtime path.
685 dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
686 dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
687 dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
688 dnl otherwise linking without libtool is assumed.
689 AC_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 ])