home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / share / aclocal / lib-link.m4 < prev    next >
Encoding:
M4 Source File  |  2007-03-05  |  26.2 KB  |  645 lines

  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.