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

Diff of /eclass/libtool.eclass

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

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

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

  ViewVC Help
Powered by ViewVC 1.1.20