12159047fSniklas$! 22159047fSniklas$! This file sets things up to build gas on a VMS system to generate object 32159047fSniklas$! files for a VMS system. We do not use the configure script, since we 42159047fSniklas$! do not have /bin/sh to execute it. 52159047fSniklas$! 62159047fSniklas$! 72159047fSniklas$gas_host="vms" 82159047fSniklas$! 9*fddef416Sniklas$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 10*fddef416Sniklas$arch = f$element(arch_indx,"|","|VAX|Alpha|") 11*fddef416Sniklas$if arch .eqs. "VAX" 12*fddef416Sniklas$then 132159047fSniklas$cpu_type="vax" 142159047fSniklas$obj_format="vms" 152159047fSniklas$atof="vax" 16*fddef416Sniklas$else 17*fddef416Sniklas$ cpu_type="alpha" 18*fddef416Sniklas$ obj_format="evax" 19*fddef416Sniklas$ atof="ieee" 20*fddef416Sniklas$endif 21*fddef416Sniklas$ 22*fddef416Sniklas$emulation="generic" 232159047fSniklas$! 242159047fSniklas$ DELETE = "delete/noConfirm" 252159047fSniklas$ ECHO = "write sys$output" 262159047fSniklas$! 272159047fSniklas$! Target specific information 282159047fSniklas$call link targ-cpu.c [.config]tc-'cpu_type'.c 292159047fSniklas$call link targ-cpu.h [.config]tc-'cpu_type'.h 302159047fSniklas$call link targ-env.h [.config]te-'emulation'.h 312159047fSniklas$! 322159047fSniklas$! Code to handle the object file format. 332159047fSniklas$call link obj-format.h [.config]obj-'obj_format'.h 342159047fSniklas$call link obj-format.c [.config]obj-'obj_format'.c 352159047fSniklas$! 362159047fSniklas$! Code to handle floating point. 372159047fSniklas$call link atof-targ.c [.config]atof-'atof'.c 382159047fSniklas$! 392159047fSniklas$! 402159047fSniklas$! Create the file version.opt, which helps identify the executable. 412159047fSniklas$! 422159047fSniklas$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ 432159047fSniklas$search Makefile.in "VERSION="/Exact/Output=config-gas-tmp.tmp 442159047fSniklas$open ifile$ config-gas-tmp.tmp 452159047fSniklas$read ifile$ line 462159047fSniklas$close ifile$ 472159047fSniklas$DELETE config-gas-tmp.tmp;* 482159047fSniklas$! Discard "VERSION=" and "\n" parts. 492159047fSniklas$ijk=f$locate("=",line)+1 502159047fSniklas$line=f$extract(ijk,f$length(line)-ijk,line) 512159047fSniklas$! [what "\n" part?? this seems to be useless, but is benign] 522159047fSniklas$ijk=f$locate("\n",line) 532159047fSniklas$line=f$extract(0,ijk,line) 542159047fSniklas$! 552159047fSniklas$ if f$search("version.opt").nes."" then DELETE version.opt;* 562159047fSniklas$copy _NL: version.opt 572159047fSniklas$open/Append ifile$ version.opt 582159047fSniklas$write ifile$ "identification="+""""+line+"""" 592159047fSniklas$close ifile$ 602159047fSniklas$! 612159047fSniklas$! Now write config.h. 622159047fSniklas$! 632159047fSniklas$ if f$search("config.h").nes."" then DELETE config.h;* 642159047fSniklas$copy _NL: config.h 652159047fSniklas$open/Append ifile$ config.h 662159047fSniklas$write ifile$ "/* config.h. Generated by config-gas.com. */ 672159047fSniklas$write ifile$ "#ifndef GAS_VERSION" 682159047fSniklas$write ifile$ "#define GAS_VERSION """,line,"""" 692159047fSniklas$write ifile$ "#endif" 702159047fSniklas$write ifile$ "/*--*/" 71*fddef416Sniklas$if arch .eqs. "VAX" 72*fddef416Sniklas$then 732159047fSniklas$append [.config]vms-conf.h ifile$: 74*fddef416Sniklas$else 75*fddef416Sniklas$ append [.config]vms-a-conf.h ifile$: 76*fddef416Sniklas$endif 772159047fSniklas$close ifile$ 782159047fSniklas$ECHO "Created config.h." 792159047fSniklas$! 802159047fSniklas$! Check for, and possibly make, header file <unistd.h>. 812159047fSniklas$! 822159047fSniklas$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;* 832159047fSniklas$!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"' 842159047fSniklas$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug) 852159047fSniklas$ create tmp-chk-h.c 862159047fSniklasint tmp_chk_h; /* guarantee non-empty output */ 872159047fSniklas#ifdef HAVE_STDIO_H 882159047fSniklas#include <stdio.h> 892159047fSniklas#endif 902159047fSniklas#ifdef HAVE_UNISTD_H 912159047fSniklas#include <unistd.h> 922159047fSniklas#endif 932159047fSniklas#ifdef HAVE_UNIXIO_H 942159047fSniklas#include <unixio.h> 952159047fSniklas#endif 962159047fSniklas#ifdef HAVE_UNIXLIB_H 972159047fSniklas#include <unixlib.h> 982159047fSniklas#endif 992159047fSniklas$ on warning then continue 1002159047fSniklas$ CHECK = "call tmp_chk_h" 1012159047fSniklas$ CHECK "HAVE_STDIO_H" 1022159047fSniklas$ if .not.$status 1032159047fSniklas$ then type sys$input: 1042159047fSniklas 1052159047fSniklas? could not compile <stdio.h>. 1062159047fSniklas Since gcc is not set up correctly, gas configuration cannot proceed. 1072159047fSniklas 1082159047fSniklas$ DELETE tmp-chk-h.c;* 1092159047fSniklas$ exit %x002C 1102159047fSniklas$ endif 1112159047fSniklas$! 1122159047fSniklas$ CHECK "HAVE_UNISTD_H" 1132159047fSniklas$ if .not.$status 1142159047fSniklas$ then 1152159047fSniklas$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$ 1162159047fSniklas$ CHECK "HAVE_UNIXIO_H" 1172159047fSniklas$ got_unixio = ($status .and. 1) 1182159047fSniklas$ CHECK "HAVE_UNIXLIB_H" 1192159047fSniklas$ got_unixlib = ($status .and. 1) 1202159047fSniklas$ create []unistd.h !with rudimentary contents 1212159047fSniklas/* <unistd.h> substitute for building gas */ 1222159047fSniklas#ifndef UNISTD_H 1232159047fSniklas#define UNISTD_H 1242159047fSniklas 1252159047fSniklas$ open/Append hfile$ []unistd.h 1262159047fSniklas$ if got_unixio 1272159047fSniklas$ then write hfile$ "#include <unixio.h>" 1282159047fSniklas$ else append sys$input: hfile$: 1292159047fSniklas/* some of the routines normally prototyped in <unixio.h> */ 1302159047fSniklasextern int creat(), open(), close(), read(), write(); 1312159047fSniklasextern int access(), dup(), dup2(), fstat(), stat(); 1322159047fSniklasextern long lseek(); 1332159047fSniklas$ endif 1342159047fSniklas$ write hfile$ "" 1352159047fSniklas$ if got_unixlib 1362159047fSniklas$ then write hfile$ "#include <unixlib.h>" 1372159047fSniklas$ else append sys$input: hfile$: 1382159047fSniklas/* some of the routines normally prototyped in <unixlib.h> */ 1392159047fSniklasextern char *sbrk(), *getcwd(), *cuserid(); 1402159047fSniklasextern int brk(), chdir(), chmod(), chown(), mkdir(); 1412159047fSniklasextern unsigned getuid(), umask(); 1422159047fSniklas$ endif 1432159047fSniklas$ append sys$input: hfile$: 1442159047fSniklas 1452159047fSniklas#endif /*UNISTD_H*/ 1462159047fSniklas$ close hfile$ 1472159047fSniklas$ ECHO "Created ""[]unistd.h""." 1482159047fSniklas$ endif !gcc '#include <unistd.h>' failed 1492159047fSniklas$ DELETE tmp-chk-h.c;* 1502159047fSniklas$ 1512159047fSniklas$tmp_chk_h: subroutine 1522159047fSniklas$ set noOn 1532159047fSniklas$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE") 1542159047fSniklas$ write sys$output "Checking for ''hname'." 1552159047fSniklas$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;* 1562159047fSniklas$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc 1572159047fSniklas$ define/noLog sys$output _NL: ! driver's use of multiple image activation 1582159047fSniklas$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c 1592159047fSniklas$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly 1602159047fSniklas$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000 1612159047fSniklas$ deassign sys$error !restore, more or less 1622159047fSniklas$ deassign sys$output 1632159047fSniklas$ if ok then DELETE tmp-chk-h.obj;* 1642159047fSniklas$ exit ok 1652159047fSniklas$ endsubroutine !tmp_chk_h 1662159047fSniklas$ 1672159047fSniklas$! 1682159047fSniklas$! Done 1692159047fSniklas$! 1702159047fSniklas$ if f$search("config.status") .nes. "" then DELETE config.status;* 171*fddef416Sniklas$ open/write cfile []config.status 172*fddef416Sniklas$ write cfile "Links are now set up for use with a "+arch+" running VMS." 173*fddef416Sniklas$ close cfile 174*fddef416Sniklas$ type []config.status 1752159047fSniklas$exit 1762159047fSniklas$! 1772159047fSniklas$! 1782159047fSniklas$link: 1792159047fSniklas$subroutine 1802159047fSniklas$ if f$search(p1).nes."" then DELETE 'p1';* 1812159047fSniklas$ copy 'p2' 'p1' 1822159047fSniklas$ ECHO "Copied ''f$edit(p2,"LOWERCASE")' to ''f$edit(p1,"LOWERCASE")'." 1832159047fSniklas$endsubroutine 184