#! /bin/sh # # linkmodule for Python # Chris Herborth (chrish@qnx.com) # # This is covered by the same copyright/licensing terms as the rest of # Python. # # Shell script to build shared library versions of the modules; since # the change to the *ahem* "proper" import/export mechanism, this script # is much simpler. It handles PowerPC and x86, too. # # This is called by the Modules/Makefile as $(LDSHARED): # # $(LDSHARED) foomodule.o -o foomodule$(SO) # # Could also be called as: # # $(LDSHARED) readline.o -L/boot/home/config/lib -lreadline -ltermcap \ # -o readline$(SO) # # so we need to preserve the arguments, sort of. # Make sure we got reasonable arguments. TARGET="" ARGS="" while [ "$#" != "0" ]; do case "$1" in -o) TARGET="$2"; shift; shift;; *) ARGS="$ARGS $1"; shift;; esac done if [ "$TARGET" = "" ] ; then echo "Usage:" echo echo " $0 [args] -o foomodule.so [args] foomodule.o [args]" echo echo "Where:" echo echo " [args] normal compiler arguments" exit 1 fi # The shared libraries and glue objects we need to link against; these # libs are overkill for most of the standard modules, but it makes life # in this shell script easier. LIBS="-lbe -lnet -lroot" case $BE_HOST_CPU in ppc) # Boy, do we need a lot of crap... GLUE_LOC=/boot/develop/lib/ppc GLUE="${GLUE_LOC}/glue-noinit.a ${GLUE_LOC}/init_term_dyn.o" case $(uname -r) in 4.0*) CC="mwcc -xms -export pragma -nodup" ;; *) CC="mwcc -shared -export pragma -nodup" ;; esac ;; x86) # We don't need as much crap here... GLUE="" CC="gcc -nostart -Wl,-soname=${TARGET}" ;; *) # What the?!? echo "$0 doesn't support $BE_HOST_CPU systems..." echo "You're on your own... I'd be surprised if this works." GLUE="" CC="cc" ;; esac # Now link that shared lib... $CC -o $TARGET $ARGS $GLUE $LIBS