1 # 2 # make file for "flex" tool 3 # @(#) $Header: /usr/fsys/odin/a/vern/flex/RCS/Makefile,v 2.9 90/05/26 17:28:44 4 vern Exp $ (LBL) 5 # 6 # the first time around use "make f_flex" 7 # 8 # This makefile is specific for Microsoft's C/C++ compiler (v7), nmake and 9 # lib 10 # - Paul Stuart, Jan 93 (pjs (at] scammell.ecos.tne.oz.au) 11 # 12 13 14 SKELFLAGS = -DDEFAULT_SKELETON_FILE=\"c:/src/flex/flex.skl\" 15 CFLAGS = -nologo -AL -W2 -F 8000 -Ox -Gt16000 -DMS_DOS -DUSG 16 LDFLAGS = /nologo /NOI /BATCH /ONERROR:NOEXE /STACK:8000 17 FLEX_FLAGS = -ist8 -Sflex.skl 18 19 FLEX = .\flex.exe 20 CC = cl 21 YACC = c:\lib\byacc 22 MAKE = nmake /nologo 23 24 # 25 # break obj-list into two because of 128 character command-line limit of 26 # Microsoft's link and lib utilities. 27 # 28 FLEXOBJS1 = \ 29 ccl.obj \ 30 dfa.obj \ 31 ecs.obj \ 32 gen.obj \ 33 main.obj \ 34 misc.obj \ 35 nfa.obj \ 36 parse.obj 37 38 FLEXOBJS2 = \ 39 scan.obj \ 40 sym.obj \ 41 tblcmp.obj \ 42 yylex.obj 43 44 FLEX_C_SOURCES = \ 45 ccl.c \ 46 dfa.c \ 47 ecs.c \ 48 gen.c \ 49 main.c \ 50 misc.c \ 51 nfa.c \ 52 parse.c \ 53 scan.c \ 54 sym.c \ 55 tblcmp.c \ 56 yylex.c 57 58 FLEX_LIB_OBJS = \ 59 libmain.obj 60 61 62 all : flex.exe 63 64 # 65 # lib is used to get around the 128 character command-line limit of 'link'. 66 # 67 flex.exe : $(FLEXOBJS1) $(FLEXOBJS2) 68 lib /nologo tmplib $(FLEXOBJS1); 69 link $(LDFLAGS) $(FLEXOBJS2),$*.exe,,tmplib; 70 del tmplib.lib 71 72 f_flex: 73 copy initscan.c scan.c 74 touch scan.c 75 @echo compiling first flex 76 $(MAKE) flex.exe 77 del scan.c 78 @echo using first flex to generate final version... 79 $(MAKE) flex.exe 80 81 # 82 # general inference rule 83 # 84 .c.obj: 85 $(CC) -c $(CFLAGS) $*.c 86 87 parse.h parse.c : parse.y 88 $(YACC) -d parse.y 89 @mv y_tab.c parse.c 90 @mv y_tab.h parse.h 91 92 scan.c : scan.l 93 $(FLEX) $(FLEX_FLAGS) $(COMPRESSION) scan.l >scan.c 94 95 96 scan.obj : scan.c parse.h flexdef.h 97 98 main.obj : main.c flexdef.h 99 $(CC) $(CFLAGS) -c $(SKELFLAGS) main.c 100 101 ccl.obj : ccl.c flexdef.h 102 dfa.obj : dfa.c flexdef.h 103 ecs.obj : ecs.c flexdef.h 104 gen.obj : gen.c flexdef.h 105 misc.obj : misc.c flexdef.h 106 nfa.obj : nfa.c flexdef.h 107 parse.obj : parse.c flexdef.h 108 sym.obj : sym.c flexdef.h 109 tblcmp.obj : tblcmp.c flexdef.h 110 yylex.obj : yylex.c flexdef.h 111 112 113 clean : 114 del *.obj 115 del *.map 116