diff options
Diffstat (limited to 'vms/descrip.mms')
-rw-r--r-- | vms/descrip.mms | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/vms/descrip.mms b/vms/descrip.mms new file mode 100644 index 00000000..040d458a --- /dev/null +++ b/vms/descrip.mms @@ -0,0 +1,200 @@ +# Descrip.MMS -- Makefile for building GNU Awk on VMS with VAXC and MMS. +# +# usage: +# $ MMS /Description=[.vms]Descrip.MMS gawk +# +# gawk.exe : +# You'll need to modify this Makefile to use gcc or vaxc v2.x rather +# than vaxc v3.x. Change the CFLAGS macro definition (move '#' from +# beginning of 2nd alternative to beginning of 1st), and also perhaps +# enable the following ".first" rule and its associated action. For +# GNU C, change the LIBS macro definition. +# +# awk_tab.c : +# If you have DEC/Shell, change the PARSER and PASERINIT macros to use +# yacc rather than bison. If you have neither yacc nor bison, you'll +# have to make sure that the distributed version of "awk.tab.c" is +# named "awk_tab.c" and that its modification date is later than the +# date of "awk.y", so that MMS won't try to build that target. If you +# use bison and it is already defined system-wide, comment out the +# PARSERINIT definition. +# +# install.help : +# You can make the target 'install.help' to load the VMS help text +# into a help library. Modify the HELPLIB macro if you don't want +# to put entry into the regular VMS library. (If you use an alternate +# help library, it must already exist; this target won't create it.) +# +# gawk.dvi : +# If you have TeX, you can make the target 'gawk.dvi' to process +# _The_GAWK_Manual_ from gawk.texinfo. You'll need to use a device +# specific post-processor on gawk.dvi in order to get printable data. +# + +# location of the VMS-specific files, relative to the 'main' directory +VMSDIR = [.vms] +MAKEFILE = $(VMSDIR)Descrip.MMS + +# debugging &c !'ccflags' is an escape to allow external compile flags +#CCFLAGS = /noOpt/Debug + +# work within the main directory, even when handling files in [.vms] +# note: use 2nd variant for either VAX C V2.x or for GNU C +CFLAGS = /Include=[]/Object=[]/Opt=noInline $(CCFLAGS) +#CFLAGS = /Include=([],$(VMSDIR))/Object=[] $(CCFLAGS) + +# uncomment this for GNU C +#CC = gcc + +# uncomment these two lines for GNU C _if_ it's not installed system-wide +#.first !compiler init, needed if there's no system-wide setup +# set command gnu_cc:[000000]gcc + +# uncomment these three lines for VAX C V2.x +#.first !compiler init, find all #include files +# define/nolog vaxc$library sys$library:,sys$disk:$(VMSDIR) +# define/nolog c$library [],$(VMSDIR) +#!(it appears that if vaxc$library is defined, then the /Include +#! qualifier is ignored, making a c$library definition essential) + +# run-time libraries; use the 2nd one for GNU C +LIBS = sys$share:vaxcrtl.exe/Shareable +#LIBS = gnu_cc:[000000]gcclib.olb/Library,sys$library:vaxcrtl.olb/Library + +PARSER = bison +PARSERINIT = set command gnu_bison:[000000]bison +#PARSER = yacc +#PARSERINIT = yacc := $shell$exe:yacc + +# this is used for optional target 'install.help' +HELPLIB = sys$help:helplib.hlb +#HELPLIB = sys$help:local.hlb + +# +######## nothing below this line should need to be changed ######## +# + +# ALLOCA +ALLOCA = alloca.obj + +# object files +AWKOBJS = main.obj,eval.obj,builtin.obj,msg.obj,iop.obj,io.obj,\ + field.obj,array.obj,node.obj,version.obj,missing.obj,re.obj + +ALLOBJS = $(AWKOBJS),awk_tab.obj + +# GNUOBJS +# GNU stuff that gawk uses as library routines. +GNUOBJS = regex.obj,dfa.obj,$(ALLOCA) + +# VMSOBJS +# VMS specific stuff +VMSCODE = vms_misc.obj,vms_popen.obj,vms_fwrite.obj,vms_args.obj,\ + vms_gawk.obj,vms_cli.obj +VMSCMD = gawk_cmd.obj # built from .cld file +VMSOBJS = $(VMSCODE),$(VMSCMD) + +VMSSRCS = $(VMSDIR)vms_misc.c,$(VMSDIR)vms_popen.c,$(VMSDIR)vms_fwrite.c,\ + $(VMSDIR)vms_args.c,$(VMSDIR)vms_gawk.c,$(VMSDIR)vms_cli.c +VMSHDRS = $(VMSDIR)vms.h,$(VMSDIR)fcntl.h,$(VMSDIR)varargs.h,$(VMSDIR)unixlib.h +VMSOTHR = $(VMSDIR)Descrip.MMS,$(VMSDIR)vmsbuild.com,$(VMSDIR)version.com,\ + $(VMSDIR)gawk.hlp + +# Release of gawk +REL=2.13 +PATCHLVL=2 + +# dummy target to allow building "gawk" in addition to explicit "gawk.exe" +gawk : gawk.exe + write sys$output " GAWK " + +# rules to build gawk +gawk.exe : $(ALLOBJS) $(GNUOBJS) $(VMSOBJS) gawk.opt + $(LINK) $(LINKFLAGS) gawk.opt/options + +gawk.opt : $(MAKEFILE) # create linker options file + open/write opt gawk.opt ! ~ 'cat <<close >gawk.opt' + write opt "! GAWK -- Gnu AWK" + @ write opt "$(ALLOBJS)" + @ write opt "$(GNUOBJS)" + @ write opt "$(VMSOBJS)" + @ write opt "$(LIBS)" + @ write opt "psect_attr=environ,noshr !extern [noshare] char **" + @ write opt "stack=50 !preallocate more pages (default is 20)" + write opt "identification=""V$(REL).$(PATCHLVL)""" + close opt + +$(AWKOBJS) : awk.h config.h +$(VMSCODE) : awk.h config.h $(VMSDIR)vms.h +vms_misc.obj : $(VMSDIR)vms_misc.c +vms_popen.obj : $(VMSDIR)vms_popen.c +vms_fwrite.obj : $(VMSDIR)vms_fwrite.c +vms_args.obj : $(VMSDIR)vms_args.c +vms_gawk.obj : $(VMSDIR)vms_gawk.c +vms_cli.obj : $(VMSDIR)vms_cli.c +dfa.obj : awk.h config.h dfa.h +regex.obj : awk.h config.h regex.h +main.obj : patchlevel.h +awk_tab.obj : awk.h awk_tab.c + +# bison or yacc required +awk_tab.c : awk.y # foo.y :: yacc => y_tab.c, bison => foo_tab.c + @- if f$search("y_tab.c").nes."" then delete y_tab.c;* + - $(PARSERINIT) + $(PARSER) $(YFLAGS) $< + @- if f$search("y_tab.c").nes."" then rename/new_vers y_tab.c $@ !yacc + +##version.c : version.sh $(MAKEFILE) +## @$(VMSDIR)version.com "$(REL)" + +config.h : [.config]vms-conf.h + copy $< $@ + +# Alloca - C simulation +alloca.obj : alloca.c + $(CC) $(CFLAGS) /define=("STACK_DIRECTION=(-1)","exit=vms_exit") $< + +$(VMSCMD) : $(VMSDIR)gawk.cld + set command/object=$@ $(CLDFLAGS) $< + +# special target for loading the help text into a VMS help library +install.help : $(VMS)gawk.hlp + library/help $(HELPLIB) $< /log + +# miscellaneous other targets +tidy : + - if f$search("*.*;-1").nes."" then purge + - if f$search("[.*]*.*;-1").nes."" then purge [.*] + +clean : + - delete *.obj;*,gawk.opt;* + +spotless : clean tidy + - delete gawk.dvi;*,gawk.exe;*,[.support]texindex.exe;* + +# +# build gawk.dvi from within the 'support' subdirectory +# +gawk.dvi : [.support]texindex.exe gawk.texinfo + @ set default [.support] + @ write sys$output " Warnings from TeX are expected during the first pass" + TeX [-]gawk.texinfo + mcr []texindex gawk.cp gawk.fn gawk.ky gawk.pg gawk.tp gawk.vr + @ write sys$output " Second pass" + TeX [-]gawk.texinfo + mcr []texindex gawk.cp gawk.fn gawk.ky gawk.pg gawk.tp gawk.vr + @ write sys$output " Third (final) pass" + TeX [-]gawk.texinfo + -@ purge + -@ delete gawk.lis;,.aux;,gawk.%%;,.cps;,.fns;,.kys;,.pgs;,.toc;,.tps;,.vrs; + @ rename/new_vers gawk.dvi [-]*.* + @ set default [-] + +[.support]texindex.exe : [.support]texindex.c + @ set default [.support] + $(CC) /noOpt/noList/Define=("lines=tlines") texindex.c + $(LINK) /noMap texindex.obj,sys$library:vaxcrtl.olb/Lib + -@ delete texindex.obj;* + @ set default [-] + +#eof |