| #!/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 |