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

Contents of /eclass/libtool.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Wed Jun 5 22:53:11 2002 UTC (12 years, 3 months ago) by azarah
Branch: MAIN
add libtool.eclass

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

  ViewVC Help
Powered by ViewVC 1.1.20