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

Contents of /eclass/libtool.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download)
Wed Jun 5 23:11:49 2002 UTC (11 years, 10 months ago) by azarah
Branch: MAIN
Changes since 1.1: +18 -1 lines
small fixes

1 azarah 1.1 #!/bin/bash
2     # Copyright 1999-2002 Gentoo Technologies, Inc.
3     # Distributed under the terms of the GNU General Public License, v2 or later
4     # Author: Martin Schlemmer <azarah@gentoo.org>
5 azarah 1.2 # $Header: /home/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.1 2002/06/05 22:53:11 azarah Exp $
6 azarah 1.1 # This eclass patches ltmain.sh distributed with libtoolized packages with the
7     # relink and portage patch
8     ECLASS=libtool
9     newdepend sys-devel/libtool
10    
11     DESCRIPTION="Based on the ${ECLASS} eclass"
12    
13    
14     elibtoolize() {
15    
16     local x=""
17     local y=""
18     local dopatch="no"
19 azarah 1.2 local portage="no"
20    
21     if [ "${1}" = "--portage" ]
22     then
23     portage="yes"
24     fi
25 azarah 1.1
26     for x in $(find_ltmain)
27     do
28     cd ${x}
29     einfo "Working directory: ${x}..."
30     dopatch="yes"
31 azarah 1.2
32     if [ "${portage}" = "yes" ] || \
33     [ -n "$(grep -e "inst_prefix_dir" ltmain.sh)" ]
34     then
35     if eval portage_patch --test $>${T}/libtool.foo
36     then
37     einfo "Applying libtool-portage.patch..."
38     portage_patch $>${T}/libtool.foo
39     fi
40     continue
41     fi
42 azarah 1.1
43     for y in test_patch relink_patch portage_patch
44     do
45     if ! eval ${y} --test $>${T}/libtool.foo
46     then
47     dopatch="no"
48     break
49     fi
50     done
51    
52     for y in test_patch relink_patch portage_patch
53     do
54     if [ "${dopatch}" = "yes" ]
55     then
56     einfo "Applying libtool-${y/_patch/}.patch..."
57     eval ${y} $>${T}/libtool.foo
58     else
59     libtoolize --copy --force
60     break
61     fi
62     done
63     done
64     }
65    
66     #
67     # Returns all the directories containing ltmain.sh
68     #
69     find_ltmain() {
70    
71     local x=""
72     local dirlist=""
73    
74     for x in $(find ${S} -name 'ltmain.sh')
75     do
76     dirlist="${dirlist} ${x%/*}"
77     done
78    
79     echo "${dirlist}"
80     }
81    
82     #
83     # Various patches we want to apply.
84     #
85     # Contains: portage_patch
86     # relink_patch
87     # test_patch
88     #
89     portage_patch() {
90    
91     local opts=""
92    
93     if [ "${1}" = "--test" ]
94     then
95     opts="--force --dry-run"
96     fi
97    
98     patch ${opts} -p0 <<-"ENDPATCH"
99     --- ltmain.sh.orig Wed Apr 3 01:19:37 2002
100     +++ ltmain.sh Sun May 26 19:50:52 2002
101     @@ -3940,9 +3940,39 @@
102     $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
103     exit 1
104     fi
105     - newdependency_libs="$newdependency_libs $libdir/$name"
106     + # We do not want portage's install root ($D) present. Check only for
107     + # this if the .la is being installed.
108     + if test "$installed" = yes; then
109     + mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:${D}::g" -e 's://:/:g'`"
110     + else
111     + mynewdependency_lib="$libdir/$name"
112     + fi
113     + # Do not add duplicates
114     + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"
115     + then
116     + newdependency_libs="$newdependency_libs $mynewdependency_lib"
117     + fi
118     + ;;
119     + *)
120     + if test "$installed" = yes; then
121     + # We do not want portage's build root ($S} present.
122     + if test -n "`echo $deplib |grep -e "${S}"`"
123     + then
124     + newdependency_libs=""
125     + # We do not want portage's install root ($D) present.
126     + elif test -n "`echo $deplib |grep -e "${D}"`"
127     + then
128     + mynewdependency_lib="`echo "$deplib" |sed -e "s:${D}::g" -e 's://:/:g'`"
129     + fi
130     + else
131     + mynewdependency_lib="$deplib"
132     + fi
133     + # Do not add duplicates
134     + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"
135     + then
136     + newdependency_libs="$newdependency_libs $mynewdependency_lib"
137     + fi
138     ;;
139     - *) newdependency_libs="$newdependency_libs $deplib" ;;
140     esac
141     done
142     dependency_libs="$newdependency_libs"
143     @@ -3975,6 +4005,10 @@
144     case $host,$output,$installed,$module,$dlname in
145     *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
146     esac
147     + # Do not add duplicates
148     + if test "$installed" = yes; then
149     + install_libdir="`echo "$install_libdir" |sed -e "s:${D}::g" -e 's://:/:g'`"
150     + fi
151     $echo > $output "\
152     # $outputname - a libtool library file
153     # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
154     ENDPATCH
155     }
156    
157     relink_patch() {
158    
159     local opts=""
160     local retval=0
161    
162     if [ "${1}" = "--test" ]
163     then
164     opts="--force --dry-run"
165     fi
166    
167     patch ${opts} -p0 <<-"ENDPATCH"
168     --- ltmain.sh Sun Aug 12 18:08:05 2001
169     +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
170     @@ -827,6 +827,7 @@
171     linker_flags=
172     dllsearchpath=
173     lib_search_path=`pwd`
174     + inst_prefix_dir=
175    
176     avoid_version=no
177     dlfiles=
178     @@ -959,6 +960,11 @@
179     prev=
180     continue
181     ;;
182     + inst_prefix)
183     + inst_prefix_dir="$arg"
184     + prev=
185     + continue
186     + ;;
187     release)
188     release="-$arg"
189     prev=
190     @@ -1167,6 +1173,11 @@
191     continue
192     ;;
193    
194     + -inst-prefix-dir)
195     + prev=inst_prefix
196     + continue
197     + ;;
198     +
199     # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
200     # so, if we see these flags be careful not to treat them like -L
201     -L[A-Z][A-Z]*:*)
202     @@ -2231,7 +2242,16 @@
203     if test "$hardcode_direct" = yes; then
204     add="$libdir/$linklib"
205     elif test "$hardcode_minus_L" = yes; then
206     - add_dir="-L$libdir"
207     + # Try looking first in the location we're being installed to.
208     + add_dir=
209     + if test -n "$inst_prefix_dir"; then
210     + case "$libdir" in
211     + [\\/]*)
212     + add_dir="-L$inst_prefix_dir$libdir"
213     + ;;
214     + esac
215     + fi
216     + add_dir="$add_dir -L$libdir"
217     add="-l$name"
218     elif test "$hardcode_shlibpath_var" = yes; then
219     case :$finalize_shlibpath: in
220     @@ -2241,7 +2261,16 @@
221     add="-l$name"
222     else
223     # We cannot seem to hardcode it, guess we'll fake it.
224     - add_dir="-L$libdir"
225     + # Try looking first in the location we're being installed to.
226     + add_dir=
227     + if test -n "$inst_prefix_dir"; then
228     + case "$libdir" in
229     + [\\/]*)
230     + add_dir="-L$inst_prefix_dir$libdir"
231     + ;;
232     + esac
233     + fi
234     + add_dir="$add_dir -L$libdir"
235     add="-l$name"
236     fi
237    
238     @@ -4622,12 +4651,30 @@
239     dir="$dir$objdir"
240    
241     if test -n "$relink_command"; then
242     + # Determine the prefix the user has applied to our future dir.
243     + inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
244     +
245     + # Don't allow the user to place us outside of our expected
246     + # location b/c this prevents finding dependent libraries that
247     + # are installed to the same prefix.
248     + if test "$inst_prefix_dir" = "$destdir"; then
249     + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
250     + exit 1
251     + fi
252     +
253     + if test -n "$inst_prefix_dir"; then
254     + # Stick the inst_prefix_dir data into the link command.
255     + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
256     + else
257     + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
258     + fi
259     +
260     $echo "$modename: warning: relinking \`$file'" 1>&2
261     $show "$relink_command"
262     if $run eval "$relink_command"; then :
263     else
264     $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
265     - continue
266     + exit 1
267     fi
268     fi
269    
270     @@ -4782,7 +4829,11 @@
271     if test "$finalize" = yes && test -z "$run"; then
272     tmpdir="/tmp"
273     test -n "$TMPDIR" && tmpdir="$TMPDIR"
274     - tmpdir="$tmpdir/libtool-$$"
275     + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null`
276     + if test $? = 0 ; then :
277     + else
278     + tmpdir="$tmpdir/libtool-$$"
279     + fi
280     if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
281     else
282     $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
283     ENDPATCH
284    
285     retval=$?
286    
287     # This one dont apply clean to libtool-1.4.2a, so do it manually.
288     if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ]
289     then
290     cp ltmain.sh ltmain.sh.orig
291     sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \
292     ltmain.sh.orig > ltmain.sh
293     rm -f ltmain.sh.orig
294     fi
295    
296     return ${retval}
297     }
298    
299     test_patch() {
300    
301     local opts=""
302    
303     if [ "${1}" = "--test" ]
304     then
305     opts="--force --dry-run"
306     fi
307    
308     patch ${opts} -p0 <<-"ENDPATCH"
309     --- ./ltmain.sh Tue May 29 19:16:03 2001
310     +++ ./ltmain.sh Tue May 29 21:26:50 2001
311     @@ -459,7 +459,7 @@
312     pic_mode=default
313     ;;
314     esac
315     - if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
316     + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
317     # non-PIC code in shared libraries is not supported
318     pic_mode=default
319     fi
320     @@ -1343,7 +1343,7 @@
321     ;;
322     esac
323     for pass in $passes; do
324     - if test $linkmode = prog; then
325     + if test "$linkmode" = prog; then
326     # Determine which files to process
327     case $pass in
328     dlopen)
329     @@ -1360,11 +1360,11 @@
330     found=no
331     case $deplib in
332     -l*)
333     - if test $linkmode = oldlib && test $linkmode = obj; then
334     + if test "$linkmode" = oldlib && test "$linkmode" = obj; then
335     $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
336     continue
337     fi
338     - if test $pass = conv; then
339     + if test "$pass" = conv; then
340     deplibs="$deplib $deplibs"
341     continue
342     fi
343     @@ -1384,7 +1384,7 @@
344     finalize_deplibs="$deplib $finalize_deplibs"
345     else
346     deplibs="$deplib $deplibs"
347     - test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
348     + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
349     fi
350     continue
351     fi
352     @@ -1393,16 +1393,16 @@
353     case $linkmode in
354     lib)
355     deplibs="$deplib $deplibs"
356     - test $pass = conv && continue
357     + test "$pass" = conv && continue
358     newdependency_libs="$deplib $newdependency_libs"
359     newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
360     ;;
361     prog)
362     - if test $pass = conv; then
363     + if test "$pass" = conv; then
364     deplibs="$deplib $deplibs"
365     continue
366     fi
367     - if test $pass = scan; then
368     + if test "$pass" = scan; then
369     deplibs="$deplib $deplibs"
370     newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
371     else
372     @@ -1417,7 +1417,7 @@
373     continue
374     ;; # -L
375     -R*)
376     - if test $pass = link; then
377     + if test "$pass" = link; then
378     dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
379     # Make sure the xrpath contains only unique directories.
380     case "$xrpath " in
381     @@ -1430,7 +1430,7 @@
382     ;;
383     *.la) lib="$deplib" ;;
384     *.$libext)
385     - if test $pass = conv; then
386     + if test "$pass" = conv; then
387     deplibs="$deplib $deplibs"
388     continue
389     fi
390     @@ -1451,7 +1451,7 @@
391     continue
392     ;;
393     prog)
394     - if test $pass != link; then
395     + if test "$pass" != link; then
396     deplibs="$deplib $deplibs"
397     else
398     compile_deplibs="$deplib $compile_deplibs"
399     @@ -1462,7 +1462,7 @@
400     esac # linkmode
401     ;; # *.$libext
402     *.lo | *.$objext)
403     - if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
404     + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
405     # If there is no dlopen support or we're linking statically,
406     # we need to preload.
407     newdlprefiles="$newdlprefiles $deplib"
408     @@ -1512,13 +1512,13 @@
409    
410     if test "$linkmode,$pass" = "lib,link" ||
411     test "$linkmode,$pass" = "prog,scan" ||
412     - { test $linkmode = oldlib && test $linkmode = obj; }; then
413     + { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then
414     # Add dl[pre]opened files of deplib
415     test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
416     test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
417     fi
418    
419     - if test $pass = conv; then
420     + if test "$pass" = conv; then
421     # Only check for convenience libraries
422     deplibs="$lib $deplibs"
423     if test -z "$libdir"; then
424     @@ -1537,7 +1537,7 @@
425     esac
426     tmp_libs="$tmp_libs $deplib"
427     done
428     - elif test $linkmode != prog && test $linkmode != lib; then
429     + elif test "$linkmode" != prog && test "$linkmode" != lib; then
430     $echo "$modename: \`$lib' is not a convenience library" 1>&2
431     exit 1
432     fi
433     @@ -1555,7 +1555,7 @@
434     fi
435    
436     # This library was specified with -dlopen.
437     - if test $pass = dlopen; then
438     + if test "$pass" = dlopen; then
439     if test -z "$libdir"; then
440     $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
441     exit 1
442     @@ -1604,7 +1604,7 @@
443     name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
444    
445     # This library was specified with -dlpreopen.
446     - if test $pass = dlpreopen; then
447     + if test "$pass" = dlpreopen; then
448     if test -z "$libdir"; then
449     $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
450     exit 1
451     @@ -1623,7 +1623,7 @@
452    
453     if test -z "$libdir"; then
454     # Link the convenience library
455     - if test $linkmode = lib; then
456     + if test "$linkmode" = lib; then
457     deplibs="$dir/$old_library $deplibs"
458     elif test "$linkmode,$pass" = "prog,link"; then
459     compile_deplibs="$dir/$old_library $compile_deplibs"
460     @@ -1634,7 +1634,7 @@
461     continue
462     fi
463    
464     - if test $linkmode = prog && test $pass != link; then
465     + if test "$linkmode" = prog && test "$pass" != link; then
466     newlib_search_path="$newlib_search_path $ladir"
467     deplibs="$lib $deplibs"
468    
469     @@ -1671,7 +1671,7 @@
470     # Link against this shared library
471    
472     if test "$linkmode,$pass" = "prog,link" ||
473     - { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
474     + { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
475     # Hardcode the library path.
476     # Skip directories that are in the system default run-time
477     # search path.
478     @@ -1693,7 +1693,7 @@
479     esac
480     ;;
481     esac
482     - if test $linkmode = prog; then
483     + if test "$linkmode" = prog; then
484     # We need to hardcode the library path
485     if test -n "$shlibpath_var"; then
486     # Make sure the rpath contains only unique directories.
487     @@ -1777,7 +1777,7 @@
488     linklib=$newlib
489     fi # test -n $old_archive_from_expsyms_cmds
490    
491     - if test $linkmode = prog || test "$mode" != relink; then
492     + if test "$linkmode" = prog || test "$mode" != relink; then
493     add_shlibpath=
494     add_dir=
495     add=
496     @@ -1826,7 +1826,7 @@
497     *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
498     esac
499     fi
500     - if test $linkmode = prog; then
501     + if test "$linkmode" = prog; then
502     test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
503     test -n "$add" && compile_deplibs="$add $compile_deplibs"
504     else
505     @@ -1843,7 +1843,7 @@
506     fi
507     fi
508    
509     - if test $linkmode = prog || test "$mode" = relink; then
510     + if test "$linkmode" = prog || test "$mode" = relink; then
511     add_shlibpath=
512     add_dir=
513     add=
514     @@ -1865,7 +1865,7 @@
515     add="-l$name"
516     fi
517    
518     - if test $linkmode = prog; then
519     + if test "$linkmode" = prog; then
520     test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
521     test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
522     else
523     @@ -1873,7 +1873,7 @@
524     test -n "$add" && deplibs="$add $deplibs"
525     fi
526     fi
527     - elif test $linkmode = prog; then
528     + elif test "$linkmode" = prog; then
529     if test "$alldeplibs" = yes &&
530     { test "$deplibs_check_method" = pass_all ||
531     { test "$build_libtool_libs" = yes &&
532     @@ -1932,9 +1932,9 @@
533     fi
534     fi # link shared/static library?
535    
536     - if test $linkmode = lib; then
537     + if test "$linkmode" = lib; then
538     if test -n "$dependency_libs" &&
539     - { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
540     + { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
541     test $link_static = yes; }; then
542     # Extract -R from dependency_libs
543     temp_deplibs=
544     @@ -1964,7 +1964,7 @@
545     tmp_libs="$tmp_libs $deplib"
546     done
547    
548     - if test $link_all_deplibs != no; then
549     + if test "$link_all_deplibs" != no; then
550     # Add the search paths of all dependency libraries
551     for deplib in $dependency_libs; do
552     case $deplib in
553     @@ -2007,15 +2007,15 @@
554     fi # link_all_deplibs != no
555     fi # linkmode = lib
556     done # for deplib in $libs
557     - if test $pass = dlpreopen; then
558     + if test "$pass" = dlpreopen; then
559     # Link the dlpreopened libraries before other libraries
560     for deplib in $save_deplibs; do
561     deplibs="$deplib $deplibs"
562     done
563     fi
564     - if test $pass != dlopen; then
565     - test $pass != scan && dependency_libs="$newdependency_libs"
566     - if test $pass != conv; then
567     + if test "$pass" != dlopen; then
568     + test "$pass" != scan && dependency_libs="$newdependency_libs"
569     + if test "$pass" != conv; then
570     # Make sure lib_search_path contains only unique directories.
571     lib_search_path=
572     for dir in $newlib_search_path; do
573     @@ -2073,7 +2073,7 @@
574     deplibs=
575     fi
576     done # for pass
577     - if test $linkmode = prog; then
578     + if test "$linkmode" = prog; then
579     dlfiles="$newdlfiles"
580     dlprefiles="$newdlprefiles"
581     fi
582     @@ -2410,7 +2410,7 @@
583     ;;
584     *)
585     # Add libc to deplibs on all other systems if necessary.
586     - if test $build_libtool_need_lc = "yes"; then
587     + if test "$build_libtool_need_lc" = "yes"; then
588     deplibs="$deplibs -lc"
589     fi
590     ;;
591     @@ -2683,7 +2683,7 @@
592    
593     # Test again, we may have decided not to build it any more
594     if test "$build_libtool_libs" = yes; then
595     - if test $hardcode_into_libs = yes; then
596     + if test "$hardcode_into_libs" = yes; then
597     # Hardcode the library paths
598     hardcode_libdirs=
599     dep_rpath=
600     ENDPATCH
601     }

  ViewVC Help
Powered by ViewVC 1.1.20