| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 1 | #!/bin/sh | 
| Guido van Rossum | 060f24c | 1998-12-18 15:37:14 +0000 | [diff] [blame] | 2 | # | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 3 | #  Truly fake ar, using a directory to store object files. | 
| Guido van Rossum | 060f24c | 1998-12-18 15:37:14 +0000 | [diff] [blame] | 4 | # | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 5 | #     Donn Cave, donn@oz.net | 
| Guido van Rossum | 060f24c | 1998-12-18 15:37:14 +0000 | [diff] [blame] | 6 |  | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 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' | 
| Guido van Rossum | 060f24c | 1998-12-18 15:37:14 +0000 | [diff] [blame] | 10 |  | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 11 | case $# in | 
 | 12 | 0|1|2) | 
 | 13 |         echo "$usage" >&2 | 
 | 14 |         exit 1 | 
 | 15 |         ;; | 
| Guido van Rossum | 060f24c | 1998-12-18 15:37:14 +0000 | [diff] [blame] | 16 | esac | 
 | 17 |  | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 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) | 
| Guido van Rossum | 3fa560b | 2001-01-19 00:31:10 +0000 | [diff] [blame] | 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 | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 59 |                 ;; | 
 | 60 |         x86) | 
| Guido van Rossum | 3fa560b | 2001-01-19 00:31:10 +0000 | [diff] [blame] | 61 |                 ld -shared -soname $(basename $1) -o $1 $library/* | 
| Fred Drake | d359022 | 2000-10-09 16:46:02 +0000 | [diff] [blame] | 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 |