$! do not have /bin/sh to execute it.
$!
$! If you are running this file, then obviously the host is vax-dec-vms.
+$! [That's no longer obvious, but there's not much we can do about alpha yet.]
$!
$gas_host="vms"
$!
$obj_format="vms"
$atof="vax"
$!
-$! host specific information
-$call link host.h [.config]ho-'gas_host'.h
+$ DELETE = "delete/noConfirm"
+$ ECHO = "write sys$output"
$!
$! Target specific information
$call link targ-cpu.c [.config]tc-'cpu_type'.c
$call link atof-targ.c [.config]atof-'atof'.c
$!
$!
-$! Create the file version.opt, which helps identify the executalbe.
+$! Create the file version.opt, which helps identify the executable.
$!
-$search version.c version_string,"="/match=and/output=t.tmp
-$open ifile$ t.tmp
+$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
+$search Makefile.in "VERSION="/Exact/Output=config-gas-tmp.tmp
+$open ifile$ config-gas-tmp.tmp
$read ifile$ line
$close ifile$
-$delete/nolog t.tmp;
-$ijk=f$locate("""",line)+1
+$DELETE config-gas-tmp.tmp;*
+$! Discard "VERSION=" and "\n" parts.
+$ijk=f$locate("=",line)+1
$line=f$extract(ijk,f$length(line)-ijk,line)
-$ijk=f$locate("""",line)
-$line=f$extract(0,ijk,line)
+$! [what "\n" part?? this seems to be useless, but is benign]
$ijk=f$locate("\n",line)
$line=f$extract(0,ijk,line)
$!
-$i=0
-$loop:
-$elm=f$element(i," ",line)
-$if elm.eqs."" then goto no_ident
-$if (elm.les."9").and.(elm.ges."0") then goto write_ident
-$i=i+1
-$goto loop
-$!
-$no_ident:
-$elm="?.??"
-$!
-$!
-$write_ident:
-$open ifile$ version.opt/write
-$write ifile$ "ident="+""""+elm+""""
+$ if f$search("version.opt").nes."" then DELETE version.opt;*
+$copy _NL: version.opt
+$open/Append ifile$ version.opt
+$write ifile$ "identification="+""""+line+""""
$close ifile$
$!
-$ !
-$ if f$search("config.status") .nes. "" then delete config.status.*
-$ open/write file config.status
-$ write file "Links are now set up for use with a vax running VMS."
-$ close file
+$! Now write config.h.
+$!
+$ if f$search("config.h").nes."" then DELETE config.h;*
+$copy _NL: config.h
+$open/Append ifile$ config.h
+$write ifile$ "/* config.h. Generated by config-gas.com. */
+$write ifile$ "#ifndef GAS_VERSION"
+$write ifile$ "#define GAS_VERSION """,line,""""
+$write ifile$ "#endif"
+$write ifile$ "/*--*/"
+$append [.config]vms-conf.h ifile$:
+$close ifile$
+$ECHO "Created config.h."
+$!
+$! Check for, and possibly make, header file <unistd.h>.
+$!
+$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;*
+$!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"'
+$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug)
+$ create tmp-chk-h.c
+int tmp_chk_h; /* guarantee non-empty output */
+#ifdef HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_UNIXIO_H
+#include <unixio.h>
+#endif
+#ifdef HAVE_UNIXLIB_H
+#include <unixlib.h>
+#endif
+$ on warning then continue
+$ CHECK = "call tmp_chk_h"
+$ CHECK "HAVE_STDIO_H"
+$ if .not.$status
+$ then type sys$input:
+
+? could not compile <stdio.h>.
+ Since gcc is not set up correctly, gas configuration cannot proceed.
+
+$ DELETE tmp-chk-h.c;*
+$ exit %x002C
+$ endif
+$!
+$ CHECK "HAVE_UNISTD_H"
+$ if .not.$status
+$ then
+$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$
+$ CHECK "HAVE_UNIXIO_H"
+$ got_unixio = ($status .and. 1)
+$ CHECK "HAVE_UNIXLIB_H"
+$ got_unixlib = ($status .and. 1)
+$ create []unistd.h !with rudimentary contents
+/* <unistd.h> substitute for building gas */
+#ifndef UNISTD_H
+#define UNISTD_H
+
+$ open/Append hfile$ []unistd.h
+$ if got_unixio
+$ then write hfile$ "#include <unixio.h>"
+$ else append sys$input: hfile$:
+/* some of the routines normally prototyped in <unixio.h> */
+extern int creat(), open(), close(), read(), write();
+extern int access(), dup(), dup2(), fstat(), stat();
+extern long lseek();
+$ endif
+$ write hfile$ ""
+$ if got_unixlib
+$ then write hfile$ "#include <unixlib.h>"
+$ else append sys$input: hfile$:
+/* some of the routines normally prototyped in <unixlib.h> */
+extern char *sbrk(), *getcwd(), *cuserid();
+extern int brk(), chdir(), chmod(), chown(), mkdir();
+extern unsigned getuid(), umask();
+$ endif
+$ append sys$input: hfile$:
+
+#endif /*UNISTD_H*/
+$ close hfile$
+$ ECHO "Created ""[]unistd.h""."
+$ endif !gcc '#include <unistd.h>' failed
+$ DELETE tmp-chk-h.c;*
+$
+$tmp_chk_h: subroutine
+$ set noOn
+$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE")
+$ write sys$output "Checking for ''hname'."
+$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;*
+$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc
+$ define/noLog sys$output _NL: ! driver's use of multiple image activation
+$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c
+$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly
+$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000
+$ deassign sys$error !restore, more or less
+$ deassign sys$output
+$ if ok then DELETE tmp-chk-h.obj;*
+$ exit ok
+$ endsubroutine !tmp_chk_h
+$
+$!
+$! Done
+$!
+$ if f$search("config.status") .nes. "" then DELETE config.status;*
+$ create config.status
+Links are now set up for use with a vax running VMS.
$ type config.status
$exit
$!
$!
$link:
$subroutine
-$if f$search(p1).nes."" then delete/nolog 'p1';
-$copy 'p2' 'p1'
-$write sys$output "Linked ''p2' to ''p1'."
+$ if f$search(p1).nes."" then DELETE 'p1';*
+$ copy 'p2' 'p1'
+$ ECHO "Copied ''f$edit(p2,"LOWERCASE")' to ''f$edit(p1,"LOWERCASE")'."
$endsubroutine