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