#/bin/sh

if [ $# != 2 ]; then
	echo No lib name or address is given.
	echo Usage: $0 library text_address
	exit 1
fi

LIBRARY=$1
LIB_TEXT_ADDRESS=$2

case $LIBRARY in
c)
  ALIGN=14
  BYTES=0x4000
  cat > ../stub/lib${LIBRARY}.stub.S <<EOF
	.globl _h_errlist
	_h_errlist = LIB_TEXT_ADDRESS + $BYTES
	.globl	_h_nerr
	_h_nerr = LIB_TEXT_ADDRESS + $BYTES + 0x94
	.globl  _sys_errlist
	_sys_errlist = LIB_TEXT_ADDRESS + $BYTES + 0x98
	.globl	_sys_nerr
	_sys_nerr = LIB_TEXT_ADDRESS + $BYTES + 0x2d4
	.globl	_sys_siglist
	_sys_siglist = LIB_TEXT_ADDRESS + $BYTES + 0x2d8
EOF
  ;;
m)
  ALIGN=10
  ;;
*)
  ALIGN=10
  echo No alignment is given. Set to 10.
  ;;
esac

echo This image, lib$LIBRARY, starts at $LIB_TEXT_ADDRESS.

GCCVERSION=${GCCVERSION-"-V 2.2.2d"}
HOST_STATIC_DIR=${HOST_STATIC_DIR-/local/lib/gcc-lib/i386-linux/$GCCVERSION}

CC="gcc $GCCVERSION -b i386-linux"
NM=${NM-$HOST_STATIC_DIR/nm}
LD=${NM-$HOST_STATIC_DIR/ld}

if [ ! -d $HOST_STATIC_DIR ]; then
	echo No such dir, $HOST_STATIC_DIR
	exit 1
fi

if [ -f ../stub/lib${LIBRARY}.stub.nm ]
then
  mv ../stub/lib${LIBRARY}.stub.nm ../stub/lib${LIBRARY}.stub.nm.old
fi

awk -f stub.awk ./$LIBRARY/lib${LIBRARY}.jump? >> ../stub/lib${LIBRARY}.stub.S

$CC -c -DLIB_TEXT_ADDRESS=$LIB_TEXT_ADDRESS -DALIGN=$ALIGN \
	../stub/lib${LIBRARY}.stub.S -o \
	../stub/lib${LIBRARY}.stub.o

$NM -d ../stub/lib${LIBRARY}.stub.o > ../stub/lib${LIBRARY}.stub.nm
