$!
-$! This file configures the bfd library for use with openVMS (Alpha and Vax)
+$! 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)
$!
-$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
-$arch = f$element(arch_indx,"|","|VAX|Alpha|")
+$! Copyright (C) 2012-2020 Free Software Foundation, Inc.
$!
-$if arch .eqs. "Alpha"
+$! 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 for Alpha target"
-$ target = "alpha"
+$!
+$ write sys$output "Configuring BFD for ''target' target"
+$!
$!
$! copy bfd-in2.h to bfd.h, replacing @ macros
$!
! Copy file, changing lines with macros (@@)
!
!
- vfile := CREATE_BUFFER("vfile", "CONFIGURE.IN");
- rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile));
- match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(bfd, ', FORWARD, EXACT, rang);
- IF match_pos <> 0 THEN;
- POSITION(BEGINNING_OF(match_pos));
- ERASE(match_pos);
- vers := CURRENT_LINE-")";
- ELSE;
- vers := "unknown";
- ENDIF;
+ 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('@VERSION@', FORWARD, EXACT, rang);
+ match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
- COPY_TEXT(vers);
+ COPY_TEXT('64');
ENDIF;
- match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang);
+ match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(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('__DECC');
- SPLIT_LINE;
- COPY_TEXT('#include <ints.h>');
+ 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');
+ 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');
+ 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
$!
$! 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 (@@)
!
!
- vfile := CREATE_BUFFER("vfile", "CONFIGURE.IN");
- rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile));
- match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(bfd, ', FORWARD, EXACT, rang);
- IF match_pos <> 0 THEN;
- POSITION(BEGINNING_OF(match_pos));
- ERASE(match_pos);
- vers := CURRENT_LINE-")";
- ELSE;
- vers := "unknown";
- ENDIF;
+ 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('@VERSION@', FORWARD, EXACT, rang);
- IF match_pos <> 0 THEN;
- POSITION(BEGINNING_OF(match_pos));
- ERASE(match_pos);
- COPY_TEXT(vers);
- ENDIF;
match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
$ EOD
$endif
$
-$ write sys$output "Generated `bfd.h' from `bfd-in2.h'."
+$!
+$! 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 "#endif"
$ write tfile "},"
$ close tfile
-$ write sys$output "Generated `targmatch.h'"
$!
$!
$! 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. */
#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"
$!
-$ write sys$output "Generated `config.h'"
+$ 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