1 1.1 christos $! 2 1.1 christos $! This file configures the bfd library for use with openVMS. 3 1.1 christos $! 4 1.1 christos $! We do not use the configure script, since we do not have /bin/sh 5 1.1 christos $! to execute it. 6 1.1 christos $! 7 1.1 christos $! Written by Klaus K"ampf (kkaempf (at] rmi.de) 8 1.1 christos $! Rewritten by Tristan Gingold (gingold (at] adacore.com) 9 1.1 christos $! 10 1.11 christos $! Copyright (C) 2012-2024 Free Software Foundation, Inc. 11 1.1 christos $! 12 1.1 christos $! This file is free software; you can redistribute it and/or modify 13 1.1 christos $! it under the terms of the GNU General Public License as published by 14 1.1 christos $! the Free Software Foundation; either version 3 of the License, or 15 1.1 christos $! (at your option) any later version. 16 1.6 christos $! 17 1.1 christos $! This program is distributed in the hope that it will be useful, 18 1.1 christos $! but WITHOUT ANY WARRANTY; without even the implied warranty of 19 1.1 christos $! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 1.1 christos $! GNU General Public License for more details. 21 1.6 christos $! 22 1.1 christos $! You should have received a copy of the GNU General Public License 23 1.1 christos $! along with this program; see the file COPYING3. If not see 24 1.1 christos $! <http://www.gnu.org/licenses/>. 25 1.1 christos $! 26 1.1 christos $ arch=F$GETSYI("ARCH_NAME") 27 1.1 christos $ arch=F$EDIT(arch,"LOWERCASE") 28 1.1 christos $if arch .eqs. "alpha" then target = "alpha" 29 1.1 christos $if arch .eqs. "ia64" then target = "ia64" 30 1.1 christos $! 31 1.1 christos $if (arch .eqs. "alpha") .or. (arch .eqs. "ia64") 32 1.1 christos $then 33 1.1 christos $! 34 1.1 christos $ write sys$output "Configuring BFD for ''target' target" 35 1.1 christos $! 36 1.1 christos $! 37 1.1 christos $! copy bfd-in2.h to bfd.h, replacing @ macros 38 1.1 christos $! 39 1.1 christos $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - 40 1.1 christos []bfd-in2.h /output=[]bfd.h 41 1.1 christos $DECK 42 1.1 christos ! 43 1.1 christos ! Copy file, changing lines with macros (@@) 44 1.1 christos ! 45 1.1 christos ! 46 1.1 christos set (success,off); 47 1.1 christos 48 1.1 christos file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); 49 1.1 christos rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); 50 1.1 christos 51 1.1 christos match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang); 52 1.1 christos IF match_pos <> 0 THEN; 53 1.1 christos POSITION(BEGINNING_OF(match_pos)); 54 1.1 christos ERASE(match_pos); 55 1.1 christos COPY_TEXT('64'); 56 1.1 christos ENDIF; 57 1.1 christos match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang); 58 1.1 christos IF match_pos <> 0 THEN; 59 1.1 christos POSITION(BEGINNING_OF(match_pos)); 60 1.1 christos ERASE(match_pos); 61 1.1 christos COPY_TEXT('64'); 62 1.1 christos ENDIF; 63 1.1 christos match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang); 64 1.1 christos IF match_pos <> 0 THEN; 65 1.1 christos POSITION(BEGINNING_OF(match_pos)); 66 1.1 christos ERASE(match_pos); 67 1.1 christos COPY_TEXT('bfd_signed_vma'); 68 1.1 christos ENDIF; 69 1.10 christos match_pos := SEARCH_QUIETLY('@bfd_ufile_ptr@', FORWARD, EXACT, rang); 70 1.1 christos IF match_pos <> 0 THEN; 71 1.1 christos POSITION(BEGINNING_OF(match_pos)); 72 1.1 christos ERASE(match_pos); 73 1.10 christos COPY_TEXT('bfd_vma'); 74 1.1 christos ENDIF; 75 1.1 christos match_pos := SEARCH_QUIETLY('@supports_plugins@', FORWARD, EXACT, rang); 76 1.1 christos IF match_pos <> 0 THEN; 77 1.1 christos POSITION(BEGINNING_OF(match_pos)); 78 1.1 christos ERASE(match_pos); 79 1.1 christos COPY_TEXT('0'); 80 1.1 christos ENDIF; 81 1.1 christos WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); 82 1.1 christos QUIT 83 1.1 christos $ EOD 84 1.1 christos $ 85 1.1 christos $else 86 1.1 christos $ 87 1.1 christos $ write sys$output "Configuring for Vax target" 88 1.1 christos $ target = "vax" 89 1.1 christos $! 90 1.1 christos $! copy bfd-in2.h to bfd.h, replacing @ macros 91 1.1 christos $! 92 1.1 christos $ write sys$output "Generated `bfd.h' from `bfd-in2.h'." 93 1.1 christos $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - 94 1.1 christos []bfd-in2.h /output=[]bfd.h 95 1.1 christos $DECK 96 1.1 christos ! 97 1.1 christos ! Copy file, changing lines with macros (@@) 98 1.1 christos ! 99 1.1 christos ! 100 1.1 christos set (success,off); 101 1.1 christos 102 1.1 christos file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); 103 1.1 christos rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); 104 1.1 christos 105 1.1 christos match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang); 106 1.1 christos IF match_pos <> 0 THEN; 107 1.1 christos POSITION(BEGINNING_OF(match_pos)); 108 1.1 christos ERASE(match_pos); 109 1.1 christos COPY_TEXT('32'); 110 1.1 christos ENDIF; 111 1.10 christos match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang); 112 1.1 christos IF match_pos <> 0 THEN; 113 1.1 christos POSITION(BEGINNING_OF(match_pos)); 114 1.1 christos ERASE(match_pos); 115 1.10 christos COPY_TEXT('32'); 116 1.1 christos ENDIF; 117 1.10 christos match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang); 118 1.1 christos IF match_pos <> 0 THEN; 119 1.1 christos POSITION(BEGINNING_OF(match_pos)); 120 1.1 christos ERASE(match_pos); 121 1.10 christos COPY_TEXT('bfd_signed_vma'); 122 1.1 christos ENDIF; 123 1.10 christos match_pos := SEARCH_QUIETLY('@bfd_ufile_ptr@', FORWARD, EXACT, rang); 124 1.1 christos IF match_pos <> 0 THEN; 125 1.1 christos POSITION(BEGINNING_OF(match_pos)); 126 1.1 christos ERASE(match_pos); 127 1.10 christos COPY_TEXT('bfd_vma'); 128 1.1 christos ENDIF; 129 1.10 christos match_pos := SEARCH_QUIETLY('@supports_plugins@', FORWARD, EXACT, rang); 130 1.1 christos IF match_pos <> 0 THEN; 131 1.1 christos POSITION(BEGINNING_OF(match_pos)); 132 1.1 christos ERASE(match_pos); 133 1.10 christos COPY_TEXT('0'); 134 1.1 christos ENDIF; 135 1.1 christos WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); 136 1.1 christos QUIT 137 1.1 christos $ EOD 138 1.1 christos $endif 139 1.1 christos $ 140 1.1 christos $! 141 1.1 christos $! create bfdver.h 142 1.1 christos $! 143 1.1 christos $ write sys$output "Generate `bfdver.h' from 'version.h' and `configure.in'." 144 1.1 christos $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input - 145 1.1 christos []version.h /output=[]bfdver.h 146 1.1 christos $DECK 147 1.1 christos ! 148 1.1 christos ! Copy file, changing lines with macros (@@) 149 1.1 christos ! 150 1.1 christos ! 151 1.1 christos set (success,off); 152 1.1 christos vfile := CREATE_BUFFER("vfile", "configure.in"); 153 1.1 christos rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile)); 154 1.1 christos match_pos := SEARCH_QUIETLY('AC_INIT([bfd], [', FORWARD, EXACT, rang); 155 1.1 christos IF match_pos <> 0 THEN; 156 1.1 christos POSITION(BEGINNING_OF(match_pos)); 157 1.1 christos ERASE(match_pos); 158 1.1 christos vers := CURRENT_LINE-"])"; 159 1.1 christos ELSE; 160 1.1 christos vers := "unknown"; 161 1.1 christos ENDIF; 162 1.1 christos versnum := vers - "." - "."; 163 1.1 christos 164 1.1 christos file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); 165 1.1 christos rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file)); 166 1.1 christos 167 1.1 christos match_pos := SEARCH_QUIETLY('@bfd_version@', FORWARD, EXACT, rang); 168 1.1 christos IF match_pos <> 0 THEN; 169 1.1 christos POSITION(BEGINNING_OF(match_pos)); 170 1.1 christos ERASE(match_pos); 171 1.1 christos COPY_TEXT(versnum); 172 1.1 christos ENDIF; 173 1.1 christos match_pos := SEARCH_QUIETLY('@bfd_version_string@', FORWARD, EXACT, rang); 174 1.1 christos IF match_pos <> 0 THEN; 175 1.1 christos POSITION(BEGINNING_OF(match_pos)); 176 1.1 christos ERASE(match_pos); 177 1.1 christos COPY_TEXT('"'); 178 1.1 christos COPY_TEXT(vers); 179 1.1 christos COPY_TEXT('"'); 180 1.1 christos ENDIF; 181 1.1 christos match_pos := SEARCH_QUIETLY('@bfd_version_package@', FORWARD, EXACT, rang); 182 1.1 christos IF match_pos <> 0 THEN; 183 1.1 christos POSITION(BEGINNING_OF(match_pos)); 184 1.1 christos ERASE(match_pos); 185 1.1 christos COPY_TEXT('"(GNU Binutils) "'); 186 1.1 christos ENDIF; 187 1.1 christos match_pos := SEARCH_QUIETLY('@report_bugs_to@', FORWARD, EXACT, rang); 188 1.1 christos IF match_pos <> 0 THEN; 189 1.1 christos POSITION(BEGINNING_OF(match_pos)); 190 1.1 christos ERASE(match_pos); 191 1.10 christos COPY_TEXT('"<https://www.sourceware.org/bugzilla/>"'); 192 1.1 christos ENDIF; 193 1.1 christos WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); 194 1.1 christos QUIT 195 1.1 christos $ EOD 196 1.1 christos $! 197 1.1 christos $! 198 1.1 christos $! create targmatch.h 199 1.1 christos $! 200 1.1 christos $ write sys$output "Generate `targmatch.h'" 201 1.1 christos $ open/write tfile []targmatch.h 202 1.1 christos $ write tfile "{ """ + target + "-*-*vms*""" + "," 203 1.1 christos $ write tfile "#if defined (SELECT_VECS)" 204 1.1 christos $ write tfile "SELECT_VECS" 205 1.1 christos $ write tfile "#else" 206 1.1 christos $ write tfile "UNSUPPORTED_TARGET" 207 1.1 christos $ write tfile "#endif" 208 1.1 christos $ write tfile "}," 209 1.1 christos $ close tfile 210 1.1 christos $! 211 1.1 christos $! 212 1.1 christos $! create config.h 213 1.1 christos $! 214 1.1 christos $ write sys$output "Generate `config.h'" 215 1.1 christos $ create []config.h 216 1.1 christos /* config.h-vms. Generated by hand by Klaus Kmpf, kkaempf (at] didymus.rmi.de. */ 217 1.1 christos /* config.in. Generated automatically from configure.in by autoheader. */ 218 1.1 christos /* Whether malloc must be declared even if <stdlib.h> is included. */ 219 1.1 christos /* #undef NEED_DECLARATION_MALLOC */ 220 1.1 christos /* Whether free must be declared even if <stdlib.h> is included. */ 221 1.1 christos /* #undef NEED_DECLARATION_FREE */ 222 1.1 christos /* Define if you have a working `mmap' system call. */ 223 1.1 christos /* #define HAVE_MMAP 1 */ 224 1.1 christos /* Do we need to use the b modifier when opening binary files? */ 225 1.1 christos /* #undef USE_BINARY_FOPEN */ 226 1.1 christos /* Name of host specific header file to include in trad-core.c. */ 227 1.1 christos /* #undef TRAD_HEADER */ 228 1.1 christos /* Define only if <sys/procfs.h> is available *and* it defines prstatus_t. */ 229 1.1 christos /* #undef HAVE_SYS_PROCFS_H */ 230 1.1 christos /* Do we really want to use mmap if it's available? */ 231 1.1 christos /* #undef USE_MMAP */ 232 1.1 christos /* Define if you have the fcntl function. */ 233 1.1 christos #define HAVE_FCNTL 1 234 1.1 christos /* Define if you have the getpagesize function. */ 235 1.1 christos #define HAVE_GETPAGESIZE 1 236 1.1 christos /* Define if you have the madvise function. */ 237 1.1 christos #define HAVE_MADVISE 1 238 1.1 christos /* Define if you have the mprotect function. */ 239 1.1 christos #define HAVE_MPROTECT 1 240 1.1 christos /* Define if you have the <fcntl.h> header file. */ 241 1.1 christos #define HAVE_FCNTL_H 1 242 1.1 christos /* Define if you have the <stddef.h> header file. */ 243 1.1 christos #define HAVE_STDDEF_H 1 244 1.1 christos /* Define if you have the <stdlib.h> header file. */ 245 1.1 christos #define HAVE_STDLIB_H 1 246 1.1 christos /* Define if you have the <string.h> header file. */ 247 1.1 christos #define HAVE_STRING_H 1 248 1.1 christos /* Define if you have the <strings.h> header file. */ 249 1.1 christos #define HAVE_STRINGS_H 1 250 1.1 christos /* Define if you have the <sys/file.h> header file. */ 251 1.1 christos #define HAVE_SYS_FILE_H 1 252 1.1 christos /* Define if you have the <time.h> header file. */ 253 1.1 christos #define HAVE_TIME_H 1 254 1.1 christos /* Define if you have the <unistd.h> header file. */ 255 1.1 christos #define HAVE_UNISTD_H 1 256 1.1 christos /* Disable NLS */ 257 1.1 christos #undef ENABLE_NLS 258 1.1 christos /* Name of package */ 259 1.1 christos #define PACKAGE "bfd" 260 1.1 christos /* Define to the address where bug reports for this package should be sent. */ 261 1.1 christos #define PACKAGE_BUGREPORT "" 262 1.1 christos /* Define to the full name of this package. */ 263 1.1 christos #define PACKAGE_NAME "bfd" 264 1.1 christos /* Define to the full name and version of this package. */ 265 1.1 christos #define PACKAGE_STRING "bfd" 266 1.1 christos /* Define to the one symbol short name of this package. */ 267 1.1 christos #define PACKAGE_TARNAME "bfd" 268 1.1 christos /* Define to the home page for this package. */ 269 1.1 christos #define PACKAGE_URL "" 270 1.1 christos /* Define to the version of this package. */ 271 1.1 christos #define PACKAGE_VERSION "(package version)" 272 1.1 christos $! 273 1.1 christos $ write sys$output "Copy sysdep.h" 274 1.1 christos $ copy [.hosts]alphavms.h sysdep.h 275 1.1 christos $ 276 1.1 christos $ write sys$output "Generate build.com" 277 1.1 christos $! 278 1.1 christos $ if ARCH.eqs."alpha" 279 1.1 christos $ then 280 1.1 christos $ create build.com 281 1.1 christos $DECK 282 1.3 christos $ DEFS="""SELECT_VECS=&alpha_vms_vec"","+- 283 1.1 christos """SELECT_ARCHITECTURES=&bfd_alpha_arch""" 284 1.1 christos $ FILES="cpu-alpha,vms,vms-hdr,vms-gsd,vms-tir,vms-misc," 285 1.1 christos $EOD 286 1.1 christos $ endif 287 1.1 christos $ if ARCH.eqs."ia64" 288 1.1 christos $ then 289 1.1 christos $ create build.com 290 1.1 christos $DECK 291 1.3 christos $ DEFS="""SELECT_VECS=&ia64_elf64_vms_vec"","+- 292 1.1 christos """SELECT_ARCHITECTURES=&bfd_ia64_arch""" 293 1.1 christos $ FILES="cpu-ia64,elf64-ia64,elf-strtab,corefile,stabs,merge,elf-eh-frame,"+- 294 1.1 christos "elflink,elf-attrs,dwarf1,elf64," 295 1.1 christos $EOD 296 1.1 christos $ create substxx.tpu 297 1.1 christos $DECK 298 1.1 christos set (success,off); 299 1.1 christos file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name")); 300 1.1 christos found_range := CREATE_RANGE(BEGINNING_OF(file), BEGINNING_OF(file)); 301 1.1 christos 302 1.1 christos LOOP 303 1.1 christos rang := CREATE_RANGE (END_OF(found_range),END_OF(file)); 304 1.1 christos match_pos := SEARCH_QUIETLY('NN', FORWARD, EXACT, rang); 305 1.1 christos EXITIF match_pos = 0; 306 1.1 christos POSITION(BEGINNING_OF(match_pos)); 307 1.1 christos ERASE(match_pos); 308 1.1 christos COPY_TEXT('64'); 309 1.1 christos ENDLOOP; 310 1.1 christos WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file")); 311 1.1 christos QUIT 312 1.1 christos $ EOD 313 1.1 christos $ write sys$output "Generate elf64-target.h from elfxx-target.h" 314 1.1 christos $ edit/tpu/nojournal/nosection/nodisplay/command=substxx.tpu - 315 1.1 christos []elfXX-target.h /output=[]elf64-target.h 316 1.1 christos $ del substxx.tpu;* 317 1.1 christos $ endif 318 1.1 christos $ append sys$input build.com 319 1.1 christos $DECK 320 1.1 christos $ DEFS=DEFS + ",""unlink=remove"",""DEBUGDIR=""""GNU$DEBUGDIR:""""""" 321 1.1 christos $ OPT="/noopt/debug" 322 1.1 christos $ CFLAGS="/name=(as_is,shortened)" + - 323 1.1 christos "/include=([],""../"",""../include"")" + - 324 1.1 christos "/define=(" + DEFS + ")" + OPT 325 1.1 christos $ FILES=FILES + "archive,archive64,archures,bfd,bfdio,binary,cache,coffgen,"+- 326 1.1 christos "compress,corefile,dwarf2,elf,format,hash,ihex,init,libbfd,linker,"+- 327 1.1 christos "opncls,reloc,section,simple,srec,stab-syms,syms,targets,tekhex,verilog" 328 1.1 christos $ write sys$output "CFLAGS=",CFLAGS 329 1.1 christos $ cflags_libbfd="/warning=(disable=missingreturn)" 330 1.1 christos $ cflags_nil="" 331 1.1 christos $ NUM = 0 332 1.1 christos $ OBJS="" 333 1.1 christos $ LOOP: 334 1.1 christos $ F = F$ELEMENT(NUM,",",FILES) 335 1.1 christos $ IF F.EQS."," THEN GOTO END 336 1.1 christos $ eflags_name="cflags_''f'" 337 1.1 christos $ name_len=f$length(eflags_name) 338 1.1 christos $ dash_pos=f$locate("-",eflags_name) 339 1.1 christos $ if dash_pos.ne.name_len 340 1.1 christos $ then 341 1.1 christos $ eflags_name['dash_pos,1]:="_" 342 1.1 christos $ dash_pos=f$locate("-",eflags_name) 343 1.1 christos $ if dash_pos.ne.name_len then eflags_name['dash_pos,1]:="_" 344 1.1 christos $ endif 345 1.1 christos $ if f$type('eflags_name).eqs."" then eflags_name="cflags_nil" 346 1.1 christos $ eflags='eflags_name 347 1.1 christos $ write sys$output "Compiling ", F, ".c", eflags 348 1.1 christos $ cc 'CFLAGS 'eflags 'F.c 349 1.1 christos $ IF OBJS.NES."" THEN OBJS=OBJS + "," 350 1.1 christos $ OBJS=OBJS + F + ".obj" 351 1.1 christos $ NUM = NUM + 1 352 1.1 christos $ GOTO LOOP 353 1.1 christos $ END: 354 1.1 christos $ purge 355 1.1 christos $ lib/create libbfd 'OBJS 356 1.1 christos $EOD 357