Home | History | Annotate | Line # | Download | only in dist
vmsbuild.com revision 1.1.1.4
      1  1.1.1.4  christos $! Id: vmsbuild.com,v 1.1 2000/11/21 00:38:46 tom Exp 
      2      1.1  christos $! VMS build-script for BYACC.  Requires installed C compiler
      3      1.1  christos $!
      4      1.1  christos $! Screen Configurations
      5      1.1  christos $! ---------------------
      6      1.1  christos $! To build BYACC, type:
      7      1.1  christos $!        $ @vmsbuild [BYACC [<compiler> [bld_target]]]
      8      1.1  christos $!
      9      1.1  christos $! where:
     10      1.1  christos $!        <compiler> :== { decc | vaxc }
     11      1.1  christos $!
     12      1.1  christos $! The default compiler on VAX hosts is vaxc, else decc (Alpha hosts).
     13      1.1  christos $!
     14      1.1  christos $! -----------------------------------------------------------
     15      1.1  christos $ hlp = f$edit("''p1'", "UPCASE")
     16      1.1  christos $ if "''hlp'" .eqs. "HELP" .or. -
     17      1.1  christos         "''hlp'" .eqs. "-H" .or. -
     18      1.1  christos                 "''hlp'" .eqs. "-?" .or. -
     19      1.1  christos                         "''hlp'" .eqs. "?" then gosub usage
     20      1.1  christos $ goto start
     21      1.1  christos $!
     22      1.1  christos $ vaxc_config:
     23      1.1  christos $    comp       = "__vaxc__=1"
     24      1.1  christos $    CFLAGS     = "/VAXC"
     25      1.1  christos $    DEFS       = ",HAVE_STRERROR"
     26      1.1  christos $    using_vaxc = 1
     27      1.1  christos $    return
     28      1.1  christos $!
     29      1.1  christos $ decc_config:
     30      1.1  christos $    comp   = "__decc__=1"
     31      1.1  christos $    CFLAGS = "/DECC/prefix=all"
     32      1.1  christos $    DEFS   = ",HAVE_ALARM,HAVE_STRERROR"
     33      1.1  christos $    return
     34      1.1  christos $!
     35      1.1  christos $ usage:
     36      1.1  christos $    write sys$output "usage: "
     37      1.1  christos $    write sys$output "      $ @vmsbuild [BYACC [{decc | vaxc} [<bldtarget>]]]"
     38      1.1  christos $    exit 2
     39      1.1  christos $!
     40      1.1  christos $ start:
     41      1.1  christos $! -----------------------------------------------------------
     42      1.1  christos $! pickup user's compiler choice, if any
     43      1.1  christos $! -----------------------------------------------------------
     44      1.1  christos $!
     45      1.1  christos $ comp = ""
     46      1.1  christos $ using_vaxc = 0
     47      1.1  christos $ if "''p2'" .nes. "" 
     48      1.1  christos $ then
     49      1.1  christos $    comp = f$edit(p2, "UPCASE")
     50      1.1  christos $    if "''comp'" .eqs. "VAXC"
     51      1.1  christos $    then
     52      1.1  christos $        gosub vaxc_config
     53      1.1  christos $    else
     54      1.1  christos $        if "''comp'" .eqs. "DECC"
     55      1.1  christos $        then
     56      1.1  christos $            gosub decc_config
     57      1.1  christos $        else
     58      1.1  christos $            gosub usage
     59      1.1  christos $        endif
     60      1.1  christos $    endif
     61      1.1  christos $ endif
     62      1.1  christos $! -----------------------------------------------------------
     63      1.1  christos $!      Build the option-file
     64      1.1  christos $!
     65      1.1  christos $ open/write optf vms_link.opt
     66      1.1  christos $ write optf "closure.obj"
     67      1.1  christos $ write optf "error.obj"
     68      1.1  christos $ write optf "lalr.obj"
     69      1.1  christos $ write optf "lr0.obj"
     70      1.1  christos $ write optf "mkpar.obj"
     71      1.1  christos $ write optf "output.obj"
     72      1.1  christos $ write optf "reader.obj"
     73      1.1  christos $ write optf "skeleton.obj"
     74      1.1  christos $ write optf "symtab.obj"
     75      1.1  christos $ write optf "verbose.obj"
     76      1.1  christos $ write optf "warshall.obj"
     77      1.1  christos $! ----------------------------------
     78      1.1  christos $! Look for the compiler used and specify architecture.
     79      1.1  christos $!
     80      1.1  christos $ CC = "CC"
     81      1.1  christos $ if f$getsyi("HW_MODEL").ge.1024
     82      1.1  christos $ then
     83      1.1  christos $  arch = "__alpha__=1"
     84      1.1  christos $  if "''comp'" .eqs. "" then gosub decc_config
     85      1.1  christos $ else
     86      1.1  christos $  arch = "__vax__=1"
     87      1.1  christos $  if "''comp'" .nes. "" then goto screen_config
     88      1.1  christos $  if f$search("SYS$SYSTEM:VAXC.EXE").nes.""
     89      1.1  christos $  then
     90      1.1  christos $   gosub vaxc_config
     91      1.1  christos $  else
     92      1.1  christos $   if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
     93      1.1  christos $   then
     94      1.1  christos $    gosub decc_config
     95      1.1  christos $   else
     96      1.1  christos $    DEFS = ",HAVE_STRERROR"
     97      1.1  christos $    if f$trnlnm("GNU_CC").eqs.""
     98      1.1  christos $    then
     99      1.1  christos $     write sys$output "C compiler required to rebuild BYACC"
    100      1.1  christos $     close optf
    101      1.1  christos $     exit
    102      1.1  christos $    else
    103      1.1  christos $     write optf "gnu_cc:[000000]gcclib.olb/lib"
    104      1.1  christos $     comp = "__gcc__=1"
    105      1.1  christos $     CC = "GCC"
    106      1.1  christos $    endif
    107      1.1  christos $   endif
    108      1.1  christos $  endif
    109      1.1  christos $ endif
    110      1.1  christos $!
    111      1.1  christos $ screen_config:
    112      1.1  christos $!
    113      1.1  christos $ if using_vaxc .eq. 1 then write optf "sys$library:vaxcrtl.exe/share"
    114      1.1  christos $ close optf
    115      1.1  christos $! -------------- vms_link.opt is created -------------
    116      1.1  christos $ if f$edit("''p1'", "UPCASE") .eqs. "VMS_LINK.OPT"
    117      1.1  christos $ then
    118      1.1  christos $!  mms called this script to build vms_link.opt.  all done
    119      1.1  christos $   exit
    120      1.1  christos $ endif
    121      1.1  christos $!
    122      1.1  christos $ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
    123      1.1  christos $ then
    124      1.1  christos $!  can also use /Debug /Listing, /Show=All
    125      1.1  christos $
    126      1.1  christos $   CFLAGS := 'CFLAGS/Diagnostics /Define=("''DEFS'") /Include=([])
    127      1.1  christos $
    128      1.1  christos $  	if "''p3'" .nes. "" then goto 'p3
    129      1.1  christos $!
    130      1.1  christos $!
    131      1.1  christos $ all :
    132      1.1  christos $!
    133      1.1  christos $	call make closure
    134      1.1  christos $	call make error
    135      1.1  christos $	call make lalr
    136      1.1  christos $	call make lr0
    137      1.1  christos $	call make main
    138      1.1  christos $	call make mkpar
    139      1.1  christos $	call make output
    140      1.1  christos $	call make reader
    141      1.1  christos $	call make skeleton
    142      1.1  christos $	call make symtab
    143      1.1  christos $	call make verbose
    144      1.1  christos $	call make warshall
    145      1.1  christos $!
    146      1.1  christos $	link /exec='target/map/cross main.obj, vms_link/opt
    147      1.1  christos $	goto build_last
    148      1.1  christos $!
    149      1.1  christos $ install :
    150      1.1  christos $	WRITE SYS$ERROR "** no rule for install"
    151      1.1  christos $	goto build_last
    152      1.1  christos $!
    153      1.1  christos $ clobber :
    154      1.1  christos $	if f$search("BYACC.com") .nes. "" then delete BYACC.com;*
    155      1.1  christos $	if f$search("*.exe") .nes. "" then delete *.exe;*
    156      1.1  christos $! fallthru
    157      1.1  christos $!
    158      1.1  christos $ clean :
    159      1.1  christos $	if f$search("*.obj") .nes. "" then delete *.obj;*
    160      1.1  christos $	if f$search("*.bak") .nes. "" then delete *.bak;*
    161      1.1  christos $	if f$search("*.lis") .nes. "" then delete *.lis;*
    162      1.1  christos $	if f$search("*.log") .nes. "" then delete *.log;*
    163      1.1  christos $	if f$search("*.map") .nes. "" then delete *.map;*
    164      1.1  christos $	if f$search("*.opt") .nes. "" then delete *.opt;*
    165      1.1  christos $! fallthru
    166      1.1  christos $!
    167      1.1  christos $ build_last :
    168      1.1  christos $	if f$search("*.dia") .nes. "" then delete *.dia;*
    169      1.1  christos $	if f$search("*.lis") .nes. "" then purge *.lis
    170      1.1  christos $	if f$search("*.obj") .nes. "" then purge *.obj
    171      1.1  christos $	if f$search("*.map") .nes. "" then purge *.map
    172      1.1  christos $	if f$search("*.opt") .nes. "" then purge *.opt
    173      1.1  christos $	if f$search("*.exe") .nes. "" then purge *.exe
    174      1.1  christos $	if f$search("*.log") .nes. "" then purge *.log
    175      1.1  christos $! fallthru
    176      1.1  christos $!
    177      1.1  christos $ vms_link_opt :
    178      1.1  christos $	exit 1
    179      1.1  christos $!
    180      1.1  christos $! Runs BYACC from the current directory (used for testing)
    181      1.1  christos $ byacc_com :
    182      1.1  christos $	if "''f$search("BYACC.com")'" .nes. "" then delete BYACC.com;*
    183      1.1  christos $	copy nl: BYACC.com
    184      1.1  christos $	open/append  test_script BYACC.com
    185      1.1  christos $	write test_script "$ temp = f$environment(""procedure"")"
    186      1.1  christos $	write test_script "$ temp = temp -"
    187      1.1  christos $	write test_script "		- f$parse(temp,,,""version"",""syntax_only"") -"
    188      1.1  christos $	write test_script "		- f$parse(temp,,,""type"",""syntax_only"")"
    189      1.1  christos $	write test_script "$ BYACC :== $ 'temp'.exe"
    190      1.1  christos $	write test_script "$ define/user_mode sys$input  sys$command"
    191      1.1  christos $	write test_script "$ define/user_mode sys$output sys$command"
    192      1.1  christos $	write test_script "$ BYACC 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8"
    193      1.1  christos $	close test_script
    194      1.1  christos $	write sys$output "** made BYACC.com"
    195      1.1  christos $	exit
    196      1.1  christos $!
    197      1.1  christos $  else
    198      1.1  christos $   mms/ignore=warning/macro=('comp','mmstar','arch') 'p3
    199      1.1  christos $  endif
    200      1.1  christos $ exit
    201      1.1  christos $ make: subroutine
    202      1.1  christos $	if f$search("''p1'.obj") .eqs. ""
    203      1.1  christos $	then
    204      1.1  christos $		write sys$output "compiling ''p1'"
    205      1.1  christos $		'CC 'CFLAGS 'p1.c
    206      1.1  christos $		if f$search("''p1'.dia") .nes. "" then delete 'p1.dia;*
    207      1.1  christos $	endif
    208      1.1  christos $exit
    209      1.1  christos $	return
    210      1.1  christos $ endsubroutine
    211