252 lines
10 KiB
Makefile
252 lines
10 KiB
Makefile
# $Header$
|
|
# M A K E F I L E F O R A C K C - C O M P I L E R
|
|
|
|
# Machine and environ dependent definitions
|
|
EM = /user1/erikb/em# # ACK tree on this machine
|
|
DESTINATION = /user1/$$USER/bin# # where to put the stuff
|
|
MKDEP = /user1/erikb/bin/mkdep# # dependency generator
|
|
MAP =
|
|
#MAP = -DInsertFile=ins_file -DInsertText=ins_text# # bug in m68k2 back end
|
|
SIM = /user1/dick/bin/sim# # Dicks sim program
|
|
LINT = /usr/new/lint
|
|
|
|
# Libraries and EM interface definitions
|
|
SYSLIB = $(EM)/modules/lib/libsystem.a
|
|
EMKLIB = $(EM)/modules/lib/libemk.a
|
|
EMELIB = $(EM)/modules/lib/libeme.a
|
|
STRLIB = $(EM)/modules/lib/libstr.a
|
|
PRTLIB = $(EM)/modules/lib/libprint.a
|
|
EMMESLIB = $(EM)/modules/lib/libem_mes.a
|
|
CH3LIB = $(EM)/modules/lib/libch3.a
|
|
LIBS = $(CH3LIB) $(EMMESLIB) $(EMKLIB) $(PRTLIB) $(STRLIB) $(SYSLIB)
|
|
ELIBS = $(CH3LIB) $(EMMESLIB) $(EMELIB) $(PRTLIB) $(STRLIB) $(SYSLIB)
|
|
LIB_INCLUDES = $(EM)/modules/h
|
|
EM_INCLUDES = $(EM)/h
|
|
SYSLLIB = $(EM)/modules/lib/llib-lsys.ln
|
|
EMKLLIB = $(EM)/modules/lib/llib-lemk.ln
|
|
EMELLIB = $(EM)/modules/lib/llib-leme.ln
|
|
STRLLIB = $(EM)/modules/lib/llib-lstr.ln
|
|
PRTLLIB = $(EM)/modules/lib/llib-lprint.ln
|
|
EMMESLLIB = $(EM)/modules/lib/llib-lmes.ln
|
|
CH3LLIB = $(EM)/modules/lib/llib-lch3.ln
|
|
LINTLIBS =
|
|
#LINTLIBS = $(CH3LLIB) $(EMMESLLIB) $(EMKLLIB) $(PRTLLIB) $(STRLLIB) $(SYSLLIB)
|
|
|
|
# Where to install the compiler and its driver
|
|
CEMCOM = $(DESTINATION)/cemcom
|
|
DRIVER = $(DESTINATION)/cem
|
|
|
|
# What C compiler to use and how
|
|
# CC = $(ACK) -.c
|
|
# CC = CC
|
|
# CC = /bin/cc
|
|
COPTIONS =
|
|
|
|
# What parser generator to use and how
|
|
GEN = $(EM)/bin/LLgen
|
|
GENOPTIONS = -vv
|
|
|
|
# Special #defines during compilation
|
|
CDEFS = $(MAP) -I$(EM_INCLUDES) -I$(LIB_INCLUDES)
|
|
CFLAGS = $(CDEFS) $(COPTIONS) -O# # we cannot pass the COPTIONS to lint!
|
|
|
|
# Grammar files and their objects
|
|
LSRC = tokenfile.g declar.g statement.g expression.g program.g
|
|
LOBJ = tokenfile.o declar.o statement.o expression.o program.o Lpars.o
|
|
|
|
# Objects of hand-written C files
|
|
COBJ = main.o idf.o declarator.o decspecs.o struct.o \
|
|
expr.o ch7.o ch7bin.o cstoper.o arith.o \
|
|
alloc.o asm.o code.o dumpidf.o error.o field.o\
|
|
tokenname.o LLlex.o LLmessage.o \
|
|
input.o domacro.o replace.o init.o options.o \
|
|
scan.o skip.o stack.o type.o ch7mon.o label.o eval.o \
|
|
switch.o storage.o ival.o conversion.o \
|
|
blocks.o dataflow.o
|
|
|
|
# Objects of other generated C files
|
|
GOBJ = char.o symbol2str.o next.o
|
|
|
|
# generated source files
|
|
GSRC = char.c symbol2str.c next.c \
|
|
code.h declar.h decspecs.h def.h expr.h field.h \
|
|
idf.h macro.h stack.h stmt.h struct.h switch.h type.h
|
|
|
|
# .h files generated by `make hfiles'; PLEASE KEEP THIS UP-TO-DATE!
|
|
GHSRC = botch_free.h dataflow.h debug.h density.h errout.h \
|
|
idepth.h idfsize.h ifdepth.h inputtype.h inumlength.h lapbuf.h \
|
|
maxincl.h myalloc.h nobitfield.h nopp.h \
|
|
nparams.h numsize.h parbufsize.h pathlength.h predefine.h \
|
|
strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h
|
|
|
|
# Other generated files, for 'make clean' only
|
|
GENERATED = tab tokenfile.g Lpars.h LLfiles LL.output lint.out \
|
|
print Xref lxref hfiles cfiles
|
|
|
|
# include files containing ALLOCDEF specifications
|
|
NEXTFILES = code.str declar.str decspecs.str def.str expr.str field.str \
|
|
idf.str macro.str stack.str stmt.str struct.str switch.str type.str
|
|
|
|
.SUFFIXES: .str .h
|
|
.str.h:
|
|
./make.allocd <$*.str >$*.h
|
|
|
|
all: cc
|
|
|
|
cc:
|
|
make "CC=$(CC)" hfiles
|
|
make "CC=$(CC)" LLfiles
|
|
make "CC=$(CC)" main
|
|
|
|
cem: cem.c
|
|
$(CC) -O cem.c $(SYSLIB) -o cem
|
|
|
|
lint.cem: cem.c
|
|
$(LINT) -bx cem.c
|
|
|
|
hfiles: ./make.hfiles Parameters
|
|
./make.hfiles Parameters
|
|
@touch hfiles
|
|
|
|
LLfiles: $(LSRC)
|
|
$(GEN) $(GENOPTIONS) $(LSRC)
|
|
@touch LLfiles
|
|
|
|
tokenfile.g: tokenname.c make.tokfile
|
|
<tokenname.c ./make.tokfile >tokenfile.g
|
|
|
|
symbol2str.c: tokenname.c make.tokcase
|
|
<tokenname.c ./make.tokcase >symbol2str.c
|
|
|
|
char.c: tab char.tab
|
|
tab -fchar.tab >char.c
|
|
|
|
next.c: make.next $(NEXTFILES)
|
|
./make.next $(NEXTFILES) >next.c
|
|
|
|
code.h: make.allocd
|
|
declar.h: make.allocd
|
|
decspecs.h: make.allocd
|
|
def.h: make.allocd
|
|
expr.h: make.allocd
|
|
field.h: make.allocd
|
|
idf.h: make.allocd
|
|
macro.h: make.allocd
|
|
stack.h: make.allocd
|
|
stmt.h: make.allocd
|
|
struct.h: make.allocd
|
|
switch.h: make.allocd
|
|
type.h: make.allocd
|
|
|
|
# Objects needed for 'main'
|
|
OBJ = $(COBJ) $(LOBJ) $(GOBJ)
|
|
|
|
main: $(OBJ) Makefile
|
|
$(CC) $(COPTIONS) $(LFLAGS) $(OBJ) $(LIBS) -o main
|
|
size main
|
|
|
|
emain: $(OBJ) Makefile
|
|
$(CC) $(COPTIONS) $(LFLAGS) $(OBJ) $(ELIBS) -o emain
|
|
size emain
|
|
|
|
cfiles: hfiles LLfiles $(GSRC)
|
|
@touch cfiles
|
|
|
|
install: main cem
|
|
cp main $(CEMCOM)
|
|
cp cem $(DRIVER)
|
|
|
|
print: files
|
|
pr `cat files` > print
|
|
|
|
tags: cfiles
|
|
ctags `sources $(OBJ)`
|
|
|
|
shar: files
|
|
shar `cat files`
|
|
|
|
listcfiles:
|
|
@echo `sources $(OBJ)`
|
|
|
|
listobjects:
|
|
@echo $(OBJ)
|
|
|
|
depend: cfiles
|
|
sed '/^#AUTOAUTO/,$$d' Makefile >Makefile.new
|
|
echo '#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO' >>Makefile.new
|
|
$(MKDEP) `sources $(OBJ)` | sed 's/\.c:/.o:/' >>Makefile.new
|
|
mv Makefile Makefile.old
|
|
mv Makefile.new Makefile
|
|
|
|
xref:
|
|
ctags -x `grep "\.[ch]" files`|sed "s/).*/)/">Xref
|
|
|
|
lxref:
|
|
lxref $(OBJ) -lc >lxref
|
|
|
|
lint: lint.main lint.cem lint.tab
|
|
|
|
lint.main: cfiles
|
|
$(LINT) -bx $(CDEFS) `sources $(OBJ)` $(LINTLIBS) >lint.out
|
|
|
|
cchk:
|
|
cchk `sources $(COBJ)`
|
|
|
|
clean:
|
|
rm -f `sources $(LOBJ)` $(OBJ) $(GENERATED) $(GSRC) $(GHSRC)
|
|
|
|
tab:
|
|
$(CC) tab.c -o tab
|
|
|
|
lint.tab:
|
|
$(LINT) -abx tab.c
|
|
|
|
sim: cfiles
|
|
$(SIM) $(SIMFLAGS) `sources $(COBJ)` $(GSRC) $(LSRC)
|
|
|
|
#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
|
|
main.o: LLlex.h Lpars.h alloc.h arith.h debug.h declar.h idf.h input.h inputtype.h level.h maxincl.h myalloc.h nobitfield.h nopp.h spec_arith.h specials.h target_sizes.h tokenname.h type.h use_tmp.h
|
|
idf.o: LLlex.h Lpars.h align.h alloc.h arith.h assert.h botch_free.h debug.h declar.h decspecs.h def.h idf.h idfsize.h label.h level.h nobitfield.h nopp.h sizes.h spec_arith.h specials.h stack.h storage.h struct.h type.h
|
|
declarator.o: Lpars.h alloc.h arith.h botch_free.h declar.h expr.h idf.h label.h nobitfield.h nopp.h sizes.h spec_arith.h storage.h type.h
|
|
decspecs.o: Lpars.h arith.h decspecs.h def.h level.h nobitfield.h spec_arith.h type.h
|
|
struct.o: LLlex.h Lpars.h align.h arith.h assert.h botch_free.h debug.h def.h field.h idf.h level.h nobitfield.h nopp.h sizes.h spec_arith.h stack.h storage.h struct.h type.h
|
|
expr.o: LLlex.h Lpars.h alloc.h arith.h botch_free.h declar.h decspecs.h def.h expr.h idf.h label.h level.h nobitfield.h nopp.h sizes.h spec_arith.h storage.h type.h
|
|
ch7.o: Lpars.h arith.h assert.h debug.h def.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h struct.h type.h
|
|
ch7bin.o: Lpars.h arith.h botch_free.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h storage.h struct.h type.h
|
|
cstoper.o: Lpars.h arith.h assert.h debug.h expr.h idf.h label.h nobitfield.h nopp.h sizes.h spec_arith.h target_sizes.h type.h
|
|
arith.o: Lpars.h alloc.h arith.h botch_free.h expr.h field.h idf.h label.h mes.h nobitfield.h nopp.h spec_arith.h storage.h type.h
|
|
alloc.o: alloc.h assert.h debug.h myalloc.h
|
|
code.o: LLlex.h Lpars.h alloc.h arith.h assert.h atw.h botch_free.h code.h dataflow.h debug.h declar.h decspecs.h def.h expr.h idf.h label.h level.h mes.h nobitfield.h nopp.h sizes.h spec_arith.h specials.h stack.h stmt.h storage.h type.h use_tmp.h
|
|
dumpidf.o: Lpars.h arith.h debug.h def.h expr.h field.h idf.h label.h nobitfield.h nopp.h spec_arith.h stack.h struct.h type.h
|
|
error.o: LLlex.h arith.h debug.h errout.h expr.h label.h nopp.h spec_arith.h tokenname.h use_tmp.h
|
|
field.o: Lpars.h arith.h assert.h code.h debug.h expr.h field.h idf.h label.h nobitfield.h nopp.h sizes.h spec_arith.h type.h
|
|
tokenname.o: LLlex.h Lpars.h arith.h idf.h nopp.h spec_arith.h tokenname.h
|
|
LLlex.o: LLlex.h Lpars.h alloc.h arith.h assert.h class.h debug.h def.h idf.h idfsize.h input.h nopp.h numsize.h sizes.h spec_arith.h strsize.h
|
|
LLmessage.o: LLlex.h Lpars.h alloc.h arith.h idf.h nopp.h spec_arith.h
|
|
input.o: LLlex.h alloc.h arith.h assert.h debug.h idepth.h input.h inputtype.h interface.h nopp.h pathlength.h spec_arith.h
|
|
domacro.o: LLlex.h Lpars.h alloc.h arith.h assert.h botch_free.h class.h debug.h idf.h idfsize.h ifdepth.h input.h interface.h macro.h nopp.h nparams.h parbufsize.h spec_arith.h storage.h textsize.h
|
|
replace.o: LLlex.h alloc.h arith.h assert.h class.h debug.h idf.h input.h interface.h macro.h nopp.h pathlength.h spec_arith.h strsize.h
|
|
init.o: alloc.h class.h idf.h interface.h macro.h nopp.h predefine.h
|
|
options.o: align.h arith.h class.h idf.h idfsize.h macro.h maxincl.h nobitfield.h nopp.h sizes.h spec_arith.h storage.h use_tmp.h
|
|
scan.o: class.h idf.h input.h interface.h lapbuf.h macro.h nopp.h nparams.h
|
|
skip.o: LLlex.h arith.h class.h input.h interface.h nopp.h spec_arith.h
|
|
stack.o: Lpars.h alloc.h arith.h botch_free.h debug.h def.h idf.h level.h mes.h nobitfield.h nopp.h spec_arith.h stack.h storage.h struct.h type.h use_tmp.h
|
|
type.o: Lpars.h align.h alloc.h arith.h def.h idf.h nobitfield.h nopp.h sizes.h spec_arith.h storage.h type.h
|
|
ch7mon.o: Lpars.h arith.h botch_free.h def.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h storage.h type.h
|
|
label.o: Lpars.h arith.h def.h idf.h label.h level.h nobitfield.h nopp.h spec_arith.h type.h
|
|
eval.o: Lpars.h align.h arith.h assert.h atw.h code.h dataflow.h debug.h def.h expr.h idf.h label.h level.h mes.h nobitfield.h nopp.h sizes.h spec_arith.h stack.h type.h
|
|
switch.o: Lpars.h arith.h assert.h botch_free.h code.h debug.h density.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h storage.h switch.h type.h
|
|
storage.o: alloc.h assert.h botch_free.h debug.h storage.h
|
|
ival.o: Lpars.h align.h arith.h assert.h class.h debug.h def.h expr.h field.h idf.h label.h level.h nobitfield.h nopp.h sizes.h spec_arith.h struct.h type.h
|
|
conversion.o: Lpars.h arith.h nobitfield.h sizes.h spec_arith.h type.h
|
|
blocks.o: arith.h atw.h sizes.h spec_arith.h
|
|
dataflow.o: dataflow.h
|
|
tokenfile.o: Lpars.h
|
|
declar.o: LLlex.h Lpars.h arith.h debug.h declar.h decspecs.h def.h expr.h field.h idf.h label.h nobitfield.h nopp.h sizes.h spec_arith.h storage.h struct.h type.h
|
|
statement.o: LLlex.h Lpars.h arith.h botch_free.h code.h debug.h def.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h stack.h storage.h type.h
|
|
expression.o: LLlex.h Lpars.h arith.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h type.h
|
|
program.o: LLlex.h Lpars.h alloc.h arith.h code.h declar.h decspecs.h def.h expr.h idf.h label.h nobitfield.h nopp.h spec_arith.h type.h
|
|
Lpars.o: Lpars.h
|
|
char.o: class.h
|
|
symbol2str.o: Lpars.h
|