ceriel 33 лет назад
Родитель
Сommit
edaf2a01f4

+ 1 - 1
mach/i386/ce/.distr

@@ -1,5 +1,5 @@
 EM_table
-Makefile
+proto.make
 as.c
 as.h
 as_table

+ 32 - 0
mach/i386/ce/proto.make

@@ -0,0 +1,32 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+SRC_DIR = $(SRC_HOME)/mach/i386/ce
+
+CEG = $(TARGET_HOME)/lib.bin/ceg/util
+OBJ = obj
+MACH = i386
+
+all:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH)
+
+install:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) install
+
+cmp:
+	-make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) cmp
+
+pr:
+	@pr $(SRC_DIR)/proto.make $(SRC_DIR)/EM_table $(SRC_DIR)/mach.h $(SRC_DIR)/mach.c $(SRC_DIR)/as_table $(SRC_DIR)/as.h $(SRC_DIR)/as.c
+
+opr:
+	make pr | opr
+
+# total cleanup
+clean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
+
+# only remove ce, ceg, and back directories
+dclean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean

+ 1 - 1
mach/m68020/ce/.distr

@@ -1,4 +1,4 @@
-Makefile
+proto.make
 as_table
 mach.c
 mach.h

+ 8 - 0
mach/m68020/ce/notes

@@ -0,0 +1,8 @@
+Helaas het framework kan niet tegen mnemonics met '.' erin, bijv.
+	add.l
+	move.w
+
+Oplossing:
+
+Alle punten door underscores vervangen in 'as_table' en process_menemonic()
+aangepast zodat ook de punten uit de 'EM_table' omgewzet worden in underscores.

+ 32 - 0
mach/m68020/ce/proto.make

@@ -0,0 +1,32 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+MACH = m68020
+OBJ = obj
+SRC_DIR = $(SRC_HOME)/mach/$(MACH)/ce
+
+CEG = $(TARGET_HOME)/lib.bin/ceg/util
+
+all:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH)
+
+install:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) install
+
+cmp:
+	-make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) cmp
+
+pr:
+	@pr $(SRC_DIR)/proto.make $(SRC_DIR)/EM_table $(SRC_DIR)/mach.h $(SRC_DIR)/mach.c $(SRC_DIR)/as_table $(SRC_DIR)/as.h $(SRC_DIR)/as.c
+
+opr:
+	make pr | opr
+
+# total cleanup
+clean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
+
+# only remove ce, ceg, and back directories
+dclean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean

+ 1 - 2
util/ceg/util/.distr

@@ -3,7 +3,6 @@ install_ceg
 make_asobj
 make_back
 make_ce
-make_ceg_as
-make_ceg_obj
+make_ceg
 make_own
 update_ceg

+ 19 - 7
util/ceg/util/install_ceg

@@ -1,18 +1,30 @@
-EMHOME=../../..
-CEG=../../../lib/ceg/util
+CEG=$TARGET_HOME/lib.bin/ceg/util
 
 case $# in
-  1) case $1 in
+  2) case $1 in
 	-as)	MAKE=$CEG/make_asobj;OBJ=as;;
 	-obj)	MAKE=$CEG/make_asobj;OBJ=obj;;
 	   *) echo wrong option $1, use -as or -obj;
      	      exit 1;;
-     esac;;
+     esac
+     SRC_DIR=$2
+     ;;
 
-  0) MAKE=$CEG/make_own;OBJ=obj ;;
 
+  1) MAKE=$CEG/make_own;OBJ=obj;SRC_DIR=$1 ;;
 
-  *) echo wrong number of arguments;
+
+  *) echo Usage: $0 [-as|-obj] <source directory>
      exit 1;;
 esac
-make -f $MAKE OBJ=$OBJ install
+
+case X$MACH in
+X)	MACH=`expr $SRC_DIR : '.*/mach/\(.*\)/ce*`
+	;;
+esac
+case X$MACH in
+	echo environment definition for MACH required
+	exit 1
+	;;
+esac
+make -f $MAKE OBJ=$OBJ MACH=$MACH SRC_DIR=$SRC_DIR install

+ 24 - 14
util/ceg/util/make_asobj

@@ -1,31 +1,41 @@
-EM	= ../../..
-CEG	= $(EM)/lib/ceg
+# $Header$
+
+#PARAMS		do not remove this line!
+
+#requires definition of MACH; possible redefinition of SRC_DIR
+
+EM = $(TARGET_HOME)
+CEG	= $(EM)/lib.bin/ceg
 CE_MAKE	= $(CEG)/util/make_ce
 BACK_MAKE = $(CEG)/util/make_back
-CEG_MAKE = $(CEG)/util/make_ceg_$(OBJ)
+CEG_MAKE = $(CEG)/util/make_ceg
+
+SRC_DIR = $(SRC_HOME)/mach/$(MACH)/ce
 
 
-all:	back.a ceg/ceg ce.a
+all:	back.$(LIBSUF) ceg/ceg ce.$(LIBSUF)
 
 install:	all
-	../../install ce.a
-	../../install back.a
+	cp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	$(RANLIB) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	cp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
+	$(RANLIB) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
 
 cmp:	all
-	-../../compare ce.a
-	-../../compare back.a
+	-cmp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	-cmp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
 
 clean:
-	rm -rf ce back ceg ce.a back.a Out
+	rm -rf ce back ceg ce.$(LIBSUF) back.$(LIBSUF) Out
 
 dclean:
 	rm -rf ce back ceg Out
 
-ce.a:
-	make -f $(CE_MAKE)
+ce.$(LIBSUF):
+	make -f $(CE_MAKE) "SRC_DIR="$(SRC_DIR)
 
-back.a:
-	make -f $(BACK_MAKE) "OBJ="$(OBJ)
+back.$(LIBSUF):
+	make -f $(BACK_MAKE) "OBJ="$(OBJ) "SRC_DIR="$(SRC_DIR)
 
 ceg/ceg:
-	make -f $(CEG_MAKE)
+	make -f $(CEG_MAKE) "OBJ="$(OBJ) "SRC_DIR="$(SRC_DIR)

+ 14 - 8
util/ceg/util/make_back

@@ -1,13 +1,19 @@
-EM	= ../../../..
-CEG	= $(EM)/lib/ceg
-BACK	= $(CEG)/ce_back/$(OBJ)_back
+# $Header$
+
+#PARAMS		do not remove this line!
 
-AR	= ar
+# requires definitions for OBJ and SRC_DIR; not to be called directly
 
-all:	back.a
+CEG	= $(TARGET_HOME)/lib.bin/ceg
+BACK	= $(CEG)/ce_back/$(OBJ)_back
 
-back.a:	mach.h
+all:	back.$(LIBSUF)
+
+back.$(LIBSUF):	mach.h
 	-mkdir back
 	cd back;cp $(BACK)/*h . ; cp $(BACK)/Makefile . ; make ; cd ..
-	$(AR) r back.a back/*o
-	-sh -c 'ranlib back.a'
+	$(AR) r back.$(LIBSUF) back/*.$(SUF)
+	$(RANLIB) back.$(LIBSUF)
+
+mach.h:	$(SRC_DIR)/mach.h
+	cp $(SRC_DIR)/mach.h .

+ 19 - 16
util/ceg/util/make_ce

@@ -1,30 +1,33 @@
-EM = ../../../..
-CEG = $(EM)/lib/ceg
+# $Header$
+
+#PARAMS		do not remove this line!
+
+#requires a definition for SRC_DIR; not to be called directly.
+
+EM = $(TARGET_HOME)
+CEG = $(EM)/lib.bin/ceg
 
 AS   = $(CEG)/as_parser
 DEF = $(CEG)/defaults
 
-AR = ar
-CC = cc
-
-IFILES	= -I. -I.. -I$(AS) -I$(EM)/h -I$(EM)/modules/h -I../back -I$(EM)/mach
+IFILES	= -I. -I$(SRC_DIR) -I$(AS) -I$(EM)/h -I$(EM)/modules/h -I../back -I$(SRC_HOME)/mach
 
-CFLAGS = -O $(IFILES)
+CFLAGS = $(COPTIONS) $(IFILES)
 
-.c.o:
+.c.$(SUF):
 	cd ce ; $(CC) -c $(CFLAGS) ../$*.c ; cd ..
 
-all:	ce.a
+all:	ce.$(LIBSUF)
 
-ce.a:	ce/dummy
-	$(AR) r ce.a ce/*.o
-	-sh -c 'ranlib ce.a'
+ce.$(LIBSUF):	ce/dummy
+	$(AR) r ce.$(LIBSUF) ce/*.$(SUF)
+	$(RANLIB) ce.$(LIBSUF)
 
-ce/dummy:	ce/dummy1 mach.h back.a
+ce/dummy:	ce/dummy1 back.$(LIBSUF)
 	cd ce ; $(CC) -c $(CFLAGS) *.c ; touch dummy ; cd ..
 
-ce/dummy1:	ceg/ceg EM_table
+ce/dummy1:	ceg/ceg $(SRC_DIR)/EM_table $(SRC_DIR)/mach.c
 	-mkdir ce
-	-ln mach.c ce/mach.c
+	-cp $(SRC_DIR)/mach.c ce/mach.c
 	cd ce ; ../ceg/ceg -l < $(DEF)/not_impl/not_impl_table ; cp $(DEF)/*.c . ; cp $(DEF)/*/*.c . ; cd ..
-	cd ce ; $(EM)/lib/cpp -P ../EM_table | ../ceg/ceg -l ; touch dummy1 ; cd ..
+	cd ce ; $(EM)/lib.bin/cpp -P $(SRC_DIR)/EM_table | ../ceg/ceg -l ; touch dummy1 ; cd ..

+ 54 - 0
util/ceg/util/make_ceg

@@ -0,0 +1,54 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+#requires definitions for OBJ and SRC_DIR; not to be called directly
+
+CEG = $(TARGET_HOME)/lib.bin/ceg
+
+Em   = $(CEG)/EM_parser/$(OBJ)_EM_pars
+ASMAIN = $(CEG)/assemble/$(OBJ)_assemble
+AS   = $(CEG)/as_parser
+EVAL = $(CEG)/as_parser/eval
+DEF = $(CEG)/defaults
+
+IFILES	= -I. -I$(SRC_DIR) -I$(AS) -I$(Em) -I$(TARGET_HOME)/h -I$(TARGET_HOME)/modules/h -I../back
+
+CFLAGS = $(COPTIONS) $(IFILES)
+LDFLAGS = $(LDOPTIONS)
+
+CEG_LIBS = $(TARGET_HOME)/modules/lib/liballoc.$(LIBSUF)\
+	   $(TARGET_HOME)/modules/lib/libprint.$(LIBSUF)\
+	   $(TARGET_HOME)/modules/lib/libstring.$(LIBSUF)\
+	   $(TARGET_HOME)/modules/lib/libsystem.$(LIBSUF)
+
+all:	ceg/ceg
+
+obj_list:	ceg/as_lib.$(LIBSUF) ceg/as_instr.$(SUF) ceg/eval_as.$(SUF)
+		echo 'ceg/as_lib.$(LIBSUF) ceg/as_instr.$(SUF) ceg/eval_as.$(SUF)' > list
+
+as_list:	ceg/as_lib.$(LIBSUF)
+		echo 'ceg/as_lib.$(LIBSUF)' > list
+
+list:		$(OBJ)_list
+
+ceg/ceg:	list
+		$(CC) $(LDFLAGS) -o ceg/ceg $(Em)/*.$(SUF) `cat list` $(CEG_LIBS)
+
+ceg/as_lib.$(LIBSUF):
+	-mkdir ceg
+	cd ceg ; cp $(CEG)/util/make_ceg_$(OBJ) Makefile ; cd ..
+	cd ceg ; cp $(ASMAIN)/* . ; $(CC) -c $(CFLAGS) *.c; $(AR) r as_lib.$(LIBSUF) *.$(SUF) ; cd ..
+	$(RANLIB) ceg/as_lib.$(LIBSUF)
+
+ceg/eval_as.$(SUF) : ceg/eval_as.c $(SRC_DIR)/as.h # $(AS)/as_parser.h $(Em)/arg_type.h
+	cd ceg ; $(CC) -c $(CFLAGS) eval_as.c ; cd ..
+
+ceg/eval_as.c : $(SRC_DIR)/as.c # $(EVAL)/eval
+	cd ceg ; $(EVAL)/eval < $(SRC_DIR)/as.c > eval_as.c ; cd ..
+
+ceg/as_instr.$(SUF) : $(SRC_DIR)/as.h ceg/as_lib.$(LIBSUF) ceg/as_instr.c
+	cd ceg ; $(CC) -c $(CFLAGS) as_instr.c ; cd ..
+
+ceg/as_instr.c : $(SRC_DIR)/as_table # $(AS)/as_parser
+	cd ceg ; $(TARGET_HOME)/lib.bin/cpp -P $(SRC_DIR)/as_table | $(AS)/as_parser > as_instr.c ; cd ..

+ 21 - 12
util/ceg/util/make_own

@@ -1,28 +1,37 @@
-EM	= ../../..
-CEG	= $(EM)/lib/ceg
+# $Header$
+
+#PARAMS		do not remove this line!
+
+#requires definition of MACH; possible redefinition of SRC_DIR
+
+EM	= $(TARGET_HOME)
+CEG	= $(EM)/lib.bin/ceg
 CE_MAKE	= $(CEG)/util/make_ce
 BACK_MAKE = $(CEG)/util/make_back
-CEG_MAKE = $(CEG)/util/make_ceg_obj
+CEG_MAKE = $(CEG)/util/make_ceg
 
+SRC_DIR = $(SRC_HOME)/mach/$(MACH)/ce
 
-all:	ceg/ceg ce.a
+all:	ceg/ceg ce.$(LIBSUF)
 
 install:	all
-	../../install ce.a
-	../../install back.a
+	cp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	$(RANLIB) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	cp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
+	$(RANLIB) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
 
 cmp:	all
-	-../../compare ce.a
-	-../../compare back.a
+	-cmp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
+	-cmp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
 
 clean:
-	rm -rf ce ceg ce.a Out
+	rm -rf ce ceg ce.$(LIBSUF) Out
 
 dclean:
 	rm -rf ce ceg Out
 
-ce.a:
-	make -f $(CE_MAKE)
+ce.$(LIBSUF):
+	make -f $(CE_MAKE) "SRC_DIR="$(SRC_DIR)
 
 ceg/ceg:
-	make -f $(CEG_MAKE)
+	make -f $(CEG_MAKE) "OBJ="obj "SRC_DIR="$(SRC_DIR)

+ 30 - 0
util/ceg/util/proto.make

@@ -0,0 +1,30 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+SRC_DIR = $(SRC_HOME)/util/ceg/util
+CEGLIB = $(TARGET_HOME)/lib.bin/ceg
+UTIL = $(CEGLIB)/util
+UtilList = make_asobj make_own make_back make_ce make_ceg
+
+all:
+
+install:
+	-mkdir $(CEGLIB)
+	-mkdir $(UTIL)
+	for i in $(UtilList) ; do cp $$i $(UTIL)/$$i ; done
+	{ echo TARGET_HOME=$(TARGET_HOME); cat $(SRC_DIR)/install_ceg } > $(TARGET_HOME)/bin/install_ceg
+	chmod +x $(TARGET_HOME)/bin/install_ceg
+	{ echo TARGET_HOME=$(TARGET_HOME); echo SUF=$(SUF); echo LIBSUF=$(LIBSUF); cat $(SRC_DIR)/update_ceg } > $(TARGET_HOME)/bin/update_ceg
+	chmod +x $(TARGET_HOME)/bin/update_ceg
+
+cmp:
+	-for i in $(UtilList) ; do cmp $$i $(UTIL)/$$i ; done
+
+clean:
+
+pr:
+	@for i in $(UtilList) ; do pr $(SRC_DIR)/$$i ; done
+
+opr:
+	make pr | opr

+ 24 - 9
util/ceg/util/update_ceg

@@ -1,28 +1,43 @@
-MAKE=../../../lib/ceg/util/make_ce
+CEG=$TARGET_HOME/lib.bin/ceg
+MAKE=$CEG/util/make_ce
 
-make -f ceg/Makefile
+case $# in
+  2) case $1 in
+	-as)    OBJ=as;;
+	-obj)   OBJ=obj;;
+	*) echo wrong option $1, use -as or -obj;
+	   exit 1;;
+     esac
+     SRC_DIR=$2
+     ;;
+  1) SRC_DIR=$1;OBJ=obj ;;
+  *) echo Usage: $0 [-as|-obj] <source directory>
+     ;;
+esac
+
+make -f ceg/Makefile SRC_DIR=$SRC_DIR OBJ=$OBJ
 
 for i
 do
 	case $i in
-	  ALL) make -f $MAKE ce.a
+	  ALL) make -f $MAKE SRC_DIR=$SRC_DIR ce.$LIBSUF
 	       exit 0
 	       ;;
 
-	  *.o) make -f $MAKE ce/$i
+	  *.$SUF) make -f $MAKE SRC_DIR=$SRC_DIR ce/$i
 	       ;;
 
-	  *..) ( cd ce; ../../../../lib/cpp -P ../EM_table |  ../ceg/ceg -c $i)
+	  *..) ( cd ce; $TARGET_HOME/lib.bin/cpp -P $SRC_DIR/EM_table |  ../ceg/ceg -c $i)
 	       F=`basename $i ..`
 	       U="_dnam"
 	       V="_dlb"
-	       make -f $MAKE ce/$F.o ce/$F$U.o ce/"$F$V.o"
+	       make -f $MAKE SRC_DIR=$SRC_DIR ce/$F.$SUF ce/$F$U.$SUF ce/$F$V.$SUF
 	       ;;
 
-	    *) ( cd ce; ../../../../lib/cpp -P ../EM_table | ../ceg/ceg -c $i)
-	       make -f $MAKE ce/$i.o
+	    *) ( cd ce; $TARGET_HOME/lib.bin/cpp -P $SRC_DIR/EM_table | ../ceg/ceg -c $i)
+	       make -f $MAKE SRC_DIR=$SRC_DIR ce/$i.$SUF
 	       ;;
 	esac
 done
 touch ce/dummy
-make -f $MAKE ce.a
+make -f $MAKE SRC_DIR=$SRC_DIR ce.$LIBSUF