source: projects/proc-rpmnew/trunk/m4/lib-link.m4 @ 4548

Revision 4548, 32.1 KB checked in by yasumichi, 11 years ago (diff)

add m4 directory.

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