#! /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="-L.. -lpython1.5 -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
