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

Diff of /eclass/libtool.eclass

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

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

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.38

  ViewVC Help
Powered by ViewVC 1.1.20