new installation mechanism

This commit is contained in:
ceriel 1991-09-05 16:35:56 +00:00
parent 4ceac64530
commit edaf2a01f4
14 changed files with 281 additions and 71 deletions

View file

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

32
mach/i386/ce/proto.make Normal file
View file

@ -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

View file

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

8
mach/m68020/ce/notes Normal file
View file

@ -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
mach/m68020/ce/proto.make Normal file
View file

@ -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

View file

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

View file

@ -1,18 +1,30 @@
EMHOME=../../.. CEG=$TARGET_HOME/lib.bin/ceg/util
CEG=../../../lib/ceg/util
case $# in case $# in
1) case $1 in 2) case $1 in
-as) MAKE=$CEG/make_asobj;OBJ=as;; -as) MAKE=$CEG/make_asobj;OBJ=as;;
-obj) MAKE=$CEG/make_asobj;OBJ=obj;; -obj) MAKE=$CEG/make_asobj;OBJ=obj;;
*) echo wrong option $1, use -as or -obj; *) echo wrong option $1, use -as or -obj;
exit 1;; exit 1;;
esac;; esac
SRC_DIR=$2
0) MAKE=$CEG/make_own;OBJ=obj ;; ;;
*) echo wrong number of arguments; 1) MAKE=$CEG/make_own;OBJ=obj;SRC_DIR=$1 ;;
*) echo Usage: $0 [-as|-obj] <source directory>
exit 1;; exit 1;;
esac 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

View file

@ -1,31 +1,41 @@
EM = ../../.. # $Header$
CEG = $(EM)/lib/ceg
#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 CE_MAKE = $(CEG)/util/make_ce
BACK_MAKE = $(CEG)/util/make_back 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: all
../../install ce.a cp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
../../install back.a $(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 cmp: all
-../../compare ce.a -cmp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
-../../compare back.a -cmp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
clean: clean:
rm -rf ce back ceg ce.a back.a Out rm -rf ce back ceg ce.$(LIBSUF) back.$(LIBSUF) Out
dclean: dclean:
rm -rf ce back ceg Out rm -rf ce back ceg Out
ce.a: ce.$(LIBSUF):
make -f $(CE_MAKE) make -f $(CE_MAKE) "SRC_DIR="$(SRC_DIR)
back.a: back.$(LIBSUF):
make -f $(BACK_MAKE) "OBJ="$(OBJ) make -f $(BACK_MAKE) "OBJ="$(OBJ) "SRC_DIR="$(SRC_DIR)
ceg/ceg: ceg/ceg:
make -f $(CEG_MAKE) make -f $(CEG_MAKE) "OBJ="$(OBJ) "SRC_DIR="$(SRC_DIR)

View file

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

View file

@ -1,30 +1,33 @@
EM = ../../../.. # $Header$
CEG = $(EM)/lib/ceg
#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 AS = $(CEG)/as_parser
DEF = $(CEG)/defaults DEF = $(CEG)/defaults
AR = ar IFILES = -I. -I$(SRC_DIR) -I$(AS) -I$(EM)/h -I$(EM)/modules/h -I../back -I$(SRC_HOME)/mach
CC = cc
IFILES = -I. -I.. -I$(AS) -I$(EM)/h -I$(EM)/modules/h -I../back -I$(EM)/mach CFLAGS = $(COPTIONS) $(IFILES)
CFLAGS = -O $(IFILES) .c.$(SUF):
.c.o:
cd ce ; $(CC) -c $(CFLAGS) ../$*.c ; cd .. cd ce ; $(CC) -c $(CFLAGS) ../$*.c ; cd ..
all: ce.a all: ce.$(LIBSUF)
ce.a: ce/dummy ce.$(LIBSUF): ce/dummy
$(AR) r ce.a ce/*.o $(AR) r ce.$(LIBSUF) ce/*.$(SUF)
-sh -c 'ranlib ce.a' $(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 .. 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 -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 ; ../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
util/ceg/util/make_ceg Normal file
View file

@ -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 ..

View file

@ -1,28 +1,37 @@
EM = ../../.. # $Header$
CEG = $(EM)/lib/ceg
#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 CE_MAKE = $(CEG)/util/make_ce
BACK_MAKE = $(CEG)/util/make_back 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: all
../../install ce.a cp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
../../install back.a $(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 cmp: all
-../../compare ce.a -cmp ce.$(LIBSUF) $(EM)/lib.bin/$(MACH)/ce.$(LIBSUF)
-../../compare back.a -cmp back.$(LIBSUF) $(EM)/lib.bin/$(MACH)/back.$(LIBSUF)
clean: clean:
rm -rf ce ceg ce.a Out rm -rf ce ceg ce.$(LIBSUF) Out
dclean: dclean:
rm -rf ce ceg Out rm -rf ce ceg Out
ce.a: ce.$(LIBSUF):
make -f $(CE_MAKE) make -f $(CE_MAKE) "SRC_DIR="$(SRC_DIR)
ceg/ceg: ceg/ceg:
make -f $(CEG_MAKE) make -f $(CEG_MAKE) "OBJ="obj "SRC_DIR="$(SRC_DIR)

30
util/ceg/util/proto.make Normal file
View file

@ -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

View file

@ -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 for i
do do
case $i in case $i in
ALL) make -f $MAKE ce.a ALL) make -f $MAKE SRC_DIR=$SRC_DIR ce.$LIBSUF
exit 0 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 ..` F=`basename $i ..`
U="_dnam" U="_dnam"
V="_dlb" 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) *) ( cd ce; $TARGET_HOME/lib.bin/cpp -P $SRC_DIR/EM_table | ../ceg/ceg -c $i)
make -f $MAKE ce/$i.o make -f $MAKE SRC_DIR=$SRC_DIR ce/$i.$SUF
;; ;;
esac esac
done done
touch ce/dummy touch ce/dummy
make -f $MAKE ce.a make -f $MAKE SRC_DIR=$SRC_DIR ce.$LIBSUF