Code

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