Home | History | Annotate | Download | only in Modules
      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