equal
deleted
inserted
replaced
|
1 #!/bin/sh |
|
2 # |
|
3 # Truly fake ar, using a directory to store object files. |
|
4 # |
|
5 # Donn Cave, donn@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 |