1 $! libiberty/vmsbuild.com -- build liberty.olb for VMS host, VMS target
3 $ CC = "gcc /noVerbose/Debug/Incl=([],[-.include])"
4 $ LIBR = "library /Obj"
6 $ DELETE= "delete /noConfirm"
7 $ SEARCH= "search /Exact"
8 $ ECHO = "write sys$output"
9 $ ABORT = "exit %x002C"
11 $ LIB_NAME = "liberty.olb" !this is what we're going to construct
12 $ WORK_LIB = "new-lib.olb" !used to guard against an incomplete build
14 $! manually copied from Makefile.in
15 $ REQUIRED_OFILES = "argv.o basename.o concat.o cplus-dem.o fdmatch.o "-
16 + "getopt.o getopt1.o getruntime.o hex.o "-
17 + "floatformat.o obstack.o spaces.o strerror.o strsignal.o "-
18 + "vasprintf.o xatexit.o xexit.o xmalloc.o xstrerror.o"
19 $! anything not caught by link+search of dummy.* should be added here
22 $! move to the directory which contains this command procedure
23 $ old_dir = f$environ("DEFAULT")
24 $ new_dir = f$parse("_._;",f$environ("PROCEDURE")) - "_._;"
25 $ set default 'new_dir'
27 $ ECHO "Starting libiberty build..."
29 /* libiberty config.h for VMS */
30 #define NEED_sys_siglist
33 $ if f$search("alloca-conf.h").eqs."" then -
34 copy alloca-norm.h alloca-conf.h
35 $ LIBR 'WORK_LIB' /Create
37 $! first pass: compile "required" modules
38 $ ofiles = REQUIRED_OFILES + " " + EXTRA_OFILES
41 $! second pass: process dummy.c, using the first pass' results
42 $ ECHO " now checking run-time library for missing functionality"
43 $ if f$search("dummy.obj").nes."" then DELETE dummy.obj;*
44 $ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc
45 $ define/noLog sys$output _NL: ! driver's use of multiple image activation
46 $ on error then continue
48 $ deassign sys$error !restore, more or less
50 $ if f$search("dummy.obj").eqs."" then goto pass2_failure1
51 $! link dummy.obj, capturing full linker feedback in dummy.map
52 $ oldmsg = f$environ("MESSAGE")
53 $ set message /Facility/Severity/Identification/Text
54 $ define/User sys$output _NL:
55 $ define/User sys$error _NL:
56 $ LINK/Map=dummy.map/noExe dummy.obj,'WORK_LIB'/Libr,-
57 gnu_cc:[000000]gcclib.olb/Libr,sys$library:vaxcrtl.olb/Libr
58 $ set message 'oldmsg'
59 $ if f$search("dummy.map").eqs."" then goto pass2_failure2
61 $ SEARCH dummy.map "%LINK-I-UDFSYM" /Output=dummy.list
63 $ ECHO " check completed"
64 $! we now have a file with one entry per line of unresolvable symbols
66 $ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
67 $ open/Read ifile$ dummy.list
68 $iloop: read/End=idone ifile$ iline
69 $ iline = f$edit(iline,"COMPRESS,TRIM,LOWERCASE")
70 $ ofiles = ofiles + " " + f$element(1," ",iline) + ".o"
75 $! third pass: compile "missing" modules collected in pass 2
79 $ LIBR 'WORK_LIB' /Compress /Output='LIB_NAME' !new-lib.olb -> liberty.olb
83 $ ECHO "Completed libiberty build."
87 $ COPY LIBERTY.OLB GNU_CC:[000000]
88 so that this run-time library resides in the same location as gcc's
89 support library. When building gas, be sure to leave the original
90 copy of liberty.olb here so that gas's build procedure can find it.
92 $ set default 'old_dir'
96 $! compile each element of the space-delimited list 'ofiles'
99 $ ofiles = f$edit(ofiles,"COMPRESS,TRIM")
102 $ f = f$element(i," ",ofiles)
103 $ if f.eqs." " then goto odone
104 $ f = f - ".o" !strip dummy suffix
107 $ LIBR 'WORK_LIB' 'f'.obj /Insert
116 $! if we reach here, dummy.c failed to compile and we're really stuck
119 Cannot compile the library contents checker (dummy.c + functions.def),
122 $! attempt the compile again, without suppressing diagnostic messages this time
123 $ on error then ABORT +0*f$verify(v)
126 $ ABORT +0*f$verify(v) !'f$verify(0)'
129 $! should never reach here..
132 Cannot link the library contents checker (dummy.obj), so cannot continue!
134 $! attempt the link again, without suppressing diagnostic messages this time
135 $ on error then ABORT +0*f$verify(v)
137 $ LINK/Map=dummy.map/noExe dummy.obj,'WORK_LIB'/Libr,-
138 gnu_cc:[000000]gcclib.olb/Libr,sys$library:vaxcrtl.olb/Libr
139 $ ABORT +0*f$verify(v) !'f$verify(0)'