You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
#!/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
|
|
|