Home | History | Annotate | Line # | Download | only in m4
      1 # lib-link.m4 serial 9 (gettext-0.16)
      2 dnl Copyright (C) 2001-2006 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.50)
     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 AC_DEFUN([AC_LIB_LINKFLAGS],
     16 [
     17   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
     18   AC_REQUIRE([AC_LIB_RPATH])
     19   define([Name],[translit([$1],[./-], [___])])
     20   define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
     21                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
     22   AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
     23     AC_LIB_LINKFLAGS_BODY([$1], [$2])
     24     ac_cv_lib[]Name[]_libs="$LIB[]NAME"
     25     ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
     26     ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
     27   ])
     28   LIB[]NAME="$ac_cv_lib[]Name[]_libs"
     29   LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
     30   INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
     31   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
     32   AC_SUBST([LIB]NAME)
     33   AC_SUBST([LTLIB]NAME)
     34   dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
     35   dnl results of this search when this library appears as a dependency.
     36   HAVE_LIB[]NAME=yes
     37   undefine([Name])
     38   undefine([NAME])
     39 ])
     40 
     41 dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
     42 dnl searches for libname and the libraries corresponding to explicit and
     43 dnl implicit dependencies, together with the specified include files and
     44 dnl the ability to compile and link the specified testcode. If found, it
     45 dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
     46 dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
     47 dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
     48 dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
     49 AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
     50 [
     51   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
     52   AC_REQUIRE([AC_LIB_RPATH])
     53   define([Name],[translit([$1],[./-], [___])])
     54   define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
     55                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
     56 
     57   dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
     58   dnl accordingly.
     59   AC_LIB_LINKFLAGS_BODY([$1], [$2])
     60 
     61   dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
     62   dnl because if the user has installed lib[]Name and not disabled its use
     63   dnl via --without-lib[]Name-prefix, he wants to use it.
     64   ac_save_CPPFLAGS="$CPPFLAGS"
     65   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
     66 
     67   AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
     68     ac_save_LIBS="$LIBS"
     69     LIBS="$LIBS $LIB[]NAME"
     70     AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
     71     LIBS="$ac_save_LIBS"
     72   ])
     73   if test "$ac_cv_lib[]Name" = yes; then
     74     HAVE_LIB[]NAME=yes
     75     AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
     76     AC_MSG_CHECKING([how to link with lib[]$1])
     77     AC_MSG_RESULT([$LIB[]NAME])
     78   else
     79     HAVE_LIB[]NAME=no
     80     dnl If $LIB[]NAME didn't lead to a usable library, we don't need
     81     dnl $INC[]NAME either.
     82     CPPFLAGS="$ac_save_CPPFLAGS"
     83     LIB[]NAME=
     84     LTLIB[]NAME=
     85   fi
     86   AC_SUBST([HAVE_LIB]NAME)
     87   AC_SUBST([LIB]NAME)
     88   AC_SUBST([LTLIB]NAME)
     89   undefine([Name])
     90   undefine([NAME])
     91 ])
     92 
     93 dnl Determine the platform dependent parameters needed to use rpath:
     94 dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
     95 dnl hardcode_direct, hardcode_minus_L.
     96 AC_DEFUN([AC_LIB_RPATH],
     97 [
     98   dnl Tell automake >= 1.10 to complain if config.rpath is missing.
     99   m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
    100   AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
    101   AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
    102   AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
    103   AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
    104   AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
    105     CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
    106     ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
    107     . ./conftest.sh
    108     rm -f ./conftest.sh
    109     acl_cv_rpath=done
    110   ])
    111   wl="$acl_cv_wl"
    112   libext="$acl_cv_libext"
    113   shlibext="$acl_cv_shlibext"
    114   hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
    115   hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
    116   hardcode_direct="$acl_cv_hardcode_direct"
    117   hardcode_minus_L="$acl_cv_hardcode_minus_L"
    118   dnl Determine whether the user wants rpath handling at all.
    119   AC_ARG_ENABLE(rpath,
    120     [  --disable-rpath         do not hardcode runtime library paths],
    121     :, enable_rpath=yes)
    122 ])
    123 
    124 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
    125 dnl the libraries corresponding to explicit and implicit dependencies.
    126 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
    127 AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
    128 [
    129   AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
    130   define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
    131                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
    132   dnl By default, look in $includedir and $libdir.
    133   use_additional=yes
    134   AC_LIB_WITH_FINAL_PREFIX([
    135     eval additional_includedir=\"$includedir\"
    136     eval additional_libdir=\"$libdir\"
    137   ])
    138   AC_LIB_ARG_WITH([lib$1-prefix],
    139 [  --with-lib$1-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
    140   --without-lib$1-prefix     don't search for lib$1 in includedir and libdir],
    141 [
    142     if test "X$withval" = "Xno"; then
    143       use_additional=no
    144     else
    145       if test "X$withval" = "X"; then
    146         AC_LIB_WITH_FINAL_PREFIX([
    147           eval additional_includedir=\"$includedir\"
    148           eval additional_libdir=\"$libdir\"
    149         ])
    150       else
    151         additional_includedir="$withval/include"
    152         additional_libdir="$withval/$acl_libdirstem"
    153       fi
    154     fi
    155 ])
    156   dnl Search the library and its dependencies in $additional_libdir and
    157   dnl $LDFLAGS. Using breadth-first-seach.
    158   LIB[]NAME=
    159   LTLIB[]NAME=
    160   INC[]NAME=
    161   rpathdirs=
    162   ltrpathdirs=
    163   names_already_handled=
    164   names_next_round='$1 $2'
    165   while test -n "$names_next_round"; do
    166     names_this_round="$names_next_round"
    167     names_next_round=
    168     for name in $names_this_round; do
    169       already_handled=
    170       for n in $names_already_handled; do
    171         if test "$n" = "$name"; then
    172           already_handled=yes
    173           break
    174         fi
    175       done
    176       if test -z "$already_handled"; then
    177         names_already_handled="$names_already_handled $name"
    178         dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
    179         dnl or AC_LIB_HAVE_LINKFLAGS call.
    180         uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
    181         eval value=\"\$HAVE_LIB$uppername\"
    182         if test -n "$value"; then
    183           if test "$value" = yes; then
    184             eval value=\"\$LIB$uppername\"
    185             test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
    186             eval value=\"\$LTLIB$uppername\"
    187             test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
    188           else
    189             dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
    190             dnl that this library doesn't exist. So just drop it.
    191             :
    192           fi
    193         else
    194           dnl Search the library lib$name in $additional_libdir and $LDFLAGS
    195           dnl and the already constructed $LIBNAME/$LTLIBNAME.
    196           found_dir=
    197           found_la=
    198           found_so=
    199           found_a=
    200           if test $use_additional = yes; then
    201             if test -n "$shlibext" \
    202                && { test -f "$additional_libdir/lib$name.$shlibext" \
    203                     || { test "$shlibext" = dll \
    204                          && test -f "$additional_libdir/lib$name.dll.a"; }; }; then
    205               found_dir="$additional_libdir"
    206               if test -f "$additional_libdir/lib$name.$shlibext"; then
    207                 found_so="$additional_libdir/lib$name.$shlibext"
    208               else
    209                 found_so="$additional_libdir/lib$name.dll.a"
    210               fi
    211               if test -f "$additional_libdir/lib$name.la"; then
    212                 found_la="$additional_libdir/lib$name.la"
    213               fi
    214             else
    215               if test -f "$additional_libdir/lib$name.$libext"; then
    216                 found_dir="$additional_libdir"
    217                 found_a="$additional_libdir/lib$name.$libext"
    218                 if test -f "$additional_libdir/lib$name.la"; then
    219                   found_la="$additional_libdir/lib$name.la"
    220                 fi
    221               fi
    222             fi
    223           fi
    224           if test "X$found_dir" = "X"; then
    225             for x in $LDFLAGS $LTLIB[]NAME; do
    226               AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
    227               case "$x" in
    228                 -L*)
    229                   dir=`echo "X$x" | sed -e 's/^X-L//'`
    230                   if test -n "$shlibext" \
    231                      && { test -f "$dir/lib$name.$shlibext" \
    232                           || { test "$shlibext" = dll \
    233                                && test -f "$dir/lib$name.dll.a"; }; }; then
    234                     found_dir="$dir"
    235                     if test -f "$dir/lib$name.$shlibext"; then
    236                       found_so="$dir/lib$name.$shlibext"
    237                     else
    238                       found_so="$dir/lib$name.dll.a"
    239                     fi
    240                     if test -f "$dir/lib$name.la"; then
    241                       found_la="$dir/lib$name.la"
    242                     fi
    243                   else
    244                     if test -f "$dir/lib$name.$libext"; then
    245                       found_dir="$dir"
    246                       found_a="$dir/lib$name.$libext"
    247                       if test -f "$dir/lib$name.la"; then
    248                         found_la="$dir/lib$name.la"
    249                       fi
    250                     fi
    251                   fi
    252                   ;;
    253               esac
    254               if test "X$found_dir" != "X"; then
    255                 break
    256               fi
    257             done
    258           fi
    259           if test "X$found_dir" != "X"; then
    260             dnl Found the library.
    261             LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
    262             if test "X$found_so" != "X"; then
    263               dnl Linking with a shared library. We attempt to hardcode its
    264               dnl directory into the executable's runpath, unless it's the
    265               dnl standard /usr/lib.
    266               if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
    267                 dnl No hardcoding is needed.
    268                 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
    269               else
    270                 dnl Use an explicit option to hardcode DIR into the resulting
    271                 dnl binary.
    272                 dnl Potentially add DIR to ltrpathdirs.
    273                 dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
    274                 haveit=
    275                 for x in $ltrpathdirs; do
    276                   if test "X$x" = "X$found_dir"; then
    277                     haveit=yes
    278                     break
    279                   fi
    280                 done
    281                 if test -z "$haveit"; then
    282                   ltrpathdirs="$ltrpathdirs $found_dir"
    283                 fi
    284                 dnl The hardcoding into $LIBNAME is system dependent.
    285                 if test "$hardcode_direct" = yes; then
    286                   dnl Using DIR/libNAME.so during linking hardcodes DIR into the
    287                   dnl resulting binary.
    288                   LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
    289                 else
    290                   if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
    291                     dnl Use an explicit option to hardcode DIR into the resulting
    292                     dnl binary.
    293                     LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
    294                     dnl Potentially add DIR to rpathdirs.
    295                     dnl The rpathdirs will be appended to $LIBNAME at the end.
    296                     haveit=
    297                     for x in $rpathdirs; do
    298                       if test "X$x" = "X$found_dir"; then
    299                         haveit=yes
    300                         break
    301                       fi
    302                     done
    303                     if test -z "$haveit"; then
    304                       rpathdirs="$rpathdirs $found_dir"
    305                     fi
    306                   else
    307                     dnl Rely on "-L$found_dir".
    308                     dnl But don't add it if it's already contained in the LDFLAGS
    309                     dnl or the already constructed $LIBNAME
    310                     haveit=
    311                     for x in $LDFLAGS $LIB[]NAME; do
    312                       AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
    313                       if test "X$x" = "X-L$found_dir"; then
    314                         haveit=yes
    315                         break
    316                       fi
    317                     done
    318                     if test -z "$haveit"; then
    319                       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
    320                     fi
    321                     if test "$hardcode_minus_L" != no; then
    322                       dnl FIXME: Not sure whether we should use
    323                       dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
    324                       dnl here.
    325                       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
    326                     else
    327                       dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
    328                       dnl here, because this doesn't fit in flags passed to the
    329                       dnl compiler. So give up. No hardcoding. This affects only
    330                       dnl very old systems.
    331                       dnl FIXME: Not sure whether we should use
    332                       dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
    333                       dnl here.
    334                       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
    335                     fi
    336                   fi
    337                 fi
    338               fi
    339             else
    340               if test "X$found_a" != "X"; then
    341                 dnl Linking with a static library.
    342                 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
    343               else
    344                 dnl We shouldn't come here, but anyway it's good to have a
    345                 dnl fallback.
    346                 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
    347               fi
    348             fi
    349             dnl Assume the include files are nearby.
    350             additional_includedir=
    351             case "$found_dir" in
    352               */$acl_libdirstem | */$acl_libdirstem/)
    353                 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
    354                 additional_includedir="$basedir/include"
    355                 ;;
    356             esac
    357             if test "X$additional_includedir" != "X"; then
    358               dnl Potentially add $additional_includedir to $INCNAME.
    359               dnl But don't add it
    360               dnl   1. if it's the standard /usr/include,
    361               dnl   2. if it's /usr/local/include and we are using GCC on Linux,
    362               dnl   3. if it's already present in $CPPFLAGS or the already
    363               dnl      constructed $INCNAME,
    364               dnl   4. if it doesn't exist as a directory.
    365               if test "X$additional_includedir" != "X/usr/include"; then
    366                 haveit=
    367                 if test "X$additional_includedir" = "X/usr/local/include"; then
    368                   if test -n "$GCC"; then
    369                     case $host_os in
    370                       linux* | gnu* | k*bsd*-gnu) haveit=yes;;
    371                     esac
    372                   fi
    373                 fi
    374                 if test -z "$haveit"; then
    375                   for x in $CPPFLAGS $INC[]NAME; do
    376                     AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
    377                     if test "X$x" = "X-I$additional_includedir"; then
    378                       haveit=yes
    379                       break
    380                     fi
    381                   done
    382                   if test -z "$haveit"; then
    383                     if test -d "$additional_includedir"; then
    384                       dnl Really add $additional_includedir to $INCNAME.
    385                       INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
    386                     fi
    387                   fi
    388                 fi
    389               fi
    390             fi
    391             dnl Look for dependencies.
    392             if test -n "$found_la"; then
    393               dnl Read the .la file. It defines the variables
    394               dnl dlname, library_names, old_library, dependency_libs, current,
    395               dnl age, revision, installed, dlopen, dlpreopen, libdir.
    396               save_libdir="$libdir"
    397               case "$found_la" in
    398                 */* | *\\*) . "$found_la" ;;
    399                 *) . "./$found_la" ;;
    400               esac
    401               libdir="$save_libdir"
    402               dnl We use only dependency_libs.
    403               for dep in $dependency_libs; do
    404                 case "$dep" in
    405                   -L*)
    406                     additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
    407                     dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
    408                     dnl But don't add it
    409                     dnl   1. if it's the standard /usr/lib,
    410                     dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
    411                     dnl   3. if it's already present in $LDFLAGS or the already
    412                     dnl      constructed $LIBNAME,
    413                     dnl   4. if it doesn't exist as a directory.
    414                     if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
    415                       haveit=
    416                       if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
    417                         if test -n "$GCC"; then
    418                           case $host_os in
    419                             linux* | gnu* | k*bsd*-gnu) haveit=yes;;
    420                           esac
    421                         fi
    422                       fi
    423                       if test -z "$haveit"; then
    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$additional_libdir"; then
    428                             haveit=yes
    429                             break
    430                           fi
    431                         done
    432                         if test -z "$haveit"; then
    433                           if test -d "$additional_libdir"; then
    434                             dnl Really add $additional_libdir to $LIBNAME.
    435                             LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
    436                           fi
    437                         fi
    438                         haveit=
    439                         for x in $LDFLAGS $LTLIB[]NAME; do
    440                           AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
    441                           if test "X$x" = "X-L$additional_libdir"; then
    442                             haveit=yes
    443                             break
    444                           fi
    445                         done
    446                         if test -z "$haveit"; then
    447                           if test -d "$additional_libdir"; then
    448                             dnl Really add $additional_libdir to $LTLIBNAME.
    449                             LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
    450                           fi
    451                         fi
    452                       fi
    453                     fi
    454                     ;;
    455                   -R*)
    456                     dir=`echo "X$dep" | sed -e 's/^X-R//'`
    457                     if test "$enable_rpath" != no; then
    458                       dnl Potentially add DIR to rpathdirs.
    459                       dnl The rpathdirs will be appended to $LIBNAME at the end.
    460                       haveit=
    461                       for x in $rpathdirs; do
    462                         if test "X$x" = "X$dir"; then
    463                           haveit=yes
    464                           break
    465                         fi
    466                       done
    467                       if test -z "$haveit"; then
    468                         rpathdirs="$rpathdirs $dir"
    469                       fi
    470                       dnl Potentially add DIR to ltrpathdirs.
    471                       dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
    472                       haveit=
    473                       for x in $ltrpathdirs; do
    474                         if test "X$x" = "X$dir"; then
    475                           haveit=yes
    476                           break
    477                         fi
    478                       done
    479                       if test -z "$haveit"; then
    480                         ltrpathdirs="$ltrpathdirs $dir"
    481                       fi
    482                     fi
    483                     ;;
    484                   -l*)
    485                     dnl Handle this in the next round.
    486                     names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
    487                     ;;
    488                   *.la)
    489                     dnl Handle this in the next round. Throw away the .la's
    490                     dnl directory; it is already contained in a preceding -L
    491                     dnl option.
    492                     names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
    493                     ;;
    494                   *)
    495                     dnl Most likely an immediate library name.
    496                     LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
    497                     LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
    498                     ;;
    499                 esac
    500               done
    501             fi
    502           else
    503             dnl Didn't find the library; assume it is in the system directories
    504             dnl known to the linker and runtime loader. (All the system
    505             dnl directories known to the linker should also be known to the
    506             dnl runtime loader, otherwise the system is severely misconfigured.)
    507             LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
    508             LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
    509           fi
    510         fi
    511       fi
    512     done
    513   done
    514   if test "X$rpathdirs" != "X"; then
    515     if test -n "$hardcode_libdir_separator"; then
    516       dnl Weird platform: only the last -rpath option counts, the user must
    517       dnl pass all path elements in one option. We can arrange that for a
    518       dnl single library, but not when more than one $LIBNAMEs are used.
    519       alldirs=
    520       for found_dir in $rpathdirs; do
    521         alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
    522       done
    523       dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
    524       acl_save_libdir="$libdir"
    525       libdir="$alldirs"
    526       eval flag=\"$hardcode_libdir_flag_spec\"
    527       libdir="$acl_save_libdir"
    528       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
    529     else
    530       dnl The -rpath options are cumulative.
    531       for found_dir in $rpathdirs; do
    532         acl_save_libdir="$libdir"
    533         libdir="$found_dir"
    534         eval flag=\"$hardcode_libdir_flag_spec\"
    535         libdir="$acl_save_libdir"
    536         LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
    537       done
    538     fi
    539   fi
    540   if test "X$ltrpathdirs" != "X"; then
    541     dnl When using libtool, the option that works for both libraries and
    542     dnl executables is -R. The -R options are cumulative.
    543     for found_dir in $ltrpathdirs; do
    544       LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
    545     done
    546   fi
    547 ])
    548 
    549 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
    550 dnl unless already present in VAR.
    551 dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
    552 dnl contains two or three consecutive elements that belong together.
    553 AC_DEFUN([AC_LIB_APPENDTOVAR],
    554 [
    555   for element in [$2]; do
    556     haveit=
    557     for x in $[$1]; do
    558       AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
    559       if test "X$x" = "X$element"; then
    560         haveit=yes
    561         break
    562       fi
    563     done
    564     if test -z "$haveit"; then
    565       [$1]="${[$1]}${[$1]:+ }$element"
    566     fi
    567   done
    568 ])
    569 
    570 dnl For those cases where a variable contains several -L and -l options
    571 dnl referring to unknown libraries and directories, this macro determines the
    572 dnl necessary additional linker options for the runtime path.
    573 dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
    574 dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
    575 dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
    576 dnl otherwise linking without libtool is assumed.
    577 AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
    578 [
    579   AC_REQUIRE([AC_LIB_RPATH])
    580   AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
    581   $1=
    582   if test "$enable_rpath" != no; then
    583     if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
    584       dnl Use an explicit option to hardcode directories into the resulting
    585       dnl binary.
    586       rpathdirs=
    587       next=
    588       for opt in $2; do
    589         if test -n "$next"; then
    590           dir="$next"
    591           dnl No need to hardcode the standard /usr/lib.
    592           if test "X$dir" != "X/usr/$acl_libdirstem"; then
    593             rpathdirs="$rpathdirs $dir"
    594           fi
    595           next=
    596         else
    597           case $opt in
    598             -L) next=yes ;;
    599             -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
    600                  dnl No need to hardcode the standard /usr/lib.
    601                  if test "X$dir" != "X/usr/$acl_libdirstem"; then
    602                    rpathdirs="$rpathdirs $dir"
    603                  fi
    604                  next= ;;
    605             *) next= ;;
    606           esac
    607         fi
    608       done
    609       if test "X$rpathdirs" != "X"; then
    610         if test -n ""$3""; then
    611           dnl libtool is used for linking. Use -R options.
    612           for dir in $rpathdirs; do
    613             $1="${$1}${$1:+ }-R$dir"
    614           done
    615         else
    616           dnl The linker is used for linking directly.
    617           if test -n "$hardcode_libdir_separator"; then
    618             dnl Weird platform: only the last -rpath option counts, the user
    619             dnl must pass all path elements in one option.
    620             alldirs=
    621             for dir in $rpathdirs; do
    622               alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir"
    623             done
    624             acl_save_libdir="$libdir"
    625             libdir="$alldirs"
    626             eval flag=\"$hardcode_libdir_flag_spec\"
    627             libdir="$acl_save_libdir"
    628             $1="$flag"
    629           else
    630             dnl The -rpath options are cumulative.
    631             for dir in $rpathdirs; do
    632               acl_save_libdir="$libdir"
    633               libdir="$dir"
    634               eval flag=\"$hardcode_libdir_flag_spec\"
    635               libdir="$acl_save_libdir"
    636               $1="${$1}${$1:+ }$flag"
    637             done
    638           fi
    639         fi
    640       fi
    641     fi
    642   fi
    643   AC_SUBST([$1])
    644 ])
    645