# # Makefile for IMP80 compiler # # Bob Eager August 2002 # # # Product name # PRODUCT = imp # # Compiler setup # CC = icc !IFDEF DEBUG DBUG = -DDEBUG !ELSE DBUG = !ENDIF !IFDEF PROD CFLAGS = $(DBUG) -Fi -G5 -O -Q -Si -Tl30 !ELSE CFLAGS = $(DBUG) -Fi -G5 -Q -Si -Sm -Ti -Tl30 -Tm -Tx !ENDIF # # Names of object files # OBJ1 = asm.obj global.obj OBJ2 = global2.obj lput.obj main.obj message.obj misc.obj OBJ3 = ncode.obj pass1.obj table.obj OBJ4 = cgen.obj code.obj expop.obj pass2.obj # # Names of source files # CFILES1 = asm.c global.c CFILES2 = global2.c lput.c main.c misc.c CFILES3 = ncode.c pass1.c table.c CFILES4 = cgen.c code.c expop.c pass2.c # # Names of directories and files # ASMDIR = ..\genop ASMFILE = a86.dat MESDIR = ..\compmess MESFILE = messages.txt PSFILE = ps86.dat PSLIST = ps86.lst SNDIR = ..\gensn SNINFO = snames.dat SYNDIR = ..\genps # # Names of generated files # ASM = asm.h ASMLIST = a86.lst MESSAGE = message.c OPCODE = opcode.h SCOMM = scomms.h SNAMES = snames.h SNTABS = sntabs.h SYNTAX = syntax.h # # Names of listing files # LIST = a86.lst ps86.lst # # Other files # DEF = imp.def LNK = imp.lnk MAKEFILE = makefile README = readme.txt # # Final executable file # EXE = $(PRODUCT).exe # #----------------------------------------------------------------------------- # $(EXE): $(OBJ1) $(OBJ2) $(OBJ3) $(DEF) $(LNK) !IFDEF PROD ilink /nologo /exepack:2 @$(LNK) lxlite $(EXE) eautil $(EXE) nul /s !ELSE ilink /debug /nobrowse /nologo @$(LNK) !ENDIF # # Object files # asm.obj: $(ASM) $(OPCODE) imp.h asm.c code.obj: imp.h asm.h global.h global2.h lput.h $(OPCODE) code.c #cgen.obj: imp.h global.h global2.h cgen.c expop.obj: imp.h global.h expop.c global.obj: global.h imp.h global.c global2.obj: global2.h imp.h $(OPCODE) global2.c lput.obj: lput.h lput.c main.obj: imp.h global.h global2.h lput.h $(OPCODE) $(SNTABS) \ $(SNDIR)\$(SNINFO) $(SNTABS) $(SNAMES) \ main.c message.obj: imp.h $(MESSAGE) $(MESDIR)\$(MESFILE) misc.obj: imp.h global.h global2.h $(OPCODE) misc.c ncode.obj: imp.h global.h ncode.c pass1.obj: imp.h global.h $(OPCODE) pass1.c \ $(SYNTAX) $(SYNDIR)\$(PSFILE) pass2.obj: imp.h global.h pass2.c table.obj: table.c test.obj: test.c # # Linker response file. Rebuild if makefile changes # $(LNK): makefile @if exist $(LNK) erase $(LNK) @echo /map:$(PRODUCT) >> $(LNK) @echo /out:$(PRODUCT) >> $(LNK) echo $(OBJ1) >> $(LNK) echo $(OBJ2) >> $(LNK) echo $(OBJ3) >> $(LNK) echo $(DEF) >> $(LNK) # # Generated files # $(ASM): $(ASMDIR)\$(ASMFILE) $(ASMDIR)\genop $(ASMDIR)\$(ASMFILE) $(ASM) $(OPCODE) $(ASMLIST) $(MESSAGE): $(MESDIR)\$(MESFILE) $(MESDIR)\compmess $(MESDIR)\$(MESFILE) $(MESSAGE) nul $(OPCODE): $(ASMDIR)\$(ASMFILE) $(ASMDIR)\genop $(ASMDIR)\$(ASMFILE) $(ASM) $(OPCODE) $(ASMLIST) $(SCOMM): $(SNDIR)\$(SNINFO) $(SNDIR)\gensn $(SNDIR)\$(SNINFO) $(SNTABS) $(SNAMES) $(SCOMM) $(SNAMES): $(SNDIR)\$(SNINFO) $(SNDIR)\gensn $(SNDIR)\$(SNINFO) $(SNTABS) $(SNAMES) $(SCOMM) $(SNTABS): $(SNDIR)\$(SNINFO) $(SNDIR)\gensn $(SNDIR)\$(SNINFO) $(SNTABS) $(SNAMES) $(SCOMM) $(SYNTAX): $(SYNDIR)\$(PSFILE) $(SYNDIR)\genps $(SYNDIR)\$(PSFILE) $(SYNTAX) $(PSLIST) # # Archive # archive: @zip -9 $(PRODUCT) $(CFILES1) $(CFILES2) $(CFILES3)\ $(DEF) $(EXE) $(README)\ $(MAKEFILE) # # Cleanup # clean: -erase $(OBJ1) $(OBJ2) $(OBJ3) $(LNK) $(PRODUCT).map # -erase $(OBJ4) -erase $(LIST) csetc.pch # # End of makefile for IMP80 compiler #