Made to work under Microsoft Xenix V3.2

This commit is contained in:
ceriel 1988-07-22 19:34:07 +00:00
parent a0a265736c
commit 44ce140103
5 changed files with 184 additions and 26 deletions

View file

@ -4,3 +4,4 @@ first
did_first did_first
myecho.c myecho.c
fixlexlib fixlexlib
cc.xenix

70
first/cc.xenix.src Normal file
View file

@ -0,0 +1,70 @@
trap "rm -f x$$.c" 0 1 2 3 15
EMHOME=/usr/em
CFLAG=0
TARGET=a.out
while :
do
case $# in
0) break;;
esac
case $1 in
-I*|-D*|-U*)
PREP=$PREP" "$1
;;
-c) CFLAG=1
;;
-o) shift
TARGET=$1
;;
-F) shift
LFLAG="-F $1"
;;
-*) FLAGS=$FLAGS" "$1
;;
*) ARG=$ARG" "$1
;;
esac
shift
done
for i in $ARG
do
case $i in
*.c)
nm=`basename $i .c`
if [ -x $EMHOME/lib/cpp ]
then
cpp=$EMHOME/lib/cpp
cppf=-P
else
cpp=/bin/cc
cppf=-E
fi
if $cpp $cppf $PREP $i > x$$.c && /bin/cc $FLAGS -c x$$.c
then
mv x$$.o $nm.o
LDARG=$LDARG" "$nm.o
else
rm -f x$$.c
exit 1
fi
rm -f x$$.c
;;
*.s)
if /bin/cc $FLAGS -c $i
then
LDARG=$LDARG" "`basename $i .s`.o
else exit 1
fi
;;
*) LDARG=$LDARG" "$i
;;
esac
done
case $CFLAG in
1) ;;
*) if /bin/cc $FLAGS $LFLAG $LDARG -o $TARGET
then :
else exit 1
fi
;;
esac

View file

@ -1,4 +1,5 @@
rm -f ../bin/x_tpath x_tpath rm -f ../bin/x_tpath x_tpath
echo 'Checking out your $PATH; . and $ACK/bin should be in front ...'
echo "echo $$" >../bin/x_tpath echo "echo $$" >../bin/x_tpath
rm -f x_tpath rm -f x_tpath
chmod +x ../bin/x_tpath chmod +x ../bin/x_tpath
@ -49,4 +50,18 @@ x$$)
STAT=4 ;; STAT=4 ;;
esac esac
rm -f ../bin/x_tpath x_tpath rm -f ../bin/x_tpath x_tpath
echo "echo 93" > ../bin/cat
chmod +x ../bin/cat
hash -r
case x`cat < /dev/null 2>/dev/null`
in
x93)
rm -f ../bin/cat
;;
*)
rm -f ../bin/cat
(cd ../bin ; echo Sorry, `pwd` comes too late in your PATH" ($PATH)" )
STAT=13
;;
esac
exit $STAT exit $STAT

View file

@ -10,11 +10,12 @@ first)
esac esac
: check $PATH first : check $PATH first
if sh ckpath if sh ckpath
then : then
echo "PATH is ok"
else else
exit 1 exit 1
fi fi
: check write-ability of /tmp and /usr/tmp echo check write-ability of /tmp and /usr/tmp ...
if ( >/usr/tmp/aaax.$$ ) if ( >/usr/tmp/aaax.$$ )
then then
rm /usr/tmp/aaax.$$ rm /usr/tmp/aaax.$$
@ -29,29 +30,33 @@ else
echo /tmp must exist and be writable. echo /tmp must exist and be writable.
exit 2 exit 2
fi fi
: set ACK HOME Directory in ../h/em_path.h echo "/tmp and /usr/tmp ok"
echo setting ACK HOME Directory in ../h/em_path.h ...
rm -f em_path.h rm -f em_path.h
sed -e "/^#define[ ]*EM_DIR/s@\".*\"@\"`cd .. ; pwd`\"@" <../h/em_path.h >em_path.h HM=`cd ..; pwd`
sed -e "/^#define[ ]*EM_DIR/s@\".*\"@\"$HM\"@" <../h/em_path.h >em_path.h
if cmp ../h/em_path.h em_path.h >/dev/null 2>&1 if cmp ../h/em_path.h em_path.h >/dev/null 2>&1
then then
: Don't touch ../h/em_path.h, it's already correct : Don't touch ../h/em_path.h, it's already correct
echo "../h/em_path.h already correct"
else else
rm -f ../h/em_path.h rm -f ../h/em_path.h
if mv em_path.h ../h >/dev/null 2>&1 if mv em_path.h ../h >/dev/null 2>&1
then : success then echo "../h/em_path.h replaced"
else else
echo "Sorry, can't replace ../h/em_path.h" echo "Sorry, can't replace ../h/em_path.h"
exit 7 exit 7
fi fi
fi fi
: translate myecho echo compile own echo program, so that we know how it works ...
if cc -o myecho myecho.c > /dev/null 2>&1 if cc -o echo myecho.c > /dev/null 2>&1
then then
: echo compilation succeeded
else else
echo "Sorry, cc does not seem to work" echo "Sorry, cc does not seem to work"
exit 8 exit 8
fi fi
cp echo ../bin/echo
: find cc option for lex library : find cc option for lex library
if fixlexlib if fixlexlib
then then
@ -64,7 +69,7 @@ if (ack_sys) >/dev/null 2>&1
then then
: echo Your system is: `ack_sys`. : echo Your system is: `ack_sys`.
else else
myecho -n "Give me the type of your system, the current choice is: echo -n "Give me the type of your system, the current choice is:
pdp_v7 PDP11 with sep I/D and version 7 (or BSD 2.8, 2.9) pdp_v7 PDP11 with sep I/D and version 7 (or BSD 2.8, 2.9)
vax_bsd4_1a VAX11 with BSD4.1a vax_bsd4_1a VAX11 with BSD4.1a
vax_bsd4_2 VAX11 with BSD4.2 vax_bsd4_2 VAX11 with BSD4.2
@ -93,7 +98,7 @@ system type: "
exit 10 exit 10
fi fi
fi fi
myecho -n "Your system is `ack_sys`, are you satisfied with that? (y/n) " echo -n "Your system is `ack_sys`, are you satisfied with that? (y/n) "
if read YESNO if read YESNO
then then
case $YESNO in case $YESNO in
@ -113,17 +118,12 @@ fi
: "Take action according to the system used" : "Take action according to the system used"
: 'Prevent the use of the system assembler on for certain systems' : 'Prevent the use of the system assembler on for certain systems'
: 'prevent the use of ranlib on pdp 11s' : 'prevent the use of ranlib on pdp 11s'
echo "take some actions according to system used ..."
case `ack_sys` in case `ack_sys` in
pdp_*) RMD="vax4" pdp_*) RMD="vax4"
echo "disabling use of ranlib; cannot trust its result"
echo 'echo "no ranlib on this system"; exit 93' > ../bin/ranlib echo 'echo "no ranlib on this system"; exit 93' > ../bin/ranlib
chmod +x ../bin/ranlib chmod +x ../bin/ranlib
ranlib > /dev/null 2>&1
case X$? in
X93) ;;
*) echo "Sorry, there still is an error in your PATH."
echo "It finds the system ranlib before ours, which is in the ACK bin directory."
exit 13
esac
;; ;;
vax*) ;; vax*) ;;
*) RMD="vax4" ;; *) RMD="vax4" ;;
@ -131,6 +131,7 @@ esac
for i in $RMD for i in $RMD
do do
( cd ../lib/$i ( cd ../lib/$i
echo "disabling use of local assembler and loader for $i"
if grep '^name as$' descr >/dev/null 2>&1 if grep '^name as$' descr >/dev/null 2>&1
then then
cp descr descr.orig cp descr descr.orig
@ -163,7 +164,7 @@ ABC
) )
;; ;;
esac esac
: 'Set the default machine in ../h/local.h' echo 'Setting the default machine in ../h/local.h ...'
BM=1 BM=1
case `ack_sys` in case `ack_sys` in
pdp_v7) ACM=pdp ; BM=0 ; SYS=V7 ;; pdp_v7) ACM=pdp ; BM=0 ; SYS=V7 ;;
@ -183,9 +184,11 @@ esac
rm -f local.h rm -f local.h
sed -e /ACKM/s/'".*"'/'"'$ACM'"'/ -e /BIGMACH/s/'[01]'/$BM/ -e /SYSTEM/s/'^#[ ]*define[ ]*[a-zA-Z_][a-zA-Z0-9_]*'/"# define $SYS"/ < ../h/local.h >local.h sed -e /ACKM/s/'".*"'/'"'$ACM'"'/ -e /BIGMACH/s/'[01]'/$BM/ -e /SYSTEM/s/'^#[ ]*define[ ]*[a-zA-Z_][a-zA-Z0-9_]*'/"# define $SYS"/ < ../h/local.h >local.h
if cmp -s ../h/local.h local.h if cmp -s ../h/local.h local.h
then : then
echo "../h/local.h already correct"
else else
cp local.h ../h cp local.h ../h
echo "../h/local.h updated"
rm -f local.h rm -f local.h
fi fi
echo "Your default machine to compile for is $ACM" echo "Your default machine to compile for is $ACM"
@ -214,9 +217,77 @@ vax_sysV_2)
cp libsysV_2/* libsys cp libsysV_2/* libsys
) )
;; ;;
xenix3)
echo "Xenix cannot handle our Makefiles; install our own make ..."
if ( cd ../util/make; make install )
then
echo "Done"
else
echo "Sorry, this seems to have failed."
echo "You have to install it by hand later, or use the Xenix"
echo "make anyway"
fi
echo "The Xenix C compiler cannot compile some of our programs."
echo "It complains about lack of heap space when many #defines are"
echo 'used. This is prevented by installing a "cc" shell script in'
echo 'the EM bin directory, which runs a .c file through a preprocessor'
echo 'before running it through the C compiler proper. Unfortunately,'
echo 'line number and filename information is lost. The compiler does'
echo 'not recognize its own line directives.'
echo 'You can remove this "cc" script from the EM bin directory'
echo 'when installation is done.'
cp cc.xenix cc.xenix.orig
ed - cc.xenix <<ABC
/EMHOME/s/=.*/=$HM/
w
q
ABC
cp cc.xenix ../bin/cc
chmod +x ../bin/cc
echo "code-generators and peephole optimizer need more stack than the default."
echo "adapting LDFLAGS in Makefiles"
for i in ../mach/*/*cg/Makefile
do
cp $i $i.orig
ed - $i <<ABC
/LDFLAGS/s/$/ -F 3000/
w
q
ABC
done
cp ../util/opt/Makefile ../util/opt/Makefile.orig
ed - ../util/opt/Makefile <<ABC
/LDFLAGS/s/$/-F 2000/
w
q
ABC
echo "target optimizers do not work on Xenix; disabling their use"
for i in ../lib/*/descr
do
if grep -s "name asopt" $i
then
cp $i $i.top
ed - $i <<ABC
/name asopt/;/^end/d
w
q
ABC
fi
done
echo "the -l option in cc command puts library in wrong place."
echo "this is a problem with the lex library for the occam compiler."
echo "changing Makefile for Occam compiler"
cp ../lang/occam/comp/Makefile ../lang/occam/comp/Makefile.orig
ed - ../lang/occam/comp/Makefile <<ABC
/LEXLIB/s.-l[a-z]*./lib/Slibl.a.
w
q
ABC
;;
esac esac
case X$BM in case X$BM in
X0) X0)
echo "set some installation pararmeters for small machines"
( cd ../lang/cem/cemcom ( cd ../lang/cem/cemcom
cp SmallPars Parameters cp SmallPars Parameters
cp makefile makefile.orig cp makefile makefile.orig
@ -288,7 +359,8 @@ q
ABC ABC
) )
;; ;;
*) ( cd ../lang/cem/cemcom *) ( echo "set some installation pararmeters for big machines"
cd ../lang/cem/cemcom
cp BigPars Parameters cp BigPars Parameters
cd ../../m2/comp cd ../../m2/comp
cp BigPars Parameters cp BigPars Parameters

View file

@ -7,14 +7,14 @@ X0)
TRY=`.Xlex` TRY=`.Xlex`
else TRY=-lln else TRY=-lln
fi fi
myecho "trying to find your lex library ..." echo "trying to find your lex library ..."
cat > x.l <<'EOF' cat > x.l <<'EOF'
%% %%
[A-Z] putchar(yytext[0]+'a'-'A'); [A-Z] putchar(yytext[0]+'a'-'A');
EOF EOF
if lex x.l > /dev/null 2>&1 && cc -c lex.yy.c > /dev/null 2>&1 if lex x.l > /dev/null 2>&1 && cc -c lex.yy.c > /dev/null 2>&1
then : then :
else myecho "Sorry, your lex does not seem to work" else echo "Sorry, your lex does not seem to work"
exit 2 exit 2
fi fi
cat > trylib <<'EOF' cat > trylib <<'EOF'
@ -43,12 +43,12 @@ EOF
;; ;;
esac esac
case X$FL in case X$FL in
Xfail) myecho 'What option do I have to give to cc to get the LEX library?' Xfail) echo 'What option do I have to give to cc to get the LEX library?'
myecho "I tried " $TRIES "but these don't seem to work." echo "I tried " $TRIES "but these don't seem to work."
myecho -n 'LEX library option: ' echo -n 'LEX library option: '
if read ANSWER if read ANSWER
then : then :
else myecho "Sorry, got EOF while reading your answer" else echo "Sorry, got EOF while reading your answer"
exit 9 exit 9
fi fi
exec $0 $ANSWER "$TRIES" exec $0 $ANSWER "$TRIES"