From 44ce14010395cf52f32316ae7b30392e49e5664f Mon Sep 17 00:00:00 2001 From: ceriel Date: Fri, 22 Jul 1988 19:34:07 +0000 Subject: [PATCH] Made to work under Microsoft Xenix V3.2 --- first/.distr | 1 + first/cc.xenix.src | 70 ++++++++++++++++++++++++++++ first/ckpath | 15 ++++++ first/first | 112 +++++++++++++++++++++++++++++++++++++-------- first/fixlexlib | 12 ++--- 5 files changed, 184 insertions(+), 26 deletions(-) create mode 100644 first/cc.xenix.src diff --git a/first/.distr b/first/.distr index 9325d2af3..dae412de4 100644 --- a/first/.distr +++ b/first/.distr @@ -4,3 +4,4 @@ first did_first myecho.c fixlexlib +cc.xenix diff --git a/first/cc.xenix.src b/first/cc.xenix.src new file mode 100644 index 000000000..b178c0812 --- /dev/null +++ b/first/cc.xenix.src @@ -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 diff --git a/first/ckpath b/first/ckpath index 2809601d6..57eb47235 100644 --- a/first/ckpath +++ b/first/ckpath @@ -1,4 +1,5 @@ rm -f ../bin/x_tpath x_tpath +echo 'Checking out your $PATH; . and $ACK/bin should be in front ...' echo "echo $$" >../bin/x_tpath rm -f x_tpath chmod +x ../bin/x_tpath @@ -49,4 +50,18 @@ x$$) STAT=4 ;; esac 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 diff --git a/first/first b/first/first index 14b3a1f13..5fafe4fb7 100755 --- a/first/first +++ b/first/first @@ -10,11 +10,12 @@ first) esac : check $PATH first if sh ckpath -then : +then + echo "PATH is ok" else exit 1 fi -: check write-ability of /tmp and /usr/tmp +echo check write-ability of /tmp and /usr/tmp ... if ( >/usr/tmp/aaax.$$ ) then rm /usr/tmp/aaax.$$ @@ -29,29 +30,33 @@ else echo /tmp must exist and be writable. exit 2 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 -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 then : Don't touch ../h/em_path.h, it's already correct + echo "../h/em_path.h already correct" else rm -f ../h/em_path.h if mv em_path.h ../h >/dev/null 2>&1 - then : success + then echo "../h/em_path.h replaced" else echo "Sorry, can't replace ../h/em_path.h" exit 7 fi fi -: translate myecho -if cc -o myecho myecho.c > /dev/null 2>&1 +echo compile own echo program, so that we know how it works ... +if cc -o echo myecho.c > /dev/null 2>&1 then - : + echo compilation succeeded else echo "Sorry, cc does not seem to work" exit 8 fi +cp echo ../bin/echo : find cc option for lex library if fixlexlib then @@ -64,7 +69,7 @@ if (ack_sys) >/dev/null 2>&1 then : echo Your system is: `ack_sys`. 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) vax_bsd4_1a VAX11 with BSD4.1a vax_bsd4_2 VAX11 with BSD4.2 @@ -93,7 +98,7 @@ system type: " exit 10 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 then case $YESNO in @@ -113,17 +118,12 @@ fi : "Take action according to the system used" : 'Prevent the use of the system assembler on for certain systems' : 'prevent the use of ranlib on pdp 11s' +echo "take some actions according to system used ..." case `ack_sys` in pdp_*) RMD="vax4" + echo "disabling use of ranlib; cannot trust its result" echo 'echo "no ranlib on this system"; exit 93' > ../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*) ;; *) RMD="vax4" ;; @@ -131,6 +131,7 @@ esac for i in $RMD do ( cd ../lib/$i + echo "disabling use of local assembler and loader for $i" if grep '^name as$' descr >/dev/null 2>&1 then cp descr descr.orig @@ -163,7 +164,7 @@ ABC ) ;; esac -: 'Set the default machine in ../h/local.h' +echo 'Setting the default machine in ../h/local.h ...' BM=1 case `ack_sys` in pdp_v7) ACM=pdp ; BM=0 ; SYS=V7 ;; @@ -183,9 +184,11 @@ esac 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 if cmp -s ../h/local.h local.h -then : +then + echo "../h/local.h already correct" else cp local.h ../h + echo "../h/local.h updated" rm -f local.h fi echo "Your default machine to compile for is $ACM" @@ -214,9 +217,77 @@ vax_sysV_2) 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 < x.l <<'EOF' %% [A-Z] putchar(yytext[0]+'a'-'A'); EOF if lex x.l > /dev/null 2>&1 && cc -c lex.yy.c > /dev/null 2>&1 then : - else myecho "Sorry, your lex does not seem to work" + else echo "Sorry, your lex does not seem to work" exit 2 fi cat > trylib <<'EOF' @@ -43,12 +43,12 @@ EOF ;; esac case X$FL in -Xfail) myecho '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." - myecho -n 'LEX library option: ' +Xfail) echo 'What option do I have to give to cc to get the LEX library?' + echo "I tried " $TRIES "but these don't seem to work." + echo -n 'LEX library option: ' if read ANSWER then : - else myecho "Sorry, got EOF while reading your answer" + else echo "Sorry, got EOF while reading your answer" exit 9 fi exec $0 $ANSWER "$TRIES"