Annotation of embedaddon/libiconv/srcm4/lib-link.m4, revision 1.1.1.3

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>