# # make file for "flex" tool # @(#) $Header: /usr/fsys/odin/a/vern/flex/RCS/Makefile,v 2.9 90/05/26 17:28:44 vern Exp $ (LBL) # # the first time around use "make f_flex" # # This makefile is specific for Microsoft's C/C++ compiler (v7), nmake and # lib # - Paul Stuart, Jan 93 (pjs@scammell.ecos.tne.oz.au) # SKELFLAGS = -DDEFAULT_SKELETON_FILE=\"c:/src/flex/flex.skl\" CFLAGS = -nologo -AL -W2 -F 8000 -Ox -Gt16000 -DMS_DOS -DUSG LDFLAGS = /nologo /NOI /BATCH /ONERROR:NOEXE /STACK:8000 FLEX_FLAGS = -ist8 -Sflex.skl FLEX = .\flex.exe CC = cl YACC = c:\lib\byacc MAKE = nmake /nologo # # break obj-list into two because of 128 character command-line limit of # Microsoft's link and lib utilities. # FLEXOBJS1 = \ ccl.obj \ dfa.obj \ ecs.obj \ gen.obj \ main.obj \ misc.obj \ nfa.obj \ parse.obj FLEXOBJS2 = \ scan.obj \ sym.obj \ tblcmp.obj \ yylex.obj FLEX_C_SOURCES = \ ccl.c \ dfa.c \ ecs.c \ gen.c \ main.c \ misc.c \ nfa.c \ parse.c \ scan.c \ sym.c \ tblcmp.c \ yylex.c FLEX_LIB_OBJS = \ libmain.obj all : flex.exe # # lib is used to get around the 128 character command-line limit of 'link'. # flex.exe : $(FLEXOBJS1) $(FLEXOBJS2) lib /nologo tmplib $(FLEXOBJS1); link $(LDFLAGS) $(FLEXOBJS2),$*.exe,,tmplib; del tmplib.lib f_flex: copy initscan.c scan.c touch scan.c @echo compiling first flex $(MAKE) flex.exe del scan.c @echo using first flex to generate final version... $(MAKE) flex.exe # # general inference rule # .c.obj: $(CC) -c $(CFLAGS) $*.c parse.h parse.c : parse.y $(YACC) -d parse.y @mv y_tab.c parse.c @mv y_tab.h parse.h scan.c : scan.l $(FLEX) $(FLEX_FLAGS) $(COMPRESSION) scan.l >scan.c scan.obj : scan.c parse.h flexdef.h main.obj : main.c flexdef.h $(CC) $(CFLAGS) -c $(SKELFLAGS) main.c ccl.obj : ccl.c flexdef.h dfa.obj : dfa.c flexdef.h ecs.obj : ecs.c flexdef.h gen.obj : gen.c flexdef.h misc.obj : misc.c flexdef.h nfa.obj : nfa.c flexdef.h parse.obj : parse.c flexdef.h sym.obj : sym.c flexdef.h tblcmp.obj : tblcmp.c flexdef.h yylex.obj : yylex.c flexdef.h clean : del *.obj del *.map