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