2 $! This file sets things up to build gas on a VMS system to generate object
3 $! files for a VMS system. We do not use the configure script, since we
4 $! do not have /bin/sh to execute it.
8 $ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
9 $ arch = f$element(arch_indx,"|","|VAX|Alpha|")
22 $ DELETE = "delete/noConfirm"
23 $ ECHO = "write sys$output"
25 $! Target specific information
26 $ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h"
27 $ call make "targ-env.h" "[.config]te-''emulation'.h"
29 $! Code to handle the object file format.
30 $ call make "obj-format.h" "[.config]obj-''obj_format'.h"
32 $! (not currently used for vax or alpha)
33 $ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h"
36 $! Create the file version.opt, which helps identify the executable.
38 $if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
39 $search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp
40 $open ifile$ config-gas-tmp.tmp
43 $DELETE config-gas-tmp.tmp;*
44 $! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts.
45 $ijk=f$locate(",",line)+2
46 $line=f$extract(ijk,f$length(line)-ijk,line)
47 $ijk=f$locate(")",line)
48 $line=f$extract(0,ijk,line)
50 $ if f$search("version.opt").nes."" then DELETE version.opt;*
51 $copy _NL: version.opt
52 $open/Append ifile$ version.opt
53 $write ifile$ "identification="+""""+line+""""
56 $! Now write config.h.
58 $ if f$search("config.h").nes."" then DELETE config.h;*
60 $open/Append ifile$ config.h
61 $write ifile$ "/* config.h. Generated by config-gas.com. */
62 $write ifile$ "#ifndef VERSION"
63 $write ifile$ "#define VERSION """,line,""""
64 $write ifile$ "#endif"
65 $write ifile$ "/*--*/"
68 $append [.config]vms-conf.h ifile$:
70 $ append [.config]vms-a-conf.h ifile$:
73 $ECHO "Created config.h."
75 $! Check for, and possibly make, header file <unistd.h>.
77 $ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;*
78 $!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"'
79 $!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug)
81 int tmp_chk_h; /* guarantee non-empty output */
94 $ on warning then continue
95 $ CHECK = "call tmp_chk_h"
96 $ CHECK "HAVE_STDIO_H"
98 $ then type sys$input:
100 ? could not compile <stdio.h>.
102 If you're compiling with DEC C or VAX C, create config.status as an
103 empty file and start gnu make again.
105 If you're compiling with GNU C, there is some setup problem and
106 gas configuration cannot proceed.
108 $ DELETE tmp-chk-h.c;*
112 $ CHECK "HAVE_UNISTD_H"
115 $ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$
116 $ CHECK "HAVE_UNIXIO_H"
117 $ got_unixio = ($status .and. 1)
118 $ CHECK "HAVE_UNIXLIB_H"
119 $ got_unixlib = ($status .and. 1)
120 $ create []unistd.h !with rudimentary contents
121 /* <unistd.h> substitute for building gas */
125 $ open/Append hfile$ []unistd.h
127 $ then write hfile$ "#include <unixio.h>"
128 $ else append sys$input: hfile$:
129 /* some of the routines normally prototyped in <unixio.h> */
130 extern int creat(), open(), close(), read(), write();
131 extern int access(), dup(), dup2(), fstat(), stat();
136 $ then write hfile$ "#include <unixlib.h>"
137 $ else append sys$input: hfile$:
138 /* some of the routines normally prototyped in <unixlib.h> */
139 extern char *sbrk(), *getcwd(), *cuserid();
140 extern int brk(), chdir(), chmod(), chown(), mkdir();
141 extern unsigned getuid(), umask();
143 $ append sys$input: hfile$:
147 $ ECHO "Created ""[]unistd.h""."
148 $ endif !gcc '#include <unistd.h>' failed
149 $ DELETE tmp-chk-h.c;*
151 $tmp_chk_h: subroutine
153 $ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE")
154 $ write sys$output "Checking for ''hname'."
155 $ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;*
156 $ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc
157 $ define/noLog sys$output _NL: ! driver's use of multiple image activation
158 $ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c
159 $!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly
160 $ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000
161 $ deassign sys$error !restore, more or less
162 $ deassign sys$output
163 $ if ok then DELETE tmp-chk-h.obj;*
165 $ endsubroutine !tmp_chk_h
170 $ if f$search("config.status") .nes. "" then DELETE config.status;*
171 $ open/write cfile []config.status
172 $ write cfile "Links are now set up for use with a "+arch+" running VMS."
174 $ type []config.status
179 $ if f$search(p1).nes."" then DELETE 'p1';*
181 $ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
182 $ open/Append ifile$ 'p1'
183 $ write ifile$ "#include ""''f$string(p2 - "[.config]")'"""
185 $ ECHO "Created ''p1' for ''p2'."