1 #! /bin/sh 2 # 3 # linkmodule for Python 4 # Chris Herborth (chrish (at] qnx.com) 5 # 6 # This is covered by the same copyright/licensing terms as the rest of 7 # Python. 8 # 9 # Shell script to build shared library versions of the modules; since 10 # the change to the *ahem* "proper" import/export mechanism, this script 11 # is much simpler. It handles PowerPC and x86, too. 12 # 13 # This is called by the Modules/Makefile as $(LDSHARED): 14 # 15 # $(LDSHARED) foomodule.o -o foomodule$(SO) 16 # 17 # Could also be called as: 18 # 19 # $(LDSHARED) readline.o -L/boot/home/config/lib -lreadline -ltermcap \ 20 # -o readline$(SO) 21 # 22 # so we need to preserve the arguments, sort of. 23 24 # Make sure we got reasonable arguments. 25 TARGET="" 26 ARGS="" 27 28 while [ "$#" != "0" ]; do 29 case "$1" in 30 -o) TARGET="$2"; shift; shift;; 31 *) ARGS="$ARGS $1"; shift;; 32 esac 33 done 34 35 if [ "$TARGET" = "" ] ; then 36 echo "Usage:" 37 echo 38 echo " $0 [args] -o foomodule.so [args] foomodule.o [args]" 39 echo 40 echo "Where:" 41 echo 42 echo " [args] normal compiler arguments" 43 exit 1 44 fi 45 46 # The shared libraries and glue objects we need to link against; these 47 # libs are overkill for most of the standard modules, but it makes life 48 # in this shell script easier. 49 LIBS="-lbe -lnet -lroot" 50 51 case $BE_HOST_CPU in 52 ppc) 53 # Boy, do we need a lot of crap... 54 GLUE_LOC=/boot/develop/lib/ppc 55 GLUE="${GLUE_LOC}/glue-noinit.a ${GLUE_LOC}/init_term_dyn.o" 56 case $(uname -r) in 57 4.0*) CC="mwcc -xms -export pragma -nodup" ;; 58 *) CC="mwcc -shared -export pragma -nodup" ;; 59 esac 60 ;; 61 62 x86) 63 # We don't need as much crap here... 64 GLUE="" 65 CC="gcc -nostart -Wl,-soname=${TARGET}" 66 ;; 67 68 *) 69 # What the?!? 70 echo "$0 doesn't support $BE_HOST_CPU systems..." 71 echo "You're on your own... I'd be surprised if this works." 72 GLUE="" 73 CC="cc" 74 ;; 75 esac 76 77 # Now link that shared lib... 78 $CC -o $TARGET $ARGS $GLUE $LIBS 79