/[gentoo-x86]/eclass/libtool.eclass
Gentoo

Diff of /eclass/libtool.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.10 Revision 1.41
1#!/bin/bash 1# Copyright 1999-2004 Gentoo Foundation
2# Copyright 1999-2002 Gentoo Technologies, Inc.
3# Distributed under the terms of the GNU General Public License, v2 or later 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.41 2004/11/22 14:55:57 vapier Exp $
4#
4# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
5# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.10 2002/06/29 23:50:56 azarah Exp $ 6#
6# This eclass patches ltmain.sh distributed with libtoolized packages with the 7# This eclass patches ltmain.sh distributed with libtoolized packages with the
7# relink and portage patch 8# relink and portage patch among others
9
8ECLASS=libtool 10ECLASS="libtool"
9newdepend sys-devel/libtool 11INHERITED="${INHERITED} ${ECLASS}"
12
13# 2004.09.25 rac
14# i have verified that at least one package can use this eclass and
15# build properly even without libtool installed yet, probably using
16# the files in the distribution. eliminating this dependency fixes
17# bug 65209, which is a showstopper for people doing installs using
18# stageballs <3. if anybody decides to revert this, please attempt
19# to find an alternate way of resolving that bug at the same time.
20
21#DEPEND="!bootstrap? ( sys-devel/libtool )"
10 22
11DESCRIPTION="Based on the ${ECLASS} eclass" 23DESCRIPTION="Based on the ${ECLASS} eclass"
12 24
13ELIBTOOL_VERSION=1.8.1 25ELIBTOOL_VERSION="2.0.1"
26
27
28ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches"
29ELT_APPLIED_PATCHES=
30
31#
32# Returns all the directories containing ltmain.sh
33#
34ELT_find_ltmain_sh() {
35 local x=
36 local dirlist=
37
38 for x in $(find "${S}" -name 'ltmain.sh')
39 do
40 dirlist="${dirlist} ${x%/*}"
41 done
42
43 echo "${dirlist}"
44}
45
46#
47# See if we can apply $2 on $1, and if so, do it
48#
49ELT_try_and_apply_patch() {
50 local ret=0
51 local patch="$2"
52
53 # We only support patchlevel of 0 - why worry if its static patches?
54 if patch -p0 --dry-run $1 < ${patch} &>${T}/elibtool.log
55 then
56 einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."
57 patch -p0 $1 < ${patch} &>${T}/elibtool.log
58 ret=$?
59 export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"
60 else
61 ret=1
62 fi
63
64 return ${ret}
65}
66
67#
68# Run through the patches in $2 and see if any
69# apply to $1 ...
70#
71ELT_walk_patches() {
72 local x=
73 local y=
74 local ret=1
75 local patch_dir=
76
77 if [ -n "$2" ]
78 then
79 if [ -d "${ELT_PATCH_DIR}/$2" ]
80 then
81 patch_dir="${ELT_PATCH_DIR}/$2"
82 else
83 return ${ret}
84 fi
85
86 for x in $(ls -d "${patch_dir}"/* 2>/dev/null)
87 do
88 if [ -n "${x}" -a -f "${x}" ]
89 then
90 # For --remove-internal-dep ...
91 if [ -n "$3" ]
92 then
93 # For replace @REM_INT_DEP@ with what was passed
94 # to --remove-internal-dep
95 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
96 ${T}/$$.rem_int_deps.patch
97
98 x="${T}/$$.rem_int_deps.patch"
99 fi
100
101 if ELT_try_and_apply_patch "$1" "${x}"
102 then
103 ret=0
104 break
105 fi
106 fi
107 done
108 fi
109
110 return ${ret}
111}
14 112
15elibtoolize() { 113elibtoolize() {
16
17 local x="" 114 local x=
18 local y="" 115 local y=
19 local dopatch="no"
20 local dotest="yes"
21 local dorelink="yes"
22 local dotmp="yes"
23 local doportage="yes"
24 local portage="no" 116 local do_portage="no"
25 local reversedeps="no" 117 local do_reversedeps="no"
118 local do_only_patches="no"
119 local deptoremove=
26 local mylist="" 120 local my_dirlist=
121 local elt_patches="portage relink max_cmd_len sed test tmp"
122 local start_dir="${PWD}"
27 123
28 mylist="$(find_ltmain)" 124 my_dirlist="$(ELT_find_ltmain_sh)"
125
29 for x in ${*} 126 for x in "$@"
30 do 127 do
31 # Only apply portage patch, and dont "libtoolize --copy --force" 128 case "${x}" in
32 # if all patches fail. 129 "--portage")
33 if [ "${x}" = "--portage" ] 130 # Only apply portage patch, and don't
34 then 131 # 'libtoolize --copy --force' if all patches fail.
35 portage="yes" 132 do_portage="yes"
36 fi 133 ;;
134 "--reverse-deps")
37 # Apply the reverse-deps patch 135 # Apply the reverse-deps patch
38 #
39 # http://bugzilla.gnome.org/show_bug.cgi?id=75635 136 # http://bugzilla.gnome.org/show_bug.cgi?id=75635
40 if [ "${x}" = "--reverse-deps" ]
41 then
42 reversedeps="yes" 137 do_reversedeps="yes"
43 fi 138 elt_patches="${elt_patches} fix-relink"
139 ;;
140 "--patch-only")
141 # Do not run libtoolize if none of the patches apply ..
142 do_only_patches="yes"
143 ;;
144 "^--remove-internal-dep="*)
145 # We will replace @REM_INT_DEP@ with what is needed
146 # in ELT_walk_patches() ...
147 deptoremove="$(echo "${x}" | sed -e 's|--remove-internal-dep=||')"
148
149 # Add the patch for this ...
150 [ -n "${deptoremove}" ] && elt_patches="${elt_patches} rem-int-dep"
151 ;;
152 "--shallow")
44 # Only patch the ltmain.sh in ${S} 153 # Only patch the ltmain.sh in ${S}
45 if [ "${x}" = "--shallow" ]
46 then
47 if [ -f ${S}/ltmain.sh ] 154 if [ -f "${S}/ltmain.sh" ]
48 then 155 then
49 mylist="${S}" 156 my_dirlist="${S}"
50 else 157 else
51 mylist="" 158 my_dirlist=
52 fi 159 fi
53 else 160 ;;
54 mylist="$(find_ltmain)" 161 "--no-uclibc")
162 NO_UCLIBCTOOLIZE=1
163 ;;
164 esac
165 done
166
167 if use ppc-macos ; then
168 glibtoolize --copy --force
169 darwintoolize
55 fi 170 fi
56 done
57 171
58 for x in ${mylist} 172 for x in ${my_dirlist}
59 do 173 do
174 local tmp="$(echo "${x}" | sed -e "s|${S}||")"
175 export ELT_APPLIED_PATCHES=
176
60 cd ${x} 177 cd ${x}
61 einfo "Working directory: ${x}..." 178 einfo "Patching \${S}$(echo "/${tmp}/ltmain.sh" | sed -e 's|//|/|g') ..."
62 dopatch="yes"
63 dotest="yes"
64 dorelink="yes"
65 dotmp="yes"
66 doportage="yes"
67 179
68 for y in test_patch relink_patch tmp_patch portage_patch 180 for y in ${elt_patches}
69 do 181 do
70 if ! eval ${y} --test $>${T}/libtool.foo 182 local ret=0
183
184 case "${y}" in
185 "rem-int-dep")
186 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"
187 ret=$?
188 ;;
189 "fix-relink")
190 # Do not apply if we do not have the relink patch applied ...
191 if [ -n "$(grep 'inst_prefix_dir' "${x}/ltmain.sh")" ]
192 then
193 ELT_walk_patches "${x}/ltmain.sh" "${y}"
194 ret=$?
195 fi
196 ;;
197 "max_cmd_len")
198 # Do not apply if $max_cmd_len is not used ...
199 if [ -n "$(grep 'max_cmd_len' "${x}/ltmain.sh")" ]
200 then
201 ELT_walk_patches "${x}/ltmain.sh" "${y}"
202 ret=$?
203 fi
204 ;;
205 *)
206 ELT_walk_patches "${x}/ltmain.sh" "${y}"
207 ret=$?
208 ;;
209 esac
210
211 if [ "${ret}" -ne 0 ]
71 then 212 then
72 case ${y} in 213 case ${y} in
73 test_patch)
74 # non critical patch
75 dotest="no"
76 ;;
77 relink_patch) 214 "relink")
78 # critical patch, but could be applied 215 # Critical patch, but could be applied ...
79 if [ -z "$(grep -e "inst_prefix_dir" ltmain.sh)" ] && \ 216 if [ -z "$(grep 'inst_prefix_dir' "${x}/ltmain.sh")" ]
80 [ "${portage}" = "no" ]
81 then 217 then
82 dopatch="no" 218 ewarn " Could not apply relink.patch!"
83 fi
84 dorelink="no"
85 ;;
86 tmp_patch)
87 # non critical patch
88 dotmp="no"
89 ;;
90 portage_patch)
91 # critical patch
92 if [ "${portage}" = "yes" ]
93 then
94 echo
95 eerror "Portage patch requested, but failed to apply!"
96 die
97 fi
98 dopatch="no"
99 doportage="no"
100 ;;
101 esac
102 fi
103 done
104
105 for y in test_patch relink_patch tmp_patch portage_patch
106 do
107 if [ "${dopatch}" = "yes" ]
108 then
109 case ${y} in
110 test_patch)
111 if [ "${dotest}" = "no" ]
112 then
113 continue
114 fi 219 fi
115 ;; 220 ;;
116 relink_patch) 221 "portage")
222 # Critical patch - for this one we abort, as it can really
223 # cause breakage without it applied!
117 if [ "${dorelink}" = "no" ] 224 if [ "${do_portage}" = "yes" ]
118 then 225 then
119 continue 226 # Stupid test to see if its already applied ...
120 fi 227 if [ -z "$(grep 'We do not want portage' "${x}/ltmain.sh")" ]
121 ;;
122 tmp_patch)
123 if [ "${dotmp}" = "no" ]
124 then 228 then
125 continue 229 echo
230 eerror "Portage patch requested, but failed to apply!"
231 die "Portage patch requested, but failed to apply!"
126 fi 232 fi
127 ;; 233 else
128 portage_patch) 234 ewarn " Could not apply portage.patch!"
129 if [ "${doportage}" = "no" ] 235 ewarn " Please verify that it is not needed."
130 then
131 continue
132 fi 236 fi
133 ;; 237 ;;
134 esac 238 esac
135 239 fi
136 einfo "Applying libtool-${y/_patch/}.patch..." 240
137 eval ${y} $>${T}/libtool.foo 241 if [ -z "${ELT_APPLIED_PATCHES}" ]
138 elif [ "${portage}" = "no" ] && [ "${reversedeps}" = "no" ]
139 then 242 then
243 if [ "${do_portage}" = "no" -a \
244 "${do_reversedeps}" = "no" -a \
245 "${do_only_patches}" = "no" -a \
246 "${deptoremove}" = "" ]
247 then
248 # Sometimes ltmain.sh is in a subdirectory ...
249 if [ ! -f ${x}/configure.in -a ! -f ${x}/configure.ac ]
250 then
251 if [ -f ${x}/../configure.in -o -f ${x}/../configure.ac ]
252 then
253 cd ${x}/../
254 fi
255 fi
256
257 if which libtoolize &>/dev/null
258 then
140 ewarn "Cannot apply any patch, running libtoolize..." 259 ewarn "Cannot apply any patch, running libtoolize..."
141 libtoolize --copy --force 260 libtoolize --copy --force
261 fi
262 cd ${x}
142 break 263 break
264 fi
143 fi 265 fi
144 done 266 done
145
146 if [ "${reversedeps}" = "yes" ]
147 then
148 if eval reversedeps_patch --test $>${T}/libtool.foo
149 then
150 einfo "Applying libtool-reverse-deps.patch..."
151 eval reversedeps_patch $>${T}/libtool.foo
152 fi
153 fi
154 done 267 done
155 268
156 if [ -f libtool ] 269 if [ -f libtool ]
157 then 270 then
158 rm -f libtool 271 rm -f libtool
159 fi 272 fi
160 273
161 # We need to change the pwd back to $S, as we may be called in 274 cd "${start_dir}"
162 # src_compile()
163 cd ${S}
164}
165 275
166# 276 uclibctoolize
167# Returns all the directories containing ltmain.sh 277}
168# 278
169find_ltmain() { 279uclibctoolize() {
170 280 [ -n "${NO_UCLIBCTOOLIZE}" ] && return 0
281
282 local errmsg=""
283 [ "${PORTAGE_LIBC}" = "uClibc" ] \
284 && errmsg="PLEASE CHECK" \
285 || errmsg="Already patched"
286 local targets=""
171 local x="" 287 local x
172 local dirlist=""
173 288
174 for x in $(find ${S} -name 'ltmain.sh') 289 if [ -z "$@" ] ; then
175 do 290 targets="$(find ${S} -name configure -o -name ltconfig)"
176 dirlist="${dirlist} ${x%/*}"
177 done
178
179 echo "${dirlist}"
180}
181
182#
183# Various patches we want to apply.
184#
185# Contains: portage_patch
186# relink_patch
187# test_patch
188#
189portage_patch() {
190
191 local opts=""
192
193 if [ "${1}" = "--test" ]
194 then
195 opts="--force --dry-run"
196 fi 291 fi
197 292
198 patch ${opts} -p0 <<-"ENDPATCH" 293 einfo "Applying uClibc/libtool patches ..."
199 --- ltmain.sh.orig Wed Apr 3 01:19:37 2002 294 for x in ${targets} ; do
200 +++ ltmain.sh Sun May 26 19:50:52 2002 295 [ ! -s "${x}" ] && continue
201 @@ -3940,9 +3940,41 @@ 296 case $(basename "${x}") in
202 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 297 configure)
203 exit 1 298 if grep 'Transform linux' "${x}" >/dev/null ; then
204 fi 299 ebegin " Fixing \${S}${x/${S}}"
205 - newdependency_libs="$newdependency_libs $libdir/$name" 300 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/configure.patch" > /dev/null
206 + # We do not want portage's install root ($D) present. Check only for 301 eend $? "${errmsg} ${x}"
207 + # this if the .la is being installed.
208 + if test "$installed" = yes && test "$D"; then
209 + mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`"
210 + else
211 + mynewdependency_lib="$libdir/$name"
212 + fi
213 + # Do not add duplicates
214 + if test "$mynewdependency_lib"; then
215 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
216 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
217 + fi
218 + fi
219 + ;;
220 + *)
221 + if test "$installed" = yes; then
222 + # We do not want portage's build root ($S) present.
223 + if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then
224 + newdependency_libs=""
225 + # We do not want portage's install root ($D) present.
226 + elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then
227 + mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`"
228 + else
229 + mynewdependency_lib="$deplib"
230 + fi
231 + else
232 + mynewdependency_lib="$deplib"
233 + fi
234 + # Do not add duplicates
235 + if test "$mynewdependency_lib"; then
236 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
237 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
238 + fi
239 + fi
240 ;;
241 - *) newdependency_libs="$newdependency_libs $deplib" ;;
242 esac
243 done
244 dependency_libs="$newdependency_libs"
245 @@ -3975,6 +4005,10 @@
246 case $host,$output,$installed,$module,$dlname in
247 *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
248 esac
249 + # Do not add duplicates
250 + if test "$installed" = yes && test "$D"; then
251 + install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`"
252 + fi
253 $echo > $output "\
254 # $outputname - a libtool library file
255 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
256 ENDPATCH
257}
258
259relink_patch() {
260
261 local opts=""
262 local retval=0
263
264 if [ "${1}" = "--test" ]
265 then
266 opts="--force --dry-run"
267 fi
268
269 patch ${opts} -p0 <<-"ENDPATCH"
270 --- ltmain.sh Sun Aug 12 18:08:05 2001
271 +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
272 @@ -827,6 +827,7 @@
273 linker_flags=
274 dllsearchpath=
275 lib_search_path=`pwd`
276 + inst_prefix_dir=
277
278 avoid_version=no
279 dlfiles=
280 @@ -959,6 +960,11 @@
281 prev=
282 continue
283 ;;
284 + inst_prefix)
285 + inst_prefix_dir="$arg"
286 + prev=
287 + continue
288 + ;;
289 release)
290 release="-$arg"
291 prev=
292 @@ -1167,6 +1173,11 @@
293 continue
294 ;;
295
296 + -inst-prefix-dir)
297 + prev=inst_prefix
298 + continue
299 + ;;
300 +
301 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
302 # so, if we see these flags be careful not to treat them like -L
303 -L[A-Z][A-Z]*:*)
304 @@ -2231,7 +2242,16 @@
305 if test "$hardcode_direct" = yes; then
306 add="$libdir/$linklib"
307 elif test "$hardcode_minus_L" = yes; then
308 - add_dir="-L$libdir"
309 + # Try looking first in the location we're being installed to.
310 + add_dir=
311 + if test -n "$inst_prefix_dir"; then
312 + case "$libdir" in
313 + [\\/]*)
314 + add_dir="-L$inst_prefix_dir$libdir"
315 + ;;
316 + esac
317 + fi
318 + add_dir="$add_dir -L$libdir"
319 add="-l$name"
320 elif test "$hardcode_shlibpath_var" = yes; then
321 case :$finalize_shlibpath: in
322 @@ -2241,7 +2261,16 @@
323 add="-l$name"
324 else
325 # We cannot seem to hardcode it, guess we'll fake it.
326 - add_dir="-L$libdir"
327 + # Try looking first in the location we're being installed to.
328 + add_dir=
329 + if test -n "$inst_prefix_dir"; then
330 + case "$libdir" in
331 + [\\/]*)
332 + add_dir="-L$inst_prefix_dir$libdir"
333 + ;;
334 + esac
335 + fi
336 + add_dir="$add_dir -L$libdir"
337 add="-l$name"
338 fi
339
340 @@ -4622,12 +4651,30 @@
341 dir="$dir$objdir"
342
343 if test -n "$relink_command"; then
344 + # Determine the prefix the user has applied to our future dir.
345 + inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
346 +
347 + # Don't allow the user to place us outside of our expected
348 + # location b/c this prevents finding dependent libraries that
349 + # are installed to the same prefix.
350 + if test "$inst_prefix_dir" = "$destdir"; then
351 + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
352 + exit 1
353 + fi
354 +
355 + if test -n "$inst_prefix_dir"; then
356 + # Stick the inst_prefix_dir data into the link command.
357 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
358 + else
359 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
360 + fi
361 +
362 $echo "$modename: warning: relinking \`$file'" 1>&2
363 $show "$relink_command"
364 if $run eval "$relink_command"; then :
365 else
366 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
367 - continue
368 + exit 1
369 fi
370 fi 302 fi
371
372 ENDPATCH
373
374 retval=$?
375
376 # This one dont apply clean to libtool-1.4.2a, so do it manually.
377 if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ]
378 then
379 cp ltmain.sh ltmain.sh.orig
380 sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \
381 ltmain.sh.orig > ltmain.sh
382 rm -f ltmain.sh.orig
383 fi
384
385 return ${retval}
386}
387
388tmp_patch() {
389
390 local opts=""
391
392 if [ "${1}" = "--test" ]
393 then
394 opts="--force --dry-run"
395 fi
396
397 patch ${opts} -p0 <<-"ENDPATCH"
398 --- ltmain.sh Sun Aug 12 18:08:05 2001
399 +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
400 @@ -4782,7 +4829,11 @@
401 if test "$finalize" = yes && test -z "$run"; then
402 tmpdir="/tmp"
403 test -n "$TMPDIR" && tmpdir="$TMPDIR"
404 - tmpdir="$tmpdir/libtool-$$"
405 + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null`
406 + if test $? = 0 ; then :
407 + else
408 + tmpdir="$tmpdir/libtool-$$"
409 + fi
410 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
411 else
412 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
413 ENDPATCH
414}
415
416test_patch() {
417
418 local opts=""
419
420 if [ "${1}" = "--test" ]
421 then
422 opts="--force --dry-run"
423 fi
424
425 patch ${opts} -p0 <<-"ENDPATCH"
426 --- ./ltmain.sh Tue May 29 19:16:03 2001
427 +++ ./ltmain.sh Tue May 29 21:26:50 2001
428 @@ -459,7 +459,7 @@
429 pic_mode=default
430 ;;
431 esac
432 - if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
433 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
434 # non-PIC code in shared libraries is not supported
435 pic_mode=default
436 fi
437 @@ -1343,7 +1343,7 @@
438 ;; 303 ;;
439 esac 304
440 for pass in $passes; do 305 ltconfig)
441 - if test $linkmode = prog; then 306 local ver="$(grep '^VERSION=' ${x})"
442 + if test "$linkmode" = prog; then 307 ver="${ver/VERSION=}"
443 # Determine which files to process 308 [ "${ver:0:3}" == "1.4" ] && ver="1.3" # 1.4 and 1.3 are compat
444 case $pass in 309 ebegin " Fixing \${S}${x/${S}}"
445 dlopen) 310 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/ltconfig-${ver:0:3}.patch" > /dev/null
446 @@ -1360,11 +1360,11 @@ 311 eend $? "${errmsg} ${x}"
447 found=no 312 ;;
448 case $deplib in 313 esac
449 -l*) 314 done
450 - if test $linkmode = oldlib && test $linkmode = obj; then 315}
451 + if test "$linkmode" = oldlib && test "$linkmode" = obj; then 316
452 $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 317darwintoolize() {
453 continue 318 local targets=""
454 fi 319 local x
455 - if test $pass = conv; then 320
456 + if test "$pass" = conv; then 321 if [ -z "$@" ] ; then
457 deplibs="$deplib $deplibs" 322 targets="$(find ${S} -name ltmain.sh -o -name ltconfig)"
458 continue 323 fi
459 fi 324
460 @@ -1384,7 +1384,7 @@ 325 einfo "Applying Darwin/libtool patches ..."
461 finalize_deplibs="$deplib $finalize_deplibs" 326 for x in ${targets} ; do
462 else 327 [ ! -s "${x}" ] && continue
463 deplibs="$deplib $deplibs" 328 case $(basename "${x}") in
464 - test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" 329 ltmain.sh|ltconfig)
465 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 330 local ver="$(grep '^VERSION=' ${x})"
466 fi 331 ver="${ver/VERSION=}"
467 continue 332 if [ "${ver:0:3}" == "1.4" -o "${ver:0:3}" == "1.5" ];
468 fi 333 then
469 @@ -1393,16 +1393,16 @@ 334 ver="1.3" # 1.4, 1.5 and 1.3 are compat
470 case $linkmode in
471 lib)
472 deplibs="$deplib $deplibs"
473 - test $pass = conv && continue
474 + test "$pass" = conv && continue
475 newdependency_libs="$deplib $newdependency_libs"
476 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
477 ;;
478 prog)
479 - if test $pass = conv; then
480 + if test "$pass" = conv; then
481 deplibs="$deplib $deplibs"
482 continue
483 fi
484 - if test $pass = scan; then
485 + if test "$pass" = scan; then
486 deplibs="$deplib $deplibs"
487 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
488 else
489 @@ -1417,7 +1417,7 @@
490 continue
491 ;; # -L
492 -R*)
493 - if test $pass = link; then
494 + if test "$pass" = link; then
495 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
496 # Make sure the xrpath contains only unique directories.
497 case "$xrpath " in
498 @@ -1430,7 +1430,7 @@
499 ;;
500 *.la) lib="$deplib" ;;
501 *.$libext)
502 - if test $pass = conv; then
503 + if test "$pass" = conv; then
504 deplibs="$deplib $deplibs"
505 continue
506 fi
507 @@ -1451,7 +1451,7 @@
508 continue
509 ;;
510 prog)
511 - if test $pass != link; then
512 + if test "$pass" != link; then
513 deplibs="$deplib $deplibs"
514 else
515 compile_deplibs="$deplib $compile_deplibs"
516 @@ -1462,7 +1462,7 @@
517 esac # linkmode
518 ;; # *.$libext
519 *.lo | *.$objext)
520 - if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
521 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
522 # If there is no dlopen support or we're linking statically,
523 # we need to preload.
524 newdlprefiles="$newdlprefiles $deplib"
525 @@ -1512,13 +1512,13 @@
526
527 if test "$linkmode,$pass" = "lib,link" ||
528 test "$linkmode,$pass" = "prog,scan" ||
529 - { test $linkmode = oldlib && test $linkmode = obj; }; then
530 + { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then
531 # Add dl[pre]opened files of deplib
532 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
533 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
534 fi 335 fi
535 336
536 - if test $pass = conv; then 337 ebegin " Fixing \${S}${x/${S}}"
537 + if test "$pass" = conv; then 338 patch -p0 "${x}" "${ELT_PATCH_DIR}/darwin/$(basename "${x}")-${ver:0:3}.patch" > /dev/null
538 # Only check for convenience libraries 339 eend $? "PLEASE CHECK ${x}"
539 deplibs="$lib $deplibs" 340 ;;
540 if test -z "$libdir"; then 341 esac
541 @@ -1537,7 +1537,7 @@
542 esac
543 tmp_libs="$tmp_libs $deplib"
544 done
545 - elif test $linkmode != prog && test $linkmode != lib; then
546 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
547 $echo "$modename: \`$lib' is not a convenience library" 1>&2
548 exit 1
549 fi
550 @@ -1555,7 +1555,7 @@
551 fi
552
553 # This library was specified with -dlopen.
554 - if test $pass = dlopen; then
555 + if test "$pass" = dlopen; then
556 if test -z "$libdir"; then
557 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
558 exit 1
559 @@ -1604,7 +1604,7 @@
560 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
561
562 # This library was specified with -dlpreopen.
563 - if test $pass = dlpreopen; then
564 + if test "$pass" = dlpreopen; then
565 if test -z "$libdir"; then
566 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
567 exit 1
568 @@ -1623,7 +1623,7 @@
569
570 if test -z "$libdir"; then
571 # Link the convenience library
572 - if test $linkmode = lib; then
573 + if test "$linkmode" = lib; then
574 deplibs="$dir/$old_library $deplibs"
575 elif test "$linkmode,$pass" = "prog,link"; then
576 compile_deplibs="$dir/$old_library $compile_deplibs"
577 @@ -1634,7 +1634,7 @@
578 continue
579 fi
580
581 - if test $linkmode = prog && test $pass != link; then
582 + if test "$linkmode" = prog && test "$pass" != link; then
583 newlib_search_path="$newlib_search_path $ladir"
584 deplibs="$lib $deplibs"
585
586 @@ -1671,7 +1671,7 @@
587 # Link against this shared library
588
589 if test "$linkmode,$pass" = "prog,link" ||
590 - { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
591 + { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
592 # Hardcode the library path.
593 # Skip directories that are in the system default run-time
594 # search path.
595 @@ -1693,7 +1693,7 @@
596 esac
597 ;;
598 esac
599 - if test $linkmode = prog; then
600 + if test "$linkmode" = prog; then
601 # We need to hardcode the library path
602 if test -n "$shlibpath_var"; then
603 # Make sure the rpath contains only unique directories.
604 @@ -1777,7 +1777,7 @@
605 linklib=$newlib
606 fi # test -n $old_archive_from_expsyms_cmds
607
608 - if test $linkmode = prog || test "$mode" != relink; then
609 + if test "$linkmode" = prog || test "$mode" != relink; then
610 add_shlibpath=
611 add_dir=
612 add=
613 @@ -1826,7 +1826,7 @@
614 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
615 esac
616 fi
617 - if test $linkmode = prog; then
618 + if test "$linkmode" = prog; then
619 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
620 test -n "$add" && compile_deplibs="$add $compile_deplibs"
621 else
622 @@ -1843,7 +1843,7 @@
623 fi
624 fi
625
626 - if test $linkmode = prog || test "$mode" = relink; then
627 + if test "$linkmode" = prog || test "$mode" = relink; then
628 add_shlibpath=
629 add_dir=
630 add=
631 @@ -1865,7 +1865,7 @@
632 add="-l$name"
633 fi
634
635 - if test $linkmode = prog; then
636 + if test "$linkmode" = prog; then
637 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
638 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
639 else
640 @@ -1873,7 +1873,7 @@
641 test -n "$add" && deplibs="$add $deplibs"
642 fi
643 fi
644 - elif test $linkmode = prog; then
645 + elif test "$linkmode" = prog; then
646 if test "$alldeplibs" = yes &&
647 { test "$deplibs_check_method" = pass_all ||
648 { test "$build_libtool_libs" = yes &&
649 @@ -1932,9 +1932,9 @@
650 fi
651 fi # link shared/static library?
652
653 - if test $linkmode = lib; then
654 + if test "$linkmode" = lib; then
655 if test -n "$dependency_libs" &&
656 - { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
657 + { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
658 test $link_static = yes; }; then
659 # Extract -R from dependency_libs
660 temp_deplibs=
661 @@ -1964,7 +1964,7 @@
662 tmp_libs="$tmp_libs $deplib"
663 done
664
665 - if test $link_all_deplibs != no; then
666 + if test "$link_all_deplibs" != no; then
667 # Add the search paths of all dependency libraries
668 for deplib in $dependency_libs; do
669 case $deplib in
670 @@ -2007,15 +2007,15 @@
671 fi # link_all_deplibs != no
672 fi # linkmode = lib
673 done # for deplib in $libs
674 - if test $pass = dlpreopen; then
675 + if test "$pass" = dlpreopen; then
676 # Link the dlpreopened libraries before other libraries
677 for deplib in $save_deplibs; do
678 deplibs="$deplib $deplibs"
679 done 342 done
680 fi
681 - if test $pass != dlopen; then
682 - test $pass != scan && dependency_libs="$newdependency_libs"
683 - if test $pass != conv; then
684 + if test "$pass" != dlopen; then
685 + test "$pass" != scan && dependency_libs="$newdependency_libs"
686 + if test "$pass" != conv; then
687 # Make sure lib_search_path contains only unique directories.
688 lib_search_path=
689 for dir in $newlib_search_path; do
690 @@ -2073,7 +2073,7 @@
691 deplibs=
692 fi
693 done # for pass
694 - if test $linkmode = prog; then
695 + if test "$linkmode" = prog; then
696 dlfiles="$newdlfiles"
697 dlprefiles="$newdlprefiles"
698 fi
699 @@ -2410,7 +2410,7 @@
700 ;;
701 *)
702 # Add libc to deplibs on all other systems if necessary.
703 - if test $build_libtool_need_lc = "yes"; then
704 + if test "$build_libtool_need_lc" = "yes"; then
705 deplibs="$deplibs -lc"
706 fi
707 ;;
708 @@ -2683,7 +2683,7 @@
709
710 # Test again, we may have decided not to build it any more
711 if test "$build_libtool_libs" = yes; then
712 - if test $hardcode_into_libs = yes; then
713 + if test "$hardcode_into_libs" = yes; then
714 # Hardcode the library paths
715 hardcode_libdirs=
716 dep_rpath=
717 ENDPATCH
718} 343}
719
720reversedeps_patch() {
721
722 local opts=""
723
724 if [ "${1}" = "--test" ]
725 then
726 opts="--force --dry-run"
727 fi
728
729 patch ${opts} -p0 <<-"ENDPATCH"
730 --- ltmain.sh.orig Sat Mar 23 22:48:45 2002
731 +++ ltmain.sh Sat Mar 23 22:45:38 2002
732 @@ -1553,6 +1553,8 @@
733 convenience="$convenience $ladir/$objdir/$old_library"
734 old_convenience="$old_convenience $ladir/$objdir/$old_library"
735 tmp_libs=
736 + # PKGW
737 + dependency_libs=
738 for deplib in $dependency_libs; do
739 deplibs="$deplib $deplibs"
740 case "$tmp_libs " in
741 @@ -1668,6 +1670,8 @@
742 fi
743
744 tmp_libs=
745 + #PKGW
746 + dependency_libs=
747 for deplib in $dependency_libs; do
748 case $deplib in
749 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
750 @@ -2081,7 +2085,7 @@
751 -L*)
752 case " $tmp_libs " in
753 *" $deplib "*) ;;
754 - *) tmp_libs="$tmp_libs $deplib" ;;
755 + *) tmp_libs="$deplib $tmp_libs" ;;
756 esac
757 ;;
758 *) tmp_libs="$tmp_libs $deplib" ;;
759 ENDPATCH
760}
761

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20