1*f7cc78ecSespie$!config-gas.com 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" 8fddef416Sniklas$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 9fddef416Sniklas$ arch = f$element(arch_indx,"|","|VAX|Alpha|") 10fddef416Sniklas$ if arch.eqs."VAX" 11fddef416Sniklas$ then 122159047fSniklas$ cpu_type="vax" 132159047fSniklas$ obj_format="vms" 142159047fSniklas$ atof="vax" 15fddef416Sniklas$ else 16fddef416Sniklas$ cpu_type="alpha" 17fddef416Sniklas$ obj_format="evax" 18fddef416Sniklas$ atof="ieee" 19fddef416Sniklas$ endif 20fddef416Sniklas$ emulation="generic" 212159047fSniklas$! 222159047fSniklas$ DELETE = "delete/noConfirm" 232159047fSniklas$ ECHO = "write sys$output" 242159047fSniklas$! 252159047fSniklas$! Target specific information 26*f7cc78ecSespie$ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h" 27*f7cc78ecSespie$ call make "targ-env.h" "[.config]te-''emulation'.h" 282159047fSniklas$! 292159047fSniklas$! Code to handle the object file format. 30*f7cc78ecSespie$ call make "obj-format.h" "[.config]obj-''obj_format'.h" 312159047fSniklas$! 32*f7cc78ecSespie$! (not currently used for vax or alpha) 33*f7cc78ecSespie$ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h" 342159047fSniklas$! 352159047fSniklas$! 362159047fSniklas$! Create the file version.opt, which helps identify the executable. 372159047fSniklas$! 382159047fSniklas$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ 39*f7cc78ecSespie$search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp 402159047fSniklas$open ifile$ config-gas-tmp.tmp 412159047fSniklas$read ifile$ line 422159047fSniklas$close ifile$ 432159047fSniklas$DELETE config-gas-tmp.tmp;* 44*f7cc78ecSespie$! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts. 45*f7cc78ecSespie$ijk=f$locate(",",line)+2 462159047fSniklas$line=f$extract(ijk,f$length(line)-ijk,line) 47*f7cc78ecSespie$ijk=f$locate(")",line) 482159047fSniklas$line=f$extract(0,ijk,line) 492159047fSniklas$! 502159047fSniklas$ if f$search("version.opt").nes."" then DELETE version.opt;* 512159047fSniklas$copy _NL: version.opt 522159047fSniklas$open/Append ifile$ version.opt 532159047fSniklas$write ifile$ "identification="+""""+line+"""" 542159047fSniklas$close ifile$ 552159047fSniklas$! 562159047fSniklas$! Now write config.h. 572159047fSniklas$! 582159047fSniklas$ if f$search("config.h").nes."" then DELETE config.h;* 592159047fSniklas$copy _NL: config.h 602159047fSniklas$open/Append ifile$ config.h 612159047fSniklas$write ifile$ "/* config.h. Generated by config-gas.com. */ 62*f7cc78ecSespie$write ifile$ "#ifndef VERSION" 63*f7cc78ecSespie$write ifile$ "#define VERSION """,line,"""" 642159047fSniklas$write ifile$ "#endif" 652159047fSniklas$write ifile$ "/*--*/" 66fddef416Sniklas$if arch .eqs. "VAX" 67fddef416Sniklas$then 682159047fSniklas$append [.config]vms-conf.h ifile$: 69fddef416Sniklas$else 70fddef416Sniklas$ append [.config]vms-a-conf.h ifile$: 71fddef416Sniklas$endif 722159047fSniklas$close ifile$ 732159047fSniklas$ECHO "Created config.h." 742159047fSniklas$! 752159047fSniklas$! Check for, and possibly make, header file <unistd.h>. 762159047fSniklas$! 772159047fSniklas$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;* 782159047fSniklas$!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"' 792159047fSniklas$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug) 802159047fSniklas$ create tmp-chk-h.c 812159047fSniklasint tmp_chk_h; /* guarantee non-empty output */ 822159047fSniklas#ifdef HAVE_STDIO_H 832159047fSniklas#include <stdio.h> 842159047fSniklas#endif 852159047fSniklas#ifdef HAVE_UNISTD_H 862159047fSniklas#include <unistd.h> 872159047fSniklas#endif 882159047fSniklas#ifdef HAVE_UNIXIO_H 892159047fSniklas#include <unixio.h> 902159047fSniklas#endif 912159047fSniklas#ifdef HAVE_UNIXLIB_H 922159047fSniklas#include <unixlib.h> 932159047fSniklas#endif 942159047fSniklas$ on warning then continue 952159047fSniklas$ CHECK = "call tmp_chk_h" 962159047fSniklas$ CHECK "HAVE_STDIO_H" 972159047fSniklas$ if .not.$status 982159047fSniklas$ then type sys$input: 992159047fSniklas 1002159047fSniklas? could not compile <stdio.h>. 101*f7cc78ecSespie 102*f7cc78ecSespie If you're compiling with DEC C or VAX C, create config.status as an 103*f7cc78ecSespie empty file and start gnu make again. 104*f7cc78ecSespie 105*f7cc78ecSespie If you're compiling with GNU C, there is some setup problem and 106*f7cc78ecSespie 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;* 171fddef416Sniklas$ open/write cfile []config.status 172fddef416Sniklas$ write cfile "Links are now set up for use with a "+arch+" running VMS." 173fddef416Sniklas$ close cfile 174fddef416Sniklas$ type []config.status 1752159047fSniklas$exit 1762159047fSniklas$! 1772159047fSniklas$! 178*f7cc78ecSespie$make: subroutine 1792159047fSniklas$ if f$search(p1).nes."" then DELETE 'p1';* 180*f7cc78ecSespie$ create 'p1' 181*f7cc78ecSespie$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ 182*f7cc78ecSespie$ open/Append ifile$ 'p1' 183*f7cc78ecSespie$ write ifile$ "#include ""''f$string(p2 - "[.config]")'""" 184*f7cc78ecSespie$ close ifile$ 185*f7cc78ecSespie$ ECHO "Created ''p1' for ''p2'." 186*f7cc78ecSespie$endsubroutine !make 187