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