1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#!/bin/sh
#
# Truly fake ar, using a directory to store object files.
#
# Donn Cave, donn@oz.net
usage='Usage: ar-fake cr libpython.dir obj.o ...
ar-fake d libpython.dir obj.o ...
ar-fake so libpython.dir libpython.so'
case $# in
0|1|2)
echo "$usage" >&2
exit 1
;;
esac
command=$1
library=$2
shift 2
case $command in
cr)
if test -d $library
then :
else
mkdir $library
fi
if cp -p $* $library
then
# To force directory modify date, create or delete a file.
if test -e $library/.tch
then rm $library/.tch
else echo tch > $library/.tch
fi
exit 0
fi
;;
d)
if test -d $library
then
cd $library
rm -f $*
fi
;;
so)
case $BE_HOST_CPU in
ppc)
# In case your libpython.a refers to any exotic libraries,
# mwld needs to know that here. The following hack makes
# a couple of assumptions about Modules/Makefile. If it
# doesn't work, you may as well add the necessary libraries
# here explicitly instead.
extralibs=$(
(cd Modules; make -f Makefile -n link) |
sed -n 's/.*\.so \(.*\) -o python.*/\1/p'
)
mwld -xms -export pragma -nodup -o $1 $library/* $extralibs
;;
x86)
ld -shared -soname $(basename $1) -o $1 $library/*
;;
esac
status=$?
cd $(dirname $1)
ln -sf $PWD lib
exit $status
;;
*)
echo "$usage" >&2
exit 1
;;
esac
|