| $! | 
 | $! This file configures the bfd library for use with openVMS. | 
 | $! | 
 | $! We do not use the configure script, since we do not have /bin/sh | 
 | $! to execute it. | 
 | $! | 
 | $! Written by Klaus K"ampf (kkaempf@rmi.de) | 
 | $! Rewritten by Tristan Gingold (gingold@adacore.com) | 
 | $! | 
 | $!   Copyright (C) 2012-2018 Free Software Foundation, Inc. | 
 | $! | 
 | $! This file is free software; you can redistribute it and/or modify | 
 | $! it under the terms of the GNU General Public License as published by | 
 | $! the Free Software Foundation; either version 3 of the License, or | 
 | $! (at your option) any later version. | 
 | $! | 
 | $! This program is distributed in the hope that it will be useful, | 
 | $! but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | $! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 | $! GNU General Public License for more details. | 
 | $! | 
 | $! You should have received a copy of the GNU General Public License | 
 | $! along with this program; see the file COPYING3.  If not see | 
 | $! <http://www.gnu.org/licenses/>. | 
 | $! | 
 | $ arch=F$GETSYI("ARCH_NAME") | 
 | $ arch=F$EDIT(arch,"LOWERCASE") | 
 | $if arch .eqs. "alpha" then target = "alpha" | 
 | $if arch .eqs. "ia64" then target = "ia64" | 
 | $! | 
 | $if (arch .eqs. "alpha") .or. (arch .eqs. "ia64") | 
 | $then | 
 | $! | 
 | $ write sys$output "Configuring BFD for ''target' target" | 
 | $! | 
 | $! | 
 | $! copy bfd-in2.h to bfd.h, replacing @ macros | 
 | $! | 
 | $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - | 
 |         []bfd-in2.h /output=[]bfd.h | 
 | $DECK | 
 | ! | 
 | !  Copy file, changing lines with macros (@@) | 
 | ! | 
 | ! | 
 |    set (success,off); | 
 |  | 
 |    file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); | 
 |    rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); | 
 |  | 
 |    match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('0'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_LONG_LONG@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('1'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG_LONG@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('1'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('1'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('__int64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_U_64_BIT@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('unsigned __int64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOSTPTR_T@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('unsigned __int64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('bfd_signed_vma'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('unsigned @bfd_file_ptr@ ufile_ptr', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('bfd_vma ufile_ptr'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@supports_plugins@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('0'); | 
 |    ENDIF; | 
 |    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); | 
 |    QUIT | 
 | $  EOD | 
 | $ | 
 | $else | 
 | $ | 
 | $ write sys$output "Configuring for Vax target" | 
 | $ target = "vax" | 
 | $! | 
 | $! copy bfd-in2.h to bfd.h, replacing @ macros | 
 | $! | 
 | $ write sys$output "Generated `bfd.h' from `bfd-in2.h'." | 
 | $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - | 
 |         []bfd-in2.h /output=[]bfd.h | 
 | $DECK | 
 | ! | 
 | !  Copy file, changing lines with macros (@@) | 
 | ! | 
 | ! | 
 |    set (success,off); | 
 |  | 
 |    file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); | 
 |    rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); | 
 |  | 
 |    match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('32'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('0'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('__DECC'); | 
 |       SPLIT_LINE; | 
 |       COPY_TEXT('#include <ints.h>'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('int64'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@BFD_HOST_U_64_BIT@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('uint64'); | 
 |    ENDIF; | 
 |    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); | 
 |    QUIT | 
 | $  EOD | 
 | $endif | 
 | $ | 
 | $! | 
 | $! create bfdver.h | 
 | $! | 
 | $ write sys$output "Generate `bfdver.h' from 'version.h' and `configure.in'." | 
 | $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - | 
 |         []version.h /output=[]bfdver.h | 
 | $DECK | 
 | ! | 
 | !  Copy file, changing lines with macros (@@) | 
 | ! | 
 | ! | 
 |    set (success,off); | 
 |    vfile := CREATE_BUFFER("vfile", "configure.in"); | 
 |    rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile)); | 
 |    match_pos := SEARCH_QUIETLY('AC_INIT([bfd], [', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |      POSITION(BEGINNING_OF(match_pos)); | 
 |      ERASE(match_pos); | 
 |      vers := CURRENT_LINE-"])"; | 
 |    ELSE; | 
 |      vers := "unknown"; | 
 |    ENDIF; | 
 |    versnum := vers - "." - "."; | 
 |  | 
 |    file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); | 
 |    rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); | 
 |  | 
 |    match_pos := SEARCH_QUIETLY('@bfd_version@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT(versnum); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@bfd_version_string@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('"'); | 
 |       COPY_TEXT(vers); | 
 |       COPY_TEXT('"'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@bfd_version_package@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('"(GNU Binutils) "'); | 
 |    ENDIF; | 
 |    match_pos := SEARCH_QUIETLY('@report_bugs_to@', FORWARD, EXACT, rang); | 
 |    IF match_pos <> 0 THEN; | 
 |       POSITION(BEGINNING_OF(match_pos)); | 
 |       ERASE(match_pos); | 
 |       COPY_TEXT('"<http://www.sourceware.org/bugzilla/>"'); | 
 |    ENDIF; | 
 |    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); | 
 |    QUIT | 
 | $  EOD | 
 | $! | 
 | $! | 
 | $! create bfd_stdint.h | 
 | $! | 
 | $ write sys$output "Generate `bfd_stdint.h'" | 
 | $ create []bfd_stdint.h | 
 | #include <inttypes.h> | 
 | $! | 
 | $! | 
 | $! create targmatch.h | 
 | $! | 
 | $ write sys$output "Generate `targmatch.h'" | 
 | $ open/write tfile []targmatch.h | 
 | $ write tfile "{ """ + target + "-*-*vms*""" + "," | 
 | $ write tfile "#if defined (SELECT_VECS)" | 
 | $ write tfile "SELECT_VECS" | 
 | $ write tfile "#else" | 
 | $ write tfile "UNSUPPORTED_TARGET" | 
 | $ write tfile "#endif" | 
 | $ write tfile "}," | 
 | $ close tfile | 
 | $! | 
 | $! | 
 | $! create config.h | 
 | $! | 
 | $ write sys$output "Generate `config.h'" | 
 | $ create []config.h | 
 | /* config.h-vms.  Generated by hand by Klaus Kämpf, kkaempf@didymus.rmi.de.  */ | 
 | /* config.in.  Generated automatically from configure.in by autoheader.  */ | 
 | /* Whether malloc must be declared even if <stdlib.h> is included.  */ | 
 | /* #undef NEED_DECLARATION_MALLOC */ | 
 | /* Whether free must be declared even if <stdlib.h> is included.  */ | 
 | /* #undef NEED_DECLARATION_FREE */ | 
 | /* Define if you have a working `mmap' system call.  */ | 
 | /* #define HAVE_MMAP 1 */ | 
 | /* Do we need to use the b modifier when opening binary files?  */ | 
 | /* #undef USE_BINARY_FOPEN */ | 
 | /* Name of host specific header file to include in trad-core.c.  */ | 
 | /* #undef TRAD_HEADER */ | 
 | /* Define only if <sys/procfs.h> is available *and* it defines prstatus_t.  */ | 
 | /* #undef HAVE_SYS_PROCFS_H */ | 
 | /* Do we really want to use mmap if it's available?  */ | 
 | /* #undef USE_MMAP */ | 
 | /* Define if you have the fcntl function.  */ | 
 | #define HAVE_FCNTL 1 | 
 | /* Define if you have the getpagesize function.  */ | 
 | #define HAVE_GETPAGESIZE 1 | 
 | /* Define if you have the madvise function.  */ | 
 | #define HAVE_MADVISE 1 | 
 | /* Define if you have the mprotect function.  */ | 
 | #define HAVE_MPROTECT 1 | 
 | /* Define if you have the <fcntl.h> header file.  */ | 
 | #define HAVE_FCNTL_H 1 | 
 | /* Define if you have the <stddef.h> header file.  */ | 
 | #define HAVE_STDDEF_H 1 | 
 | /* Define if you have the <stdlib.h> header file.  */ | 
 | #define HAVE_STDLIB_H 1 | 
 | /* Define if you have the <string.h> header file.  */ | 
 | #define HAVE_STRING_H 1 | 
 | /* Define if you have the <strings.h> header file.  */ | 
 | #define HAVE_STRINGS_H 1 | 
 | /* Define if you have the <sys/file.h> header file.  */ | 
 | #define HAVE_SYS_FILE_H 1 | 
 | /* Define if you have the <time.h> header file.  */ | 
 | #define HAVE_TIME_H 1 | 
 | /* Define if you have the <unistd.h> header file.  */ | 
 | #define HAVE_UNISTD_H 1 | 
 | /* Disable NLS  */ | 
 | #undef ENABLE_NLS | 
 | /* Name of package */ | 
 | #define PACKAGE "bfd" | 
 | /* Define to the address where bug reports for this package should be sent. */ | 
 | #define PACKAGE_BUGREPORT "" | 
 | /* Define to the full name of this package. */ | 
 | #define PACKAGE_NAME "bfd" | 
 | /* Define to the full name and version of this package. */ | 
 | #define PACKAGE_STRING "bfd" | 
 | /* Define to the one symbol short name of this package. */ | 
 | #define PACKAGE_TARNAME "bfd" | 
 | /* Define to the home page for this package. */ | 
 | #define PACKAGE_URL "" | 
 | /* Define to the version of this package. */ | 
 | #define PACKAGE_VERSION "(package version)" | 
 | $! | 
 | $ write sys$output "Copy sysdep.h" | 
 | $ copy [.hosts]alphavms.h sysdep.h | 
 | $ | 
 | $ write sys$output "Generate build.com" | 
 | $! | 
 | $ if ARCH.eqs."alpha" | 
 | $ then | 
 | $   create build.com | 
 | $DECK | 
 | $ DEFS="""SELECT_VECS=&alpha_vms_vec"","+- | 
 |   """SELECT_ARCHITECTURES=&bfd_alpha_arch""" | 
 | $ FILES="cpu-alpha,vms,vms-hdr,vms-gsd,vms-tir,vms-misc," | 
 | $EOD | 
 | $ endif | 
 | $ if ARCH.eqs."ia64" | 
 | $ then | 
 | $   create build.com | 
 | $DECK | 
 | $ DEFS="""SELECT_VECS=&ia64_elf64_vms_vec"","+- | 
 |   """SELECT_ARCHITECTURES=&bfd_ia64_arch""" | 
 | $ FILES="cpu-ia64,elf64-ia64,elf-strtab,corefile,stabs,merge,elf-eh-frame,"+- | 
 |   "elflink,elf-attrs,dwarf1,elf64," | 
 | $EOD | 
 | $ create substxx.tpu | 
 | $DECK | 
 |    set (success,off); | 
 |    file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); | 
 |    found_range := CREATE_RANGE(BEGINNING_OF(file), BEGINNING_OF(file)); | 
 |  | 
 |    LOOP | 
 |      rang := CREATE_RANGE (END_OF(found_range),END_OF(file)); | 
 |      match_pos := SEARCH_QUIETLY('NN', FORWARD, EXACT, rang); | 
 |      EXITIF match_pos = 0; | 
 |      POSITION(BEGINNING_OF(match_pos)); | 
 |      ERASE(match_pos); | 
 |      COPY_TEXT('64'); | 
 |    ENDLOOP; | 
 |    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); | 
 |    QUIT | 
 | $  EOD | 
 | $ write sys$output "Generate elf64-target.h from elfxx-target.h" | 
 | $ edit/tpu/nojournal/nosection/nodisplay/command=substxx.tpu - | 
 |         []elfXX-target.h /output=[]elf64-target.h | 
 | $ del substxx.tpu;* | 
 | $ endif | 
 | $ append sys$input build.com | 
 | $DECK | 
 | $ DEFS=DEFS + ",""unlink=remove"",""DEBUGDIR=""""GNU$DEBUGDIR:""""""" | 
 | $ OPT="/noopt/debug" | 
 | $ CFLAGS="/name=(as_is,shortened)" + - | 
 |   "/include=([],""../"",""../include"")" + - | 
 |   "/define=(" + DEFS + ")" + OPT | 
 | $ FILES=FILES + "archive,archive64,archures,bfd,bfdio,binary,cache,coffgen,"+- | 
 |   "compress,corefile,dwarf2,elf,format,hash,ihex,init,libbfd,linker,"+- | 
 |   "opncls,reloc,section,simple,srec,stab-syms,syms,targets,tekhex,verilog" | 
 | $ write sys$output "CFLAGS=",CFLAGS | 
 | $ cflags_libbfd="/warning=(disable=missingreturn)" | 
 | $ cflags_nil="" | 
 | $ NUM = 0 | 
 | $ OBJS="" | 
 | $ LOOP: | 
 | $   F = F$ELEMENT(NUM,",",FILES) | 
 | $   IF F.EQS."," THEN GOTO END | 
 | $   eflags_name="cflags_''f'" | 
 | $   name_len=f$length(eflags_name) | 
 | $   dash_pos=f$locate("-",eflags_name) | 
 | $   if dash_pos.ne.name_len | 
 | $   then | 
 | $     eflags_name['dash_pos,1]:="_" | 
 | $     dash_pos=f$locate("-",eflags_name) | 
 | $     if dash_pos.ne.name_len then eflags_name['dash_pos,1]:="_" | 
 | $   endif | 
 | $   if f$type('eflags_name).eqs."" then eflags_name="cflags_nil" | 
 | $   eflags='eflags_name | 
 | $   write sys$output "Compiling ", F, ".c", eflags | 
 | $   cc 'CFLAGS 'eflags 'F.c | 
 | $   IF OBJS.NES."" THEN OBJS=OBJS + "," | 
 | $   OBJS=OBJS + F + ".obj" | 
 | $   NUM = NUM + 1 | 
 | $   GOTO LOOP | 
 | $ END: | 
 | $ purge | 
 | $ lib/create libbfd 'OBJS | 
 | $EOD |