| # 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 #<none> |
| .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;* |
| |