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