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