tarina

git clone https://git.tarina.org/tarina
Log | Files | Refs | README | LICENSE

lib-link.m4 (32898B)


      1 # lib-link.m4 serial 21 (gettext-0.18)
      2 dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
      3 dnl This file is free software; the Free Software Foundation
      4 dnl gives unlimited permission to copy and/or distribute it,
      5 dnl with or without modifications, as long as this notice is preserved.
      6 
      7 dnl From Bruno Haible.
      8 
      9 AC_PREREQ([2.54])
     10 
     11 dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
     12 dnl the libraries corresponding to explicit and implicit dependencies.
     13 dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
     14 dnl augments the CPPFLAGS variable.
     15 dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
     16 dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
     17 AC_DEFUN([AC_LIB_LINKFLAGS],
     18 [
     19   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
     20   AC_REQUIRE([AC_LIB_RPATH])
     21   pushdef([Name],[translit([$1],[./-], [___])])
     22   pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
     23                                 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
     24   AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
     25     AC_LIB_LINKFLAGS_BODY([$1], [$2])
     26     ac_cv_lib[]Name[]_libs="$LIB[]NAME"
     27     ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
     28     ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
     29     ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
     30   ])
     31   LIB[]NAME="$ac_cv_lib[]Name[]_libs"
     32   LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
     33   INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
     34   LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
     35   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
     36   AC_SUBST([LIB]NAME)
     37   AC_SUBST([LTLIB]NAME)
     38   AC_SUBST([LIB]NAME[_PREFIX])
     39   dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
     40   dnl results of this search when this library appears as a dependency.
     41   HAVE_LIB[]NAME=yes
     42   popdef([NAME])
     43   popdef([Name])
     44 ])
     45 
     46 dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [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___])])
     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 
    115 dnl Determine the platform dependent parameters needed to use rpath:
    116 dnl   acl_libext,
    117 dnl   acl_shlibext,
    118 dnl   acl_hardcode_libdir_flag_spec,
    119 dnl   acl_hardcode_libdir_separator,
    120 dnl   acl_hardcode_direct,
    121 dnl   acl_hardcode_minus_L.
    122 AC_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 
    152 dnl AC_LIB_FROMPACKAGE(name, package)
    153 dnl declares that libname comes from the given package. The configure file
    154 dnl will then not have a --with-libname-prefix option but a
    155 dnl --with-package-prefix option. Several libraries can come from the same
    156 dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
    157 dnl macro call that searches for libname.
    158 AC_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 
    173 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
    174 dnl the libraries corresponding to explicit and implicit dependencies.
    175 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
    176 dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
    177 dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
    178 AC_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 
    677 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
    678 dnl unless already present in VAR.
    679 dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
    680 dnl contains two or three consecutive elements that belong together.
    681 AC_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 
    698 dnl For those cases where a variable contains several -L and -l options
    699 dnl referring to unknown libraries and directories, this macro determines the
    700 dnl necessary additional linker options for the runtime path.
    701 dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
    702 dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
    703 dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
    704 dnl otherwise linking without libtool is assumed.
    705 AC_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 ])