#!/bin/sh
MyPath=/usr/bin:/bin;
if [ -z "${PATH}" ]; then
export PATH=${MyPath};
else
export PATH=${PATH}:${MyPath};
fi
unranlib ()
{
local archive;
for archive in $*; do
local name="$(basename ${archive})";
local dir="/tmp/unranlib.$$/${name}";
local ofiles="";
local archs="$(file ${archive} | \
grep '(for architecture' | \
awk '{print $4}' | \
sed 's/)://')";
for arch in ${archs}; do
local archdir="${dir}/${arch}";
mkdir -p "${archdir}";
lipo -thin "${arch}" "${archive}" -o "${archdir}/${name}";
( cd "${archdir}" && ar -xo "./${name}"; );
local ofile;
for ofile in `find "${archdir}" -name \*.o`; do
ofiles="${ofiles} $(basename ${ofile})";
done
done
ofiles=$(echo ${ofiles} | tr ' ' '\012' | sort | uniq);
local ofile;
for ofile in ${ofiles}; do
lipo -create $(find "${dir}" -name "${ofile}" -print) -o "${dir}/${ofile}";
done
( cd "${dir}" && ar -cr "${name}" ${ofiles}; );
mv "${dir}/${name}" "${archive}";
rm -rf "${dir}";
done
rm -rf "/tmp/unranlib.$$";
}
arflags="$1";
archive="$2";
shift
shift
if [ -f "${archive}" ] &&
file "${archive}" | grep 'Mach-O fat file' > /dev/null; then
unranlib "${archive}";
fi
nmedit -p $*;
ar ${arflags} ${archive} $*;