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