summaryrefslogtreecommitdiffstats
path: root/BeOS/ar-fake
blob: e7efa7540131dceb64311f97c0ce1759f0845371 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/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