Sfoglia il codice sorgente

Added mechanism for generating fast compilers

ceriel 35 anni fa
parent
commit
08ad999f07
2 ha cambiato i file con 59 aggiunte e 35 eliminazioni
  1. 53 29
      lang/m2/comp/Makefile
  2. 6 6
      lang/m2/comp/Resolve

+ 53 - 29
lang/m2/comp/Makefile

@@ -4,28 +4,54 @@ 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
 CURRDIR =
 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
-
-GF =	program.g declar.g expression.g statement.g
+MACH =		sun3
+
+MALLOC =	$(LIBDIR)/malloc.o
+EMELIB =	$(LIBDIR)/libem_mes.a $(LIBDIR)/libeme.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)
+
+GF =		program.g declar.g expression.g statement.g
 GENGFILES=	tokenfile.g
-GFILES =$(GENGFILES) $(GF)
-LLGENOPTIONS = -v
+GFILES =	$(GENGFILES) $(GF)
+LLGENOPTIONS = 	-v
 PROFILE =
-COPTIONS=
-OPTIM=-O
-CFLAGS = $(PROFILE) $(INCLUDES) $(COPTIONS) $(OPTIM) -DSTATIC=
-LINTFLAGS = -DSTATIC= -DNORCSID
-MALLOC = $(LIBDIR)/malloc.o
-LDFLAGS = -i $(PROFILE)
+COPTIONS =
+INCLUDES =	-I$(MHDIR) -I$(EMHOME)/h -I$(PKGDIR)
+OPTIM =		-O
+CFLAGS =	$(PROFILE) $(INCLUDES) $(COPTIONS) $(OPTIM) -DSTATIC=
+LINTFLAGS =	-DSTATIC= -DNORCSID
+LDFLAGS =	-i $(PROFILE)
+
 LSRC =	tokenfile.c program.c declar.c expression.c statement.c
 LOBJ =	tokenfile.o program.o declar.o expression.o statement.o
 CSRC =	LLlex.c LLmessage.c error.c main.c \
@@ -42,17 +68,17 @@ GENC=	$(LSRC) symbol2str.c char.c Lpars.c casestat.c tmpvar.c scope.c next.c
 SRC =	$(CSRC) $(GENC)
 OBJ =	$(COBJ) $(LOBJ) Lpars.o
 
-GENH=	errout.h\
+GENH =	errout.h \
 	idfsize.h numsize.h strsize.h target_sizes.h bigparam.h bigresult.h \
 	inputtype.h density.h squeeze.h nocross.h nostrict.h \
 	def.h debugcst.h type.h Lpars.h node.h desig.h strict3rd.h
-HFILES=		LLlex.h\
-	chk_expr.h class.h const.h debug.h f_info.h idf.h\
-	input.h main.h misc.h scope.h standards.h tokenname.h\
+HFILES =LLlex.h \
+	chk_expr.h class.h const.h debug.h f_info.h idf.h \
+	input.h main.h misc.h scope.h standards.h tokenname.h \
 	walk.h warning.h SYSTEM.h $(GENH)
 #
-GENFILES = $(GENGFILES) $(GENC) $(GENH)
-NEXTFILES = def.H type.H node.H desig.H scope.C tmpvar.C casestat.C
+GENFILES =	$(GENGFILES) $(GENC) $(GENH)
+NEXTFILES =	def.H type.H node.H desig.H scope.C tmpvar.C casestat.C
 
 #EXCLEXCLEXCLEXCL
 
@@ -62,15 +88,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_m2
@@ -163,16 +187,16 @@ Xlint:
 		$(LIBDIR)/llib-lsystem.ln
 
 $(CURRDIR)main:	$(OBJ) $(CURRDIR)Makefile
-	$(CC) $(LDFLAGS) $(OBJ) $(OLIBS) -o $(CURRDIR)main
+	$(CC) $(LDFLAGS) $(OBJ) $(LIBS) -o $(CURRDIR)main
 	-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

+ 6 - 6
lang/m2/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