• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2#
3#  Truly fake ar, using a directory to store object files.
4#
5#     Donn Cave, donn@oz.net
6
7usage='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
11case $# in
120|1|2)
13        echo "$usage" >&2
14        exit 1
15        ;;
16esac
17
18command=$1
19library=$2
20shift 2
21
22case $command in
23cr)
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        ;;
39d)
40        if test -d $library
41        then
42                cd $library
43                rm -f $*
44        fi
45        ;;
46so)
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        ;;
73esac
74