312 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			312 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 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;*
 | 
						|
 |