aboutsummaryrefslogtreecommitdiffstats
path: root/vms/descrip.mms
diff options
context:
space:
mode:
Diffstat (limited to 'vms/descrip.mms')
-rw-r--r--vms/descrip.mms200
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