# descrip.mms -- makefile for building `flex' using MMS or MMK on VMS; # created manually from Makefile.in # flex 2.5.0 Jan'95 MAKEFILE = descrip.mms # from [.MISC.VMS] MAKE = $(MMS) /Descr=$(MAKEFILE) MAKEFLAGS = $(MMSQUALIFIERS) # Possible values for DEFS: # "VMS" -- used just to make sure parentheses aren't empty; # For flex to always generate 8-bit scanners, append # ,"DEFAULT_CSIZE=256" inside /Define=() of DEFS. DEFS = /Define=("VMS") LDFLAGS = /noMap # compiler handling .ifdef GNUC CC = gcc GCCINIT = ! SET COMMAND GNU_CC:[000000]GCC CFLAGS = /noList/Opt=2/Debug/noVerbose LIBS = gnu_cc:[000000]gcclib.olb/Library, sys$library:vaxcrtl.olb/Library C_CHOICE = "GNUC=1" .else ! not GNU C CC = cc GCCINIT = .ifdef DECC CFLAGS = /noList/Prefix=All LIBS = C_CHOICE = "DECC=1" .else ! not DEC C; assume VAX C CFLAGS = /noList/Optimize=noInline LIBS = sys$share:vaxcrtl.exe/Shareable C_CHOICE = "VAXC=1" .endif .endif # parser handling # mms/macro=("xxxC=1","zzz_parser=1"), where "zzz_parser" is # either "bison_parser" or "byacc_parser" or "yacc_parser", # otherwise assumed to be "no_parser"; and where "xxxC=1" is # either "VAXC=1", "GNUC=1", or "DECC=1" as above .ifdef bison_parser YACC = bison YACCFLAGS = /Defines/Fixed_Outfiles YACCINIT = set command gnu_bison:[000000]bison ALLOCA = ,[]alloca.obj # note leading comma .else YACCFLAGS = -d YACCINIT = ALLOCA = .ifdef byacc_parser YACC = byacc .else .ifdef yacc_parser YACC = yacc .else # none of bison, byacc, or yacc specified .ifdef no_parser .else no_parser=1 .endif # .endif #yacc .endif #byacc .endif #bison # VMS-specific hackery ECHO = write sys$output # requires single quoted arg COPY = copy_ # MOVE = rename_/New_Vers # within same device only MUNG = search_/Exact/Match=NOR # to strip unwanted `#module' directive NOOP = continue # non-empty command that does nothing PURGE = purge_/noConfirm/noLog # relatively quiet file removal REMOVE = delete_/noConfirm/noLog # ditto TOUCH = append_/New _NL: # requires single file arg TPU = edit_/TPU/noJournal/noDisplay/noSection # You can define this to be "lex.exe" if you want to replace lex at your site. FLEX =flex.exe # note: there should be no whitespace between `=' and the name, # or else $(FLEX_EXEC) below will not function properly. FLEXLIB = flexlib.olb # You normally do not need to modify anything below this point. # ------------------------------------------------------------ VMSDIR = [.MISC.VMS] MISCDIR = [.MISC] CURDIR = sys$disk:[] CPPFLAGS = $(DEFS)/Include=[] LIBOPT = $(CURDIR)crtl.opt # run-time library(s) ID_OPT = $(CURDIR)ident.opt # version identification .SUFFIXES : # avoid overhead of umpteen built-in rules .SUFFIXES : .obj .c .c.obj : $(CC)$(CFLAGS)$(CPPFLAGS) $< VMSHDRS = $(VMSDIR)vms-conf.h # copied to []config.h VMSSRCS = $(VMSDIR)vms-code.c # copied to []vms-code.c VMSOBJS = ,vms-code.obj # note leading comma HEADERS = flexdef.h version.h SOURCES = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.y \ scan.l skel.c sym.c tblcmp.c yylex.c OBJECTS = ccl.obj,dfa.obj,ecs.obj,gen.obj,main.obj,misc.obj,nfa.obj,parse.obj,\ scan.obj,skel.obj,sym.obj,tblcmp.obj,yylex.obj $(VMSOBJS) $(ALLOCA) LIBSRCS = libmain.c libyywrap.c LIBOBJS = libmain.obj,libyywrap.obj LINTSRCS = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.c \ scan.c skel.c sym.c tblcmp.c yylex.c DISTFILES = README NEWS COPYING INSTALL FlexLexer.h \ configure.in conf.in Makefile.in mkskel.sh flex.skl \ $(HEADERS) $(SOURCES) $(LIBSRCS) MISC \ flex.1 scan.c install.sh mkinstalldirs configure DIST_NAME = flex # flex options to use when generating scan.c from scan.l COMPRESSION = PERF_REPORT = -p # which "flex" to use to generate scan.c from scan.l FLEX_EXEC = mcr $(CURDIR)$(FLEX) FLEX_FLAGS = -t $(PERF_REPORT) #$(COMPRESSION) MARKER = make.bootstrap ##### targets start here ##### all : $(FLEX) flex.doc @ $(NOOP) install : $(FLEX) flex.doc flex.skl $(FLEXLIB) FlexLexer.h @ $(ECHO) "-- Installation must be done manually." @ $(ECHO) " $+" .ifdef GCCINIT .FIRST $(GCCINIT) .endif #GCCINIT flex : $(FLEX) @ $(NOOP) $(FLEX) : $(MARKER) $(OBJECTS) $(FLEXLIB) $(LIBOPT) $(ID_OPT) $(LINK)/Exe=$(FLEX) $(LDFLAGS)\ $(OBJECTS),$(FLEXLIB)/Lib,$(LIBOPT)/Opt,$(ID_OPT)/Opt $(MARKER) : initscan.c @- if f$search("scan.c").nes."" then $(REMOVE) scan.c;* $(COPY) initscan.c scan.c @ $(TOUCH) $(MARKER) parse.c : parse.y @- if f$search("y_tab.%").nes."" then $(REMOVE) y_tab.%;* .ifdef no_parser $(COPY) $(MISCDIR)parse.% $(CURDIR)y_tab.* .else $(YACCINIT) $(YACC) $(YACCFLAGS) parse.y .endif $(MUNG) y_tab.c "#module","#line" /Output=parse.c @- $(REMOVE) y_tab.c;* $(MOVE) y_tab.h parse.h parse.h : parse.c @ $(TOUCH) parse.h scan.c : scan.l $(FLEX_EXEC) $(FLEX_FLAGS) $(COMPRESSION) scan.l > scan.c scan.obj : scan.c parse.h flexdef.h config.h yylex.obj : yylex.c parse.h flexdef.h config.h skel.c : flex.skl $(VMSDIR)mkskel.tpu $(TPU) /Command=$(VMSDIR)mkskel.tpu flex.skl /Output=skel.c main.obj : main.c flexdef.h config.h version.h ccl.obj : ccl.c flexdef.h config.h dfa.obj : dfa.c flexdef.h config.h ecs.obj : ecs.c flexdef.h config.h gen.obj : gen.c flexdef.h config.h misc.obj : misc.c flexdef.h config.h nfa.obj : nfa.c flexdef.h config.h parse.obj : parse.c flexdef.h config.h skel.obj : skel.c flexdef.h config.h sym.obj : sym.c flexdef.h config.h tblcmp.obj : tblcmp.c flexdef.h config.h vms-code.obj : vms-code.c flexdef.h config.h []alloca.obj : alloca.c $(CC)$(CFLAGS)/Define=("STACK_DIRECTION=-1","xmalloc=yy_flex_xmalloc") alloca.c alloca.c : $(MISCDIR)alloca.c $(COPY) $(MISCDIR)alloca.c alloca.c config.h : $(VMSDIR)vms-conf.h $(COPY) $(VMSDIR)vms-conf.h config.h vms-code.c : $(VMSDIR)vms-code.c $(COPY) $(VMSDIR)vms-code.c vms-code.c test : check @ $(NOOP) check : $(FLEX) @ $(ECHO) "" @ $(ECHO) " Checking with COMPRESSION="$(COMPRESSION)"" $(FLEX_EXEC) $(FLEX_FLAGS) $(COMPRESSION) scan.l > scan.chk diff_/Output=_NL:/Maximum_Diff=1 scan.c scan.chk bigcheck : @- if f$search("scan.c").nes."" then $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-C""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-Ce""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-Cm""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-f""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-Cfea""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-CFer""") check @- $(REMOVE) scan.c;* $(MAKE)$(MAKEFLAGS) /Macro=($(C_CHOICE),"COMPRESSION=""-l""","PERF_REPORT=") check @- $(REMOVE) scan.c;*,scan.chk;* $(MAKE)$(MAKEFLAGS) $(FLEX) @- $(PURGE) scan.obj @ $(ECHO) "All checks successful" $(FLEXLIB) : $(LIBOBJS) library/Obj $(FLEXLIB)/Create $(LIBOBJS)/Insert @ if f$search("$(FLEXLIB);-1").nes."" then $(PURGE) $(FLEXLIB) # We call it .doc instead of .man, to lessen culture shock. :-} # If MISC/flex.man is out of date relative to flex.1, there's # not much we can do about it with the tools readily available. flex.doc : flex.1 @ if f$search("$(MISCDIR)flex.man").eqs."" then \ $(COPY) flex.1 $(MISCDIR)flex.man $(COPY) $(MISCDIR)flex.man flex.doc # # This is completely VMS-specific... # # Linker options file specifying run-time library(s) to link against; # choice depends on which C compiler is used, and might be empty. $(LIBOPT) : $(MAKEFILE) @ open/Write optfile $(LIBOPT) @ write optfile "$(LIBS)" @ close optfile # Linker options file putting the version number where the ANALYZE/IMAGE # command will be able to find and report it; assumes that the first line # of version.h has the version number enclosed within the first and second # double quotes on it [as in ``#define FLEX_VERSION "2.5.0"'']. $(ID_OPT) : version.h @ version = "# flex ""2.5""" !default, overridden by version.h @- open/Read hfile version.h @- read hfile version @- close/noLog hfile @ version = f$element(1,"""",version) @ open/Write optfile $(ID_OPT) @ write optfile "identification=""flex ''version'""" @ close optfile # # This is the only stuff moderately useful from the remainder # of Makefile.in... # mostlyclean : @- if f$search("scan.chk").nes."" then $(REMOVE) scan.chk;* @- if f$search("*.obj;-1").nes."" then $(PURGE) *.obj @- if f$search("*.exe;-1").nes."" then $(PURGE) *.exe @- if f$search("*.opt;-1").nes."" then $(PURGE) *.opt clean : mostlyclean @- if f$search("*.obj").nes."" then $(REMOVE) *.obj;* @- if f$search("parse.h").nes."" then $(REMOVE) parse.h;* @- if f$search("parse.c").nes."" then $(REMOVE) parse.c;* @- if f$search("alloca.c").nes."" .and.- f$search("$(MISCDIR)alloca.c").nes."" then $(REMOVE) alloca.c;* @- if f$search("$(LIBOPT)").nes."" then $(REMOVE) $(LIBOPT);* @- if f$search("$(ID_OPT)").nes."" then $(REMOVE) $(ID_OPT);* distclean : clean @- if f$search("$(MARKER)").nes."" then $(REMOVE) $(MARKER);* @- if f$search("$(FLEX)").nes."" then $(REMOVE) $(FLEX);* @- if f$search("$(FLEXLIB)").nes."" then $(REMOVE) $(FLEXLIB);* @- if f$search("flex.doc").nes."" then $(REMOVE) flex.doc;* @- if f$search("scan.c").nes."" then $(REMOVE) scan.c;* @- if f$search("vms-code.c").nes."" .and.- f$search("$(VMSDIR)vms-code.c").nes."" then $(REMOVE) vms-code.c;* @- if f$search("config.h").nes."" .and.- f$search("$(VMSDIR)vms-conf.h").nes."" then $(REMOVE) config.h;* # @- if f$search("descrip.mms").nes."" .and.- # f$search("$(VMSDIR)descrip.mms").nes."" then $(REMOVE) descrip.mms;* realclean : distclean @- if f$search("skel.c").nes."" then $(REMOVE) skel.c;*