Home | History | Annotate | Download | only in VMS
      1 $! VMS build procedure for flex 2.5.x;
      2 $ v = 'f$verify(0)' 
      3 $!
      4 $! usage:
      5 $!  $ @[.MISC.VMS]BUILD.COM compiler parser [test]
      6 $!	where `compiler' is either "GNUC" or "DECC" or "VAXC" or empty
      7 $!	  and `parser' is either "BISON" or "BYACC" or "YACC" or empty
      8 $!	  and `[test]' is either "CHECK-ONLY" or "NO-CHECK" or empty
      9 $!	empty compiler defaults to VAX C (even under Alpha/VMS);
     10 $!	special "LINK" compiler value does link without compilation;
     11 $!	empty parser defaults to using supplied parse code in [.MISC];
     12 $!	optional test is performed by default.
     13 $!
     14 $
     15 $! we start from [.MISC.VMS], then move to the main source directory
     16 $ where = f$parse("_._;",f$environ("PROCEDURE")) - "_._;"
     17 $ set default 'where'
     18 $ brkt = f$extract(f$length(where)-1,1,where)
     19 $ if f$locate(".MISC.VMS"+brkt,where).lt.f$length(where) then -
     20 	set default 'f$string(f$extract(0,1,f$dir()) + "-.-" + brkt)'
     21 $
     22 $ p1 := 'p1'
     23 $ p2 := 'p2'
     24 $ p3 := 'p3'
     25 $ if p1.eqs."LINK" then goto link
     26 $ if p3.eqs."CHECK-ONLY" then goto check
     27 $ p2 = p2 - "_PARSER"
     28 $!
     29 $ CDEFS = "/Define=(""VMS"")"		! =(""VMS"",""DEFAULT_CSIZE=256"")
     30 $!
     31 $ if p1.eqs."GNUC"
     32 $ then	CC	= "gcc"
     33 $	CFLAGS	= "/noList/Opt=2/Debug/noVerbose"
     34 $	LIBS	= "gnu_cc:[000000]gcclib.olb/Library, sys$library:vaxcrtl.olb/Library"
     35 $ else	CC	= "cc"
     36 $  if p1.eqs."DECC"
     37 $  then CFLAGS	= "/noList/Prefix=All"
     38 $	LIBS	= ""
     39 $	if f$trnlnm("DECC$CC_DEFAULT").nes."" then CC = CC + "/DECC"
     40 $  else CFLAGS	= "/noList/Optimize=noInline"
     41 $	LIBS	= "sys$share:vaxcrtl.exe/Shareable"
     42 $	if f$trnlnm("DECC$CC_DEFAULT").nes."" then CC = CC + "/VAXC"
     43 $	if p1.nes."" .and. p1.nes."VAXC" then  exit %x002C
     44 $  endif
     45 $ endif
     46 $!
     47 $	no_parser = 0
     48 $ if p2.eqs."BISON"
     49 $ then	YACC	  = "bison"
     50 $	YACCFLAGS = "/Defines/Fixed_Outfiles"
     51 $	ALLOCA	  = ",[]alloca.obj"
     52 $ else
     53 $	YACCFLAGS = "-d"
     54 $	ALLOCA	  = ""
     55 $  if p2.eqs."BYACC" .or. p2.eqs."YACC"
     56 $  then	YACC	  = f$edit(p2,"LOWERCASE")
     57 $  else	YACC	  = "! yacc"
     58 $	if p2.nes."" .and. p2.nes."NO" .and. p2.nes."NONE" then	exit %x002C
     59 $	no_parser = 1
     60 $  endif
     61 $ endif
     62 $!
     63 $ ECHO	 = "write sys$output"
     64 $ COPY	 = "copy_"
     65 $ MOVE	 = "rename_/New_Vers"
     66 $ MUNG	 = "search_/Exact/Match=NOR"
     67 $ PURGE	 = "purge_/noConfirm/noLog"
     68 $ REMOVE = "delete_/noConfirm/noLog"
     69 $ TPU	 = "edit_/TPU/noJournal/noDisplay/noSection"
     70 $!
     71 $ if v then set verify
     72 $!
     73 $ 'COPY' [.misc.vms]vms-conf.h config.h
     74 $ 'COPY' [.misc.vms]vms-code.c vms-code.c
     75 $ 'COPY' [.misc]flex.man flex.doc
     76 $ if ALLOCA.nes."" then 'COPY' [.MISC]alloca.c alloca.c
     77 $ 'COPY' initscan.c scan.c	!make.bootstrap
     78 $!
     79 $ if f$search("skel.c").nes."" then -
     80      if f$cvtime(f$file_attr("skel.c","RDT")).gts. -
     81 	f$cvtime(f$file_attr("flex.skl","RDT")) then goto skip_mkskel
     82 $ 'TPU' /Command=[.misc.vms]mkskel.tpu flex.skl /Output=skel.c
     83 $skip_mkskel:
     84 $!
     85 $ if f$search("parse.c").nes."" .and. f$search("parse.h").nes."" then -
     86      if f$cvtime(f$file_attr("parse.c","RDT")).gts. -
     87 	f$cvtime(f$file_attr("parse.y","RDT")) then goto skip_yacc
     88 $ if f$search("y_tab.%").nes."" then 'REMOVE' y_tab.%;*
     89 $ if no_parser
     90 $ then	'COPY' [.misc]parse.% sys$disk:[]y_tab.*
     91 $ else	'YACC' 'YACCFLAGS' parse.y
     92 $ endif
     93 $ 'MUNG' y_tab.c "#module","#line" /Output=parse.c
     94 $ 'REMOVE' y_tab.c;*
     95 $ 'MOVE' y_tab.h parse.h
     96 $skip_yacc:
     97 $!
     98 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] ccl.c
     99 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] dfa.c
    100 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] ecs.c
    101 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] gen.c
    102 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] main.c
    103 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] misc.c
    104 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] nfa.c
    105 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] parse.c
    106 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] scan.c
    107 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] skel.c
    108 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] sym.c
    109 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] tblcmp.c
    110 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] yylex.c
    111 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] vms-code.c
    112 $ if ALLOCA.nes."" then -	!bison
    113   'CC' 'CFLAGS' /Define=("STACK_DIRECTION=-1","xmalloc=yy_flex_xmalloc") alloca.c
    114 $!
    115 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] libmain.c
    116 $ 'CC' 'CFLAGS' 'CDEFS' /Include=[] libyywrap.c
    117 $ library/Obj flexlib.olb/Create libmain.obj,libyywrap.obj/Insert
    118 $ if f$search("flexlib.olb;-1").nes."" then 'PURGE' flexlib.olb
    119 $!
    120 $ open/Write optfile sys$disk:[]crtl.opt
    121 $ write optfile LIBS
    122 $ close optfile
    123 $ if f$search("crtl.opt;-1").nes."" then 'PURGE' crtl.opt
    124 $!
    125 $ version = "# flex ""2.5"""	!default, overridden by version.h
    126 $ open/Read/Error=v_h_2 hfile version.h
    127 $ read/End=v_h_1 hfile version
    128 $v_h_1: close/noLog hfile
    129 $v_h_2: version = f$element(1,"""",version)
    130 $ open/Write optfile sys$disk:[]ident.opt
    131 $ write optfile "identification=""flex ''version'"""
    132 $ close optfile
    133 $ if f$search("ident.opt;-1").nes."" then 'PURGE' ident.opt
    134 $!
    135 $link:
    136 $ link/noMap/Exe=flex.exe ccl.obj,dfa.obj,ecs.obj,gen.obj,main.obj,misc.obj,-
    137 	nfa.obj,parse.obj,scan.obj,skel.obj,sym.obj,tblcmp.obj,yylex.obj,-
    138 	vms-code.obj 'ALLOCA' ,flexlib.olb/Lib,-
    139 	sys$disk:[]crtl.opt/Opt,sys$disk:[]ident.opt/Opt
    140 $!
    141 $ if p3.eqs."NO-CHECK" .or. p3.eqs."NOCHECK" then goto done
    142 $
    143 $check:
    144 $ 'ECHO' ""
    145 $ 'ECHO' "  Checking with COMPRESSION="""""
    146 $ mcr sys$disk:[]flex.exe -t -p  scan.l > scan.chk
    147 $ diff_/Output=_NL:/Maximum_Diff=1 scan.c scan.chk
    148 $ if $status
    149 $ then	'ECHO' "  Test passed."
    150 $	'REMOVE' scan.chk;*
    151 $ else	'ECHO' "? Test failed!"
    152 $ endif
    153 $
    154 $done:
    155 $ exit
    156