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