Kaynağa Gözat

Added mechanism for generating fast compilers

ceriel 35 yıl önce
ebeveyn
işleme
8bca388927
2 değiştirilmiş dosya ile 53 ekleme ve 28 silme
  1. 47 22
      lang/pc/comp/Makefile
  2. 6 6
      lang/pc/comp/Resolve

+ 47 - 22
lang/pc/comp/Makefile

@@ -4,30 +4,57 @@ MDIR =		$(EMHOME)/modules
 MHDIR =		$(MDIR)/h
 PKGDIR =	$(MDIR)/pkg
 LIBDIR =	$(MDIR)/lib
-OBJECTCODE =	$(LIBDIR)/libemk.a
 LLGEN =		$(EMHOME)/bin/LLgen
 MKDEP =		$(EMHOME)/bin/mkdep
 PRID =		$(EMHOME)/bin/prid
 CID =		$(EMHOME)/bin/cid
+OPR =		opr
 CURRDIR =
 CC =		fcc
 CC =		cc
-PRINTER =	vu45
 LINT =		lint
-
-INCLUDES = -I$(MHDIR) -I$(EMHOME)/h -I$(PKGDIR)
-
-OLIBS = $(LIBDIR)/libem_mes.a $(OBJECTCODE) $(LIBDIR)/libinput.a $(LIBDIR)/libassert.a $(LIBDIR)/liballoc.a $(MALLOC) $(LIBDIR)/libprint.a $(LIBDIR)/libstring.a $(LIBDIR)/libsystem.a
+MACH =		sun3
+
+MALLOC =	$(LIBDIR)/malloc.o
+EMELIB =	$(LIBDIR)/libem_mes.a \
+		$(LIBDIR)/libeme.a \
+		$(EMHOME)/lib/em_data.a
+EMKLIB =	$(LIBDIR)/libem_mes.a $(LIBDIR)/libemk.a
+MODLIB =	$(LIBDIR)/libinput.a \
+		$(LIBDIR)/libassert.a \
+		$(LIBDIR)/liballoc.a \
+		$(MALLOC) \
+		$(LIBDIR)/libprint.a \
+		$(LIBDIR)/libstring.a \
+		$(LIBDIR)/libsystem.a
+EMCELIB =	$(LIBDIR)/libem_mesCE.a \
+		$(EMHOME)/lib/$(MACH)/ce.a \
+		$(EMHOME)/lib/$(MACH)/back.a \
+		$(LIBDIR)/libflt.a \
+		$(LIBDIR)/libobject.a \
+		$(EMHOME)/lib/em_data.a
+EMOCELIB =	$(LIBDIR)/libem_mesO.a \
+		$(LIBDIR)/libCEopt.a \
+		$(EMHOME)/lib/$(MACH)/ce.a \
+		$(EMHOME)/lib/$(MACH)/back.a \
+		$(LIBDIR)/libflt.a \
+		$(LIBDIR)/libobject.a \
+		$(EMHOME)/lib/em_data.a
+
+LIBS =		$(EMKLIB) $(MODLIB)
+CELIBS =	$(EMCELIB) $(MODLIB)
+OLIBS =		$(EMOCELIB) $(MODLIB)
 
 GFILES =	tokenfile.g declar.g expression.g program.g statement.g
 LLGENOPTIONS =
 PROFILE =
 COPTIONS =
-OPTIM=	-O
-CFLAGS = $(PROFILE) $(INCLUDES) $(OPTIM) $(COPTIONS) -DSTATIC=
-LINTFLAGS = -DSTATIC= -DNORCSID
-MALLOC = $(LIBDIR)/malloc.o
-LDFLAGS = -i $(PROFILE)
+INCLUDES =	-I$(MHDIR) -I$(EMHOME)/h -I$(PKGDIR)
+OPTIM=		-O
+CFLAGS =	$(PROFILE) $(INCLUDES) $(OPTIM) $(COPTIONS) -DSTATIC=
+LINTFLAGS =	-DSTATIC= -DNORCSID
+LDFLAGS =	-i $(PROFILE)
+
 LSRC =	declar.c expression.c program.c statement.c tokenfile.c
 LOBJ =	declar.o expression.o program.o statement.o tokenfile.o
 CSRC =	LLlex.c LLmessage.c body.c chk_expr.c code.c\
@@ -62,15 +89,13 @@ all:	Cfiles
 
 Omain:	Cfiles
 	rm -f *.o
-	sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) "COPTIONS="-DPEEPHOLE $(CURRDIR)omain ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve omain ; fi'
+	sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "MACH="$(MACH) "EMHOME="$(EMHOME) "COPTIONS="-DPEEPHOLE $(CURRDIR)omain ; else MACH=$(MACH); export MACH; EMHOME=$(EMHOME); export EMHOME; ./Resolve omain ; fi'
 	@rm -f nmclash.o a.out
-	mv *.o PEEPHOLE
 
 CEmain: Cfiles
 	rm -f *.o
-	sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "EMHOME="$(EMHOME) "COPTIONS="-DCODE_EXPANDER $(CURRDIR)cemain ; else EMHOME=$(EMHOME); export EMHOME; ./Resolve cemain ; fi'
+	sh -c 'if $(CC) nmclash.c > /dev/null 2>&1 ; then make "MACH="$(MACH) "EMHOME="$(EMHOME) "COPTIONS="-DCODE_EXPANDER $(CURRDIR)cemain ; else MACH=$(MACH); export MACH; EMHOME=$(EMHOME); export EMHOME; ./Resolve cemain ; fi'
 	@rm -f nmclash.o a.out
-	mv *.o CODE_EXPANDER
 
 install:	all
 	cp $(CURRDIR)main $(EMHOME)/lib/em_pc
@@ -79,7 +104,7 @@ cmp:	all
 	-cmp $(CURRDIR)main $(EMHOME)/lib/em_pc
 
 opr:
-	make pr | opr
+	make pr | $(OPR)
 
 pr:
 	@pr Makefile Resolve Parameters $(GFILES) *.H $(HFILES) *.C $(CSRC)
@@ -146,7 +171,7 @@ depend: Cfiles
 	mv Makefile.new Makefile
 
 print:	$(CSRC) $(GFILES) $(HFILES)	# print recently changed files
-	pr -t $? | rpr $(PRINTER)
+	pr -t $? | $(OPR)
 	@touch print
 
 xref:
@@ -167,17 +192,17 @@ Xlint:
 
 $(CURRDIR)main: $(OBJ) $(CURRDIR)Makefile
 	-mv $(CURRDIR)main $(CURRDIR)main.old
-	$(CC) $(LDFLAGS) $(OBJ) $(OLIBS) -o $(CURRDIR)main
+	$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $(CURRDIR)main
 	-size $(CURRDIR)main.old
 	size $(CURRDIR)main
 
 $(CURRDIR)omain:	$(OBJ) #$(CURRDIR)Makefile
-#	#$(CC) $(LDFLAGS) $(OBJ) $(OLIBS) -o $(CURRDIR)omain
-#	#size $(CURRDIR)omain
+	$(CC) $(LDFLAGS) $(OBJ) $(OLIBS) -o $(CURRDIR)omain
+	-size $(CURRDIR)omain
 
 $(CURRDIR)cemain:      $(OBJ) #$(CURRDIR)Makefile
-#	#$(CC) $(LDFLAGS) $(OBJ) $(OLIBS) -o $(CURRDIR)cemain
-#	# #size $(CURRDIR)cemain
+	$(CC) $(LDFLAGS) $(OBJ) $(CELIBS) -o $(CURRDIR)cemain
+	-size $(CURRDIR)cemain
 
 #AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
 LLlex.o: LLlex.h

+ 6 - 6
lang/pc/comp/Resolve

@@ -1,5 +1,6 @@
 : create a directory Xsrc with name clashes resolved
 : and run make in that directory
+: '$Header$'
 
 case $# in
 1)	
@@ -8,14 +9,14 @@ case $# in
 	exit 1
 	;;
 esac
-currdir=`pwd`
+PW=`pwd`
 case $1 in
-main)	target=$currdir/$1
+main)	target=$PW/$1
 	;;
-omain)	target=$currdir/$1
+omain)	target=$PW/$1
 	options=-DPEEPHOLE
 	;;
-cemain)	target=$currdir/$1
+cemain)	target=$PW/$1
 	options=-DCODE_EXPANDER
 	;;
 Xlint)	target=$1
@@ -35,7 +36,6 @@ make EMHOME=$EMHOME longnames
 sed '/^C_/d' < longnames > tmp$$
 cclash -c -l7 tmp$$ > ../Xsrc/Xclashes
 rm -f tmp$$
-PW=`pwd`
 cd ../Xsrc
 if cmp -s Xclashes clashes
 then
@@ -57,4 +57,4 @@ $i:	clashes $PW/$i
 	\$(CID) -Fclashes < $PW/$i > $i
 EOF
 done
-make EMHOME=$EMHOME CURRDIR=$currdir/ COPTIONS=$options $target
+make EMHOME=$EMHOME COPTIONS=$options MACH=$MACH CURRDIR=$PW/ $target