Made to work under Microsoft Xenix V3.2
This commit is contained in:
		
							parent
							
								
									a0a265736c
								
							
						
					
					
						commit
						44ce140103
					
				
					 5 changed files with 184 additions and 26 deletions
				
			
		|  | @ -4,3 +4,4 @@ first | ||||||
| did_first | did_first | ||||||
| myecho.c | myecho.c | ||||||
| fixlexlib | fixlexlib | ||||||
|  | cc.xenix | ||||||
|  |  | ||||||
							
								
								
									
										70
									
								
								first/cc.xenix.src
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								first/cc.xenix.src
									
										
									
									
									
										Normal 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 | ||||||
							
								
								
									
										15
									
								
								first/ckpath
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								first/ckpath
									
										
									
									
									
								
							|  | @ -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 | ||||||
|  |  | ||||||
							
								
								
									
										112
									
								
								first/first
									
										
									
									
									
								
							
							
						
						
									
										112
									
								
								first/first
									
										
									
									
									
								
							|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue