xref: /freebsd/contrib/byacc/vmsbuild.com (revision 6cec9cad762b6476313fb1f8e931a1647822db6b)
1*0c8de5b0SBaptiste Daroussin$! $Id: vmsbuild.com,v 1.2 2014/04/06 19:08:57 tom Exp $
298e903e7SBaptiste Daroussin$! VMS build-script for BYACC.  Requires installed C compiler
398e903e7SBaptiste Daroussin$!
498e903e7SBaptiste Daroussin$! Screen Configurations
598e903e7SBaptiste Daroussin$! ---------------------
698e903e7SBaptiste Daroussin$! To build BYACC, type:
798e903e7SBaptiste Daroussin$!        $ @vmsbuild [BYACC [<compiler> [bld_target]]]
898e903e7SBaptiste Daroussin$!
998e903e7SBaptiste Daroussin$! where:
1098e903e7SBaptiste Daroussin$!        <compiler> :== { decc | vaxc }
1198e903e7SBaptiste Daroussin$!
1298e903e7SBaptiste Daroussin$! The default compiler on VAX hosts is vaxc, else decc (Alpha hosts).
1398e903e7SBaptiste Daroussin$!
1498e903e7SBaptiste Daroussin$! -----------------------------------------------------------
1598e903e7SBaptiste Daroussin$ hlp = f$edit("''p1'", "UPCASE")
1698e903e7SBaptiste Daroussin$ if "''hlp'" .eqs. "HELP" .or. -
1798e903e7SBaptiste Daroussin        "''hlp'" .eqs. "-H" .or. -
1898e903e7SBaptiste Daroussin                "''hlp'" .eqs. "-?" .or. -
1998e903e7SBaptiste Daroussin                        "''hlp'" .eqs. "?" then gosub usage
2098e903e7SBaptiste Daroussin$ goto start
2198e903e7SBaptiste Daroussin$!
2298e903e7SBaptiste Daroussin$ vaxc_config:
2398e903e7SBaptiste Daroussin$    comp       = "__vaxc__=1"
2498e903e7SBaptiste Daroussin$    CFLAGS     = "/VAXC"
2598e903e7SBaptiste Daroussin$    DEFS       = ",HAVE_STRERROR"
2698e903e7SBaptiste Daroussin$    using_vaxc = 1
2798e903e7SBaptiste Daroussin$    return
2898e903e7SBaptiste Daroussin$!
2998e903e7SBaptiste Daroussin$ decc_config:
3098e903e7SBaptiste Daroussin$    comp   = "__decc__=1"
3198e903e7SBaptiste Daroussin$    CFLAGS = "/DECC/prefix=all"
3298e903e7SBaptiste Daroussin$    DEFS   = ",HAVE_ALARM,HAVE_STRERROR"
3398e903e7SBaptiste Daroussin$    return
3498e903e7SBaptiste Daroussin$!
3598e903e7SBaptiste Daroussin$ usage:
3698e903e7SBaptiste Daroussin$    write sys$output "usage: "
3798e903e7SBaptiste Daroussin$    write sys$output "      $ @vmsbuild [BYACC [{decc | vaxc} [<bldtarget>]]]"
3898e903e7SBaptiste Daroussin$    exit 2
3998e903e7SBaptiste Daroussin$!
4098e903e7SBaptiste Daroussin$ start:
4198e903e7SBaptiste Daroussin$! -----------------------------------------------------------
4298e903e7SBaptiste Daroussin$! pickup user's compiler choice, if any
4398e903e7SBaptiste Daroussin$! -----------------------------------------------------------
4498e903e7SBaptiste Daroussin$!
4598e903e7SBaptiste Daroussin$ comp = ""
4698e903e7SBaptiste Daroussin$ using_vaxc = 0
4798e903e7SBaptiste Daroussin$ if "''p2'" .nes. ""
4898e903e7SBaptiste Daroussin$ then
4998e903e7SBaptiste Daroussin$    comp = f$edit(p2, "UPCASE")
5098e903e7SBaptiste Daroussin$    if "''comp'" .eqs. "VAXC"
5198e903e7SBaptiste Daroussin$    then
5298e903e7SBaptiste Daroussin$        gosub vaxc_config
5398e903e7SBaptiste Daroussin$    else
5498e903e7SBaptiste Daroussin$        if "''comp'" .eqs. "DECC"
5598e903e7SBaptiste Daroussin$        then
5698e903e7SBaptiste Daroussin$            gosub decc_config
5798e903e7SBaptiste Daroussin$        else
5898e903e7SBaptiste Daroussin$            gosub usage
5998e903e7SBaptiste Daroussin$        endif
6098e903e7SBaptiste Daroussin$    endif
6198e903e7SBaptiste Daroussin$ endif
6298e903e7SBaptiste Daroussin$! -----------------------------------------------------------
6398e903e7SBaptiste Daroussin$!      Build the option-file
6498e903e7SBaptiste Daroussin$!
6598e903e7SBaptiste Daroussin$ open/write optf vms_link.opt
6698e903e7SBaptiste Daroussin$ write optf "closure.obj"
6798e903e7SBaptiste Daroussin$ write optf "error.obj"
6898e903e7SBaptiste Daroussin$ write optf "lalr.obj"
6998e903e7SBaptiste Daroussin$ write optf "lr0.obj"
7098e903e7SBaptiste Daroussin$ write optf "mkpar.obj"
7198e903e7SBaptiste Daroussin$ write optf "output.obj"
7298e903e7SBaptiste Daroussin$ write optf "reader.obj"
73*0c8de5b0SBaptiste Daroussin$ write optf "yaccpar.obj"
7498e903e7SBaptiste Daroussin$ write optf "symtab.obj"
7598e903e7SBaptiste Daroussin$ write optf "verbose.obj"
7698e903e7SBaptiste Daroussin$ write optf "warshall.obj"
7798e903e7SBaptiste Daroussin$! ----------------------------------
7898e903e7SBaptiste Daroussin$! Look for the compiler used and specify architecture.
7998e903e7SBaptiste Daroussin$!
8098e903e7SBaptiste Daroussin$ CC = "CC"
8198e903e7SBaptiste Daroussin$ if f$getsyi("HW_MODEL").ge.1024
8298e903e7SBaptiste Daroussin$ then
8398e903e7SBaptiste Daroussin$  arch = "__alpha__=1"
8498e903e7SBaptiste Daroussin$  if "''comp'" .eqs. "" then gosub decc_config
8598e903e7SBaptiste Daroussin$ else
8698e903e7SBaptiste Daroussin$  arch = "__vax__=1"
8798e903e7SBaptiste Daroussin$  if "''comp'" .nes. "" then goto screen_config
8898e903e7SBaptiste Daroussin$  if f$search("SYS$SYSTEM:VAXC.EXE").nes.""
8998e903e7SBaptiste Daroussin$  then
9098e903e7SBaptiste Daroussin$   gosub vaxc_config
9198e903e7SBaptiste Daroussin$  else
9298e903e7SBaptiste Daroussin$   if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
9398e903e7SBaptiste Daroussin$   then
9498e903e7SBaptiste Daroussin$    gosub decc_config
9598e903e7SBaptiste Daroussin$   else
9698e903e7SBaptiste Daroussin$    DEFS = ",HAVE_STRERROR"
9798e903e7SBaptiste Daroussin$    if f$trnlnm("GNU_CC").eqs.""
9898e903e7SBaptiste Daroussin$    then
9998e903e7SBaptiste Daroussin$     write sys$output "C compiler required to rebuild BYACC"
10098e903e7SBaptiste Daroussin$     close optf
10198e903e7SBaptiste Daroussin$     exit
10298e903e7SBaptiste Daroussin$    else
10398e903e7SBaptiste Daroussin$     write optf "gnu_cc:[000000]gcclib.olb/lib"
10498e903e7SBaptiste Daroussin$     comp = "__gcc__=1"
10598e903e7SBaptiste Daroussin$     CC = "GCC"
10698e903e7SBaptiste Daroussin$    endif
10798e903e7SBaptiste Daroussin$   endif
10898e903e7SBaptiste Daroussin$  endif
10998e903e7SBaptiste Daroussin$ endif
11098e903e7SBaptiste Daroussin$!
11198e903e7SBaptiste Daroussin$ screen_config:
11298e903e7SBaptiste Daroussin$!
11398e903e7SBaptiste Daroussin$ if using_vaxc .eq. 1 then write optf "sys$library:vaxcrtl.exe/share"
11498e903e7SBaptiste Daroussin$ close optf
11598e903e7SBaptiste Daroussin$! -------------- vms_link.opt is created -------------
11698e903e7SBaptiste Daroussin$ if f$edit("''p1'", "UPCASE") .eqs. "VMS_LINK.OPT"
11798e903e7SBaptiste Daroussin$ then
11898e903e7SBaptiste Daroussin$!  mms called this script to build vms_link.opt.  all done
11998e903e7SBaptiste Daroussin$   exit
12098e903e7SBaptiste Daroussin$ endif
12198e903e7SBaptiste Daroussin$!
12298e903e7SBaptiste Daroussin$ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
12398e903e7SBaptiste Daroussin$ then
12498e903e7SBaptiste Daroussin$!  can also use /Debug /Listing, /Show=All
12598e903e7SBaptiste Daroussin$
12698e903e7SBaptiste Daroussin$   CFLAGS := 'CFLAGS/Diagnostics /Define=("''DEFS'") /Include=([])
12798e903e7SBaptiste Daroussin$
12898e903e7SBaptiste Daroussin$  	if "''p3'" .nes. "" then goto 'p3
12998e903e7SBaptiste Daroussin$!
13098e903e7SBaptiste Daroussin$!
13198e903e7SBaptiste Daroussin$ all :
13298e903e7SBaptiste Daroussin$!
13398e903e7SBaptiste Daroussin$	call make closure
13498e903e7SBaptiste Daroussin$	call make error
13598e903e7SBaptiste Daroussin$	call make lalr
13698e903e7SBaptiste Daroussin$	call make lr0
13798e903e7SBaptiste Daroussin$	call make main
13898e903e7SBaptiste Daroussin$	call make mkpar
13998e903e7SBaptiste Daroussin$	call make output
14098e903e7SBaptiste Daroussin$	call make reader
141*0c8de5b0SBaptiste Daroussin$	call make yaccpar
14298e903e7SBaptiste Daroussin$	call make symtab
14398e903e7SBaptiste Daroussin$	call make verbose
14498e903e7SBaptiste Daroussin$	call make warshall
14598e903e7SBaptiste Daroussin$!
14698e903e7SBaptiste Daroussin$	link /exec='target/map/cross main.obj, vms_link/opt
14798e903e7SBaptiste Daroussin$	goto build_last
14898e903e7SBaptiste Daroussin$!
14998e903e7SBaptiste Daroussin$ install :
15098e903e7SBaptiste Daroussin$	WRITE SYS$ERROR "** no rule for install"
15198e903e7SBaptiste Daroussin$	goto build_last
15298e903e7SBaptiste Daroussin$!
15398e903e7SBaptiste Daroussin$ clobber :
15498e903e7SBaptiste Daroussin$	if f$search("BYACC.com") .nes. "" then delete BYACC.com;*
15598e903e7SBaptiste Daroussin$	if f$search("*.exe") .nes. "" then delete *.exe;*
15698e903e7SBaptiste Daroussin$! fallthru
15798e903e7SBaptiste Daroussin$!
15898e903e7SBaptiste Daroussin$ clean :
15998e903e7SBaptiste Daroussin$	if f$search("*.obj") .nes. "" then delete *.obj;*
16098e903e7SBaptiste Daroussin$	if f$search("*.bak") .nes. "" then delete *.bak;*
16198e903e7SBaptiste Daroussin$	if f$search("*.lis") .nes. "" then delete *.lis;*
16298e903e7SBaptiste Daroussin$	if f$search("*.log") .nes. "" then delete *.log;*
16398e903e7SBaptiste Daroussin$	if f$search("*.map") .nes. "" then delete *.map;*
16498e903e7SBaptiste Daroussin$	if f$search("*.opt") .nes. "" then delete *.opt;*
16598e903e7SBaptiste Daroussin$! fallthru
16698e903e7SBaptiste Daroussin$!
16798e903e7SBaptiste Daroussin$ build_last :
16898e903e7SBaptiste Daroussin$	if f$search("*.dia") .nes. "" then delete *.dia;*
16998e903e7SBaptiste Daroussin$	if f$search("*.lis") .nes. "" then purge *.lis
17098e903e7SBaptiste Daroussin$	if f$search("*.obj") .nes. "" then purge *.obj
17198e903e7SBaptiste Daroussin$	if f$search("*.map") .nes. "" then purge *.map
17298e903e7SBaptiste Daroussin$	if f$search("*.opt") .nes. "" then purge *.opt
17398e903e7SBaptiste Daroussin$	if f$search("*.exe") .nes. "" then purge *.exe
17498e903e7SBaptiste Daroussin$	if f$search("*.log") .nes. "" then purge *.log
17598e903e7SBaptiste Daroussin$! fallthru
17698e903e7SBaptiste Daroussin$!
17798e903e7SBaptiste Daroussin$ vms_link_opt :
17898e903e7SBaptiste Daroussin$	exit 1
17998e903e7SBaptiste Daroussin$!
18098e903e7SBaptiste Daroussin$! Runs BYACC from the current directory (used for testing)
18198e903e7SBaptiste Daroussin$ byacc_com :
18298e903e7SBaptiste Daroussin$	if "''f$search("BYACC.com")'" .nes. "" then delete BYACC.com;*
18398e903e7SBaptiste Daroussin$	copy nl: BYACC.com
18498e903e7SBaptiste Daroussin$	open/append  test_script BYACC.com
18598e903e7SBaptiste Daroussin$	write test_script "$ temp = f$environment(""procedure"")"
18698e903e7SBaptiste Daroussin$	write test_script "$ temp = temp -"
18798e903e7SBaptiste Daroussin$	write test_script "		- f$parse(temp,,,""version"",""syntax_only"") -"
18898e903e7SBaptiste Daroussin$	write test_script "		- f$parse(temp,,,""type"",""syntax_only"")"
18998e903e7SBaptiste Daroussin$	write test_script "$ BYACC :== $ 'temp'.exe"
19098e903e7SBaptiste Daroussin$	write test_script "$ define/user_mode sys$input  sys$command"
19198e903e7SBaptiste Daroussin$	write test_script "$ define/user_mode sys$output sys$command"
19298e903e7SBaptiste Daroussin$	write test_script "$ BYACC 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8"
19398e903e7SBaptiste Daroussin$	close test_script
19498e903e7SBaptiste Daroussin$	write sys$output "** made BYACC.com"
19598e903e7SBaptiste Daroussin$	exit
19698e903e7SBaptiste Daroussin$!
19798e903e7SBaptiste Daroussin$  else
19898e903e7SBaptiste Daroussin$   mms/ignore=warning/macro=('comp','mmstar','arch') 'p3
19998e903e7SBaptiste Daroussin$  endif
20098e903e7SBaptiste Daroussin$ exit
20198e903e7SBaptiste Daroussin$ make: subroutine
20298e903e7SBaptiste Daroussin$	if f$search("''p1'.obj") .eqs. ""
20398e903e7SBaptiste Daroussin$	then
20498e903e7SBaptiste Daroussin$		write sys$output "compiling ''p1'"
20598e903e7SBaptiste Daroussin$		'CC 'CFLAGS 'p1.c
20698e903e7SBaptiste Daroussin$		if f$search("''p1'.dia") .nes. "" then delete 'p1.dia;*
20798e903e7SBaptiste Daroussin$	endif
20898e903e7SBaptiste Daroussin$exit
20998e903e7SBaptiste Daroussin$	return
21098e903e7SBaptiste Daroussin$ endsubroutine
211