# $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 EMHOME = /usr/em# # ACK tree on this machine DESTINATION = /user1/$$USER/bin# # where to put the stuff MKDEP = $(EMHOME)/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 = $(EMHOME)/modules/lib/libsystem.a EMKLIB = $(EMHOME)/modules/lib/libemk.a EMELIB = $(EMHOME)/modules/lib/libeme.a STRLIB = $(EMHOME)/modules/lib/libstring.a PRTLIB = $(EMHOME)/modules/lib/libprint.a EMMESLIB = $(EMHOME)/modules/lib/libem_mes.a INPLIB = $(EMHOME)/modules/lib/libinput.a ALLOCLIB = $(EMHOME)/modules/lib/liballoc.a MALLOC = $(EMHOME)/modules/lib/malloc.o #CH3LIB = $(EMHOME)/modules/lib/libch3.a CH3LIB = LIBS = $(INPLIB) $(CH3LIB) $(EMMESLIB) $(EMKLIB) \ $(PRTLIB) $(STRLIB) $(ALLOCLIB) $(MALLOC) $(SYSLIB) ELIBS = $(INPLIB) $(CH3LIB) $(EMMESLIB) $(EMELIB) \ $(PRTLIB) $(STRLIB) $(ALLOCLIB) $(MALLOC) $(SYSLIB) LIB_INCLUDES = -I$(EMHOME)/modules/h -I$(EMHOME)/modules/pkg EM_INCLUDES = -I$(EMHOME)/h SYSLLIB = $(EMHOME)/modules/lib/llib-lsys.ln EMKLLIB = $(EMHOME)/modules/lib/llib-lemk.ln EMELLIB = $(EMHOME)/modules/lib/llib-leme.ln STRLLIB = $(EMHOME)/modules/lib/llib-lstr.ln PRTLLIB = $(EMHOME)/modules/lib/llib-lprint.ln EMMESLLIB = $(EMHOME)/modules/lib/llib-lmes.ln INPLLIB = $(EMHOME)/modules/lib/llib-linput.ln CH3LLIB = $(EMHOME)/modules/lib/llib-lch3.ln ALLOCLLIB = $(EMHOME)/modules/lib/llib-alloc.ln LINTLIBS = #LINTLIBS = $(CH3LLIB) $(INPLLIB) $(EMMESLLIB) $(EMKLLIB) \ # $(PRTLLIB) $(STRLLIB) $(SYSLLIB) $(ALLOCLLIB) # 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 = $(EMHOME)/bin/LLgen GENOPTIONS = -vv # Special #defines during compilation CDEFS = $(MAP) $(EM_INCLUDES) $(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 ival.g GLCSRC = tokenfile.c declar.c statement.c expression.c program.c ival.c LOBJ = tokenfile.o declar.o statement.o expression.o program.o Lpars.o ival.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 \ 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 conversion.o \ blocks.o dataflow.o Version.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 estack.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 \ idfsize.h ifdepth.h inputtype.h inumlength.h lapbuf.h \ nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \ nparams.h numsize.h parbufsize.h pathlength.h \ strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h # Other generated files, for 'make clean' only GENERATED = tab tokenfile.g Lpars.h LLfiles LL.output lint.out \ print Xref lxref hfiles cfiles $(GLCSRC) # include files containing ALLOCDEF specifications NEXTFILES = code.str declar.str decspecs.str def.str expr.str field.str \ estack.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 tokenfile.g symbol2str.c: 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 estack.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