libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: darwin fat archive support


From: Peter O'Gorman
Subject: Re: darwin fat archive support
Date: Thu, 22 Jul 2004 23:04:38 +0900
User-agent: Mozilla Thunderbird 0.6 (Macintosh/20040502)

Albert Chin wrote:

On Mon, Jul 19, 2004 at 12:03:40AM +0900, Peter O'Gorman wrote:

Okay to apply?


grep -> $GREP
sed -> $SED

More comments below.

Thanks,
I just applied this, hope it is some kind of improvement :)

(then I realized that I forgot to $SED a sed and applied that too)

Peter
--
Peter O'Gorman - http://www.pogma.com
Index: ChangeLog
        * ltmain.in [darwin](func_extract_archives): Clean up last commit
        a little, some suggestions are from Albert Chin, those that are
        broken are mine.

Index: ltmain.in
===================================================================
RCS file: /cvsroot/libtool/libtool/ltmain.in,v
retrieving revision 1.401
diff -u -3 -p -u -r1.401 ltmain.in
--- ltmain.in 20 Jul 2004 14:53:11 -0000 1.401
+++ ltmain.in 22 Jul 2004 13:34:10 -0000
@@ -517,42 +517,45 @@ func_extract_archives () {
       fi
       case $host in
       *-darwin*)
-        darwin_orig_dir=`pwd`
-       $show "cd $my_xdir"
-       $run eval "cd \$my_xdir" || exit $?
-       darwin_archive=$my_xabs
-       darwin_curdir=`pwd`
-       darwin_base_archive=`basename $darwin_archive`
-       darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | grep 
Architectures 2>/dev/null`
-       if test -n "$darwin_arches"; then 
-         darwin_arches=`echo "$darwin_arches" | sed -e 's/.*are://'`
-         darwin_arch=
-         for darwin_arch in  $darwin_arches ; do
-             mkdir -p ./unfat-$$/${darwin_base_archive}-${darwin_arch}
-             lipo -thin $darwin_arch -output 
unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive} 
${darwin_archive}
-      # Remove the table of contents from the thin files.
-             $run eval "$AR -d 
unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive} __.SYMDEF 
2>/dev/null|| true"
-             $run eval "$AR -d 
unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive} 
__.SYMDEF\ SORTED 2>/dev/null|| true"
-             cd unfat-$$/${darwin_base_archive}-${darwin_arch}
-             $run eval "$AR -xo ${darwin_base_archive}"
-             $run eval "rm ${darwin_base_archive}"
-             cd $darwin_curdir
-         done
+       $show "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       if test -z "$run"; then
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`basename $darwin_archive`
+         darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP 
Architectures 2>/dev/null`
+         if test -n "$darwin_arches"; then 
+           darwin_arches=`echo "$darwin_arches" | sed -e 's/.*are://'`
+           darwin_arch=
+           $show "$darwin_base_archive has multiple architectures 
$darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             lipo -thin $darwin_arch -output 
"unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 
"${darwin_archive}"
+             # Remove the table of contents from the thin files.
+             $AR -d 
"unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 
__.SYMDEF 2>/dev/null || true
+             $AR -d 
"unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 
__.SYMDEF\ SORTED 2>/dev/null || true
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $AR -xo "${darwin_base_archive}"
+             rm "${darwin_base_archive}"
+             cd "$darwin_curdir"
+           done # $darwin_arches
       ## Okay now we have a bunch of thin objects, gotta fatten them up :)
-         darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | 
$NL2SP`
-         darwin_file=
-         darwin_files=
-         for darwin_file in $darwin_filelist; do
+           darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | 
$NL2SP`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
              darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-             eval "lipo -create -output $darwin_file $darwin_files"
-         done
-         rm -rf unfat-$$
-         cd $darwin_orig_dir
-       else
-         cd $darwin_orig_dir
-         $show "(cd $my_xdir && $AR x $my_xabs)"
-         $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $?
-       fi
+             lipo -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           rm -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           (cd $my_xdir && $AR x $my_xabs) || exit $?
+         fi # $darwin_arches
+       fi # $run
       ;;
       *)
        # We will extract separately just the conflicting names and we will

reply via email to

[Prev in Thread] Current Thread [Next in Thread]