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