#!/bin/sh

#
# FIXME: It is time to re-write this in Pike
#

. $NTTOOLS

set -e

OPTIONS=$1
shift
OUTPUT=$1
shift

case "$CC" in
  *rntcl)
    case "E$OPTIONS" in
      *x*)
        ofixed="`fixpath $OUTPUT`"
        if [ $# = 0 ]; then
          to_extract=`do_cmd lib -list -nologo "$ofixed"`
        else
          to_extract=$@
        fi
        for a in $to_extract
        do
          do_cmd lib -nologo "-extract:$a" "$ofixed"
        done
        exit $?

      ;;
      *d*) exit 1 ;;
      *x*) exit 1 ;;
      *q*|*r*)
        do_cmd lib "-OUT:`fixpath $OUTPUT`" `fixpath $@`
        winname="`echo $OUTPUT | sed -e 's/^lib\(.*\)\.a/\1.lib/'`"
        if [ "$winname" != "$OUTPUT" ]; then
          cp "$OUTPUT" "$winname"
        fi
        exit $?
      ;;
    esac
  ;;

  *rntcc)

  XOPTS="-b -c"

  case "E$OPTIONS" in
    *x*)
      OPCHAR='*'
     if [ $# = 0 ]; then
        TMPDIR=TMP$$.d
        rm -rf $TMPDIR >/dev/null 2>/dev/null || :
        mkdir $TMPDIR
        do_cmd wlib -x -d=$TMPDIR `fixpath $OUTPUT`
        (
          cd $TMPDIR
          for a in *
          do
            BASE=`echo $a | sed -e 's/\.[^.]$//'`
            mv $a ../$BASE.o
          done
        )
        rm -rf $TMPDIR >/dev/null 2>/dev/null || :
        exit 0
     fi
    ;;

    *d*)
      OPTCHAR='-'
    ;;

    *r*)
      OPCHAR='-+'
    ;;

    *q*)
      OPCHAR='+'
    ;;
  esac

  XFILE=TMP$$.l

  rm $XFILE 2>/dev/null 1>/dev/null || :

  OPTS=
  for a in "$@"
  do
    OPTS="$OPTS $OPCHAR$a"
  done

  echo >$XFILE "$OPTS"

  do_cmd wlib $XOPTS `fixpath $OUTPUT` @$XFILE

  if [ $CLEANUP = yes ]; then
    if [ -f $XFILE ]; then
     rm $XFILE
    fi
  fi

  winname="`echo $OUTPUT | sed -e 's/^lib\(.*\)\.a/\1.lib/'`"
  if [ "$winname" != "$OUTPUT" ]; then
    cp "$OUTPUT" "$winname"
  fi

  ;;
  *)
    echo Unknown C compiler: $CC
  ;;
esac

