pike.git
/
NT
/
tools
/
rntcc
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/NT/tools/rntcc:1:
+
#!/bin/sh
-
+
CLEANUP=yes
+
DEBUG=no
+
+
if [ $DEBUG = yes ]; then
+
set -x
+
fi
+
+
set -e
+
+
fixpath() {
+
echo "$*" | sed -e 's@/@\\@g'
+
}
+
+
fixabspath() {
+
echo "$*" | sed -e 's@/@\\@g'
+
}
+
+
OPTS=""
+
CFLAGS=""
+
SOURCES=""
+
OBJECTS=""
+
OUTPUT=
+
OPERATION=linking
+
INCLUDE_PATH=
+
LDOPTS=""
+
+
while test "$#" != 0; do
+
case $1 in
+
-E) OPERATION=preprocessing ;;
+
-c) OPERATION=compiling ;;
+
-g*) CFLAGS="$CFLAGS -d2" ;;
+
-O) CFLAGS="$CFLAGS -ox" ;;
+
-O2) CFLAGS="$CFLAGS -otexan" ;;
+
*.c) SOURCES="$SOURCES $1" ;;
+
*.o) OBJECTS="$OBJECTS $1" ;;
+
*.a) OBJECTS="$OBJECTS `cat $a`" ;;
+
-o) OUTPUT="$2" ; shift ;;
+
+
-I*)
+
if test x$1 = x-I ; then
+
tmp="$2"
+
shift
+
else
+
tmp=`echo $1 | sed -e 's/^-I//g'`
+
fi
+
+
case $tmp in
+
/usr/include/* | /usr/local/include*)
+
;;
+
*)
+
CFLAGS="$CFLAGS -i`fixpath $tmp`"
+
;;
+
esac
+
;;
+
+
-traditional-cpp | -lc | -lm) ;;
+
+
-R | -L) shift ;;
+
-R* | -L* | -Wl*) ;;
+
+
-D*)
+
CFLAGS="$CFLAGS `echo $1 | sed -e 's/^-I/-d/g'`"
+
;;
+
+
# Options to parse:
+
# -l
+
+
*)
+
echo "Unrecognized option $1"
+
exit 1
+
;;
+
esac
+
shift
+
done
+
+
rm $OUTPUT 2>/dev/null 1>/dev/null || :
+
+
OLDIFS="$IFS"
+
IFS=:
+
set dummy $INCLUDE_PATH
+
shift
+
IFS="$OLDIFS"
+
+
IPATH=.
+
IPATHS=":.:"
+
+
for a in $*
+
do
+
case $IPATHS in
+
*:$a:*) ;;
+
*)
+
IPATH="$IPATH;`fixpath $a`"
+
IPATHS="$IPATHS:$a:"
+
;;
+
esac
+
done
+
+
do_cmd() {
+
echo DOING $*
+
BATFILE=TMP$$.bat
+
PWD=`pwd`
+
RPWD=`fixabspath $PWD`
+
if [ $DEBUG != yes ]; then
+
echo >$BATFILE "@echo off"
+
else
+
echo >$BATFILE
+
fi
+
echo >>$BATFILE "$NTDRIVE"
+
echo >>$BATFILE "cd $RPWD"
+
echo >>$BATFILE "$*"
+
rsh $NTHOST $NTDRIVE$RPWD\\$BATFILE
+
if [ $CLEANUP = yes ]; then
+
rm $BATFILE || :
+
fi
+
}
+
+
ERRORFILE=TMP$$.err
+
rm $ERRORFILE 2>/dev/null 1>/dev/null || :
+
+
CFLAGS="$CFLAGS -zq -i$IPATH -fr$ERRORFILE"
+
if [ "x$OUTPUT" != x ]; then
+
CFLAGS="$CFLAGS -fo$OUTPUT"
+
fi
+
+
case $OPERATION in
+
compiling)
+
do_cmd wcc386 $CFLAGS `fixpath $SOURCES $OBJECTS`
+
TARGET=$OUTPUT
+
;;
+
+
preprocessing)
+
do_cmd wcc386 -p $CFLAGS `fixpath $SOURCES`
+
;;
+
+
linking)
+
for a in `fixpath $SOURCES`
+
do
+
BASE=`echo $a | sed -e 's/\.c//'`
+
do_cmd wcc386 -i$IPATH $CFLAGS -fr$ERRORFILE -fo=$BASE.obj $a
+
OBJECTS="$OBJECTS $BASE.obj"
+
done
+
+
LDFILE=TMP$$.lk
+
echo "name $OUTPUT.exe $LDOPTS FIL `fixpath $OBJECTS | sed -e 's/ /,/g'`" >$LDFILE
+
do_cmd wlink @$LDFILE
+
TARGET=$OUTPUT.exe
+
if [ $CLEANUP = yes ]; then
+
if [ "x$LDFILE" != x ]; then
+
rm $LDFILE || :
+
fi
+
fi
+
;;
+
esac
+
+
if [ -f $ERRORFILE ]; then
+
cat $ERRORFILE 1>&2
+
if grep -iv 'Warning' <$ERRORFILE >/dev/null 2>/dev/null; then
+
rm $ERRORFILE
+
exit 1
+
fi
+
rm $ERRORFILE
+
fi
+
+
if [ "x$TARGET" != x ]; then
+
if [ ! -f "$TARGET" ]; then
+
echo "RNTCC: output file not generated"
+
exit 1
+
fi
+
fi
+
+
if [ $OPERATION = linking ]; then
+
echo >$OUTPUT "#!/bin/sh"
+
echo >>$OUTPUT "BATFILE=TMP\$\$.bat"
+
echo >>$OUTPUT "echo >\$BATFILE @echo off"
+
echo >>$OUTPUT "echo >>\$BATFILE $NTDRIVE"
+
PWD=`pwd`
+
RPWD=`fixabspath $PWD`
+
echo >>$OUTPUT "echo >>\$BATFILE cd '$RPWD'"
+
echo >>$OUTPUT "echo >>\$BATFILE $TARGET \"\$@\""
+
echo >>$OUTPUT "rsh $NTHOST '$NTDRIVE$RPWD\\'\$BATFILE"
+
echo >>$OUTPUT "rm \$BATFILE"
+
chmod +x $OUTPUT
+
fi
Newline at end of file added.