#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL.  You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation.  Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation.  All Rights
# Reserved.
#

#
# Wrapper for brain-damaged compilers that don't understand -o and -c together.
#
CXX=`echo $1 | sed -e "s|'||g" -e 's|"||g'`
shift
DUMMY="XxxXxxX"
DASH_C=0
DASH_O=0
GET_OBJECT=0
C_SRC="${DUMMY}"
CC_SRC="${DUMMY}"
CPP_SRC="${DUMMY}"
S_SRC="${DUMMY}"
OBJECT="${DUMMY}"

for i in $*
do
	[ ${GET_OBJECT} -eq 1 ]  && {
	case $i in
		./*/*.o)	OBJECT="$i"
			OPTS="${OPTS} -o"
   			DASH_O=1
			;;
		./*.o)	OBJECT="`basename $i`"
			i=""
   			DASH_O=1
			;;
		*.o)	if [ $i = `basename $i` ]
			then
				i=""
			else
				OPTS="${OPTS} -o"
   				DASH_O=1
			fi
			;;
		*)	OPTS="${OPTS} -o $i"
   			DASH_O=1
			i=""
			;;
	esac
	GET_OBJECT=0
	}
	case $i in
		-c)
			DASH_C=1
			OPTS="${OPTS} -c"
			;;
		-o)
			GET_OBJECT=1
			;;
		*.c)
			C_SRC="$i"
			OPTS="${OPTS} $i"
# cc always creates the .o from the .c name
			OBJ=`basename ${C_SRC} .c`.o
			;;
		+.*)
			OPTS="${OPTS} $i"
			;;
		*.cpp)
			CPP_SRC="$i"
			OPTS="${OPTS} $i"
# cc always creates the .o from the .cpp name
			OBJ=`basename ${CPP_SRC} .cpp`.o
			;;
		*.cc)
			CC_SRC="$i"
			OPTS="${OPTS} $i"
# cc always creates the .o from the .cc name
			OBJ=`basename ${CC_SRC} .cc`.o
			;;
		*.s)
			S_SRC="$i"
			OPTS="${OPTS} $i"
# cc always creates the .o from the .s name
			OBJ=`basename ${S_SRC} .s`.o
			;;
   		*.o)    OBJECT=$i
			OPTS="${OPTS} $i"
			;;
   		*) 	OPTS="${OPTS} $i"
			;;
	esac
done

${CXX} ${OPTS} || exit $?

# LAME!!!
if [ -f -O ]; then
	mv -f -- -O ${OBJECT}
fi

# if there was no -c and -o we're done
[ ${DASH_C} -eq 1 -a ${DASH_O} -eq 1 ] || exit 0

# if $OBJ and $OBJECT are the same we're done
[ $OBJ = $OBJECT ] && exit 0

[ -f $OBJ ] && mv -f $OBJ $OBJECT

