[Top][All Lists]
[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