11.1Smrg#!/bin/sh 21.16Schristos# $NetBSD: mknative-binutils,v 1.16 2024/06/30 16:11:11 christos Exp $ 31.1Smrg# 41.1Smrg# Shell script for generating all the constants needed for a native 51.6Sskrll# platform build of src/external/gpl3/binutils 61.1Smrg# 71.1Smrg 81.1Smrg# initialise 91.1Smrg 101.1Smrg_TMPDIR=$2 111.1Smrg_TOP=$3 121.1Smrg_PLATFORM=$4 131.4Smrg_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 141.1Smrg 151.1Smrg. $_TOP/tools/gcc/mknative.common 161.1Smrg 171.15SchristosBFD_MACHINE_ARCH=$(echo ${MACHINE_ARCH} | sed -e 's/armv[4-7]/arm/') 181.15Schristos 191.15Schristos 201.6Sskrll##### external/gpl3/binutils/lib/libbfd ##### 211.1Smrg 221.1Smrgget_libbfd () { 231.16Schristos local d=external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH 241.16Schristos mkdir -p $_TOP/$d 251.1Smrg 261.16Schristos getvars bfd/Makefile \ 271.16Schristos libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \ 281.16Schristos INCLUDES TDEFAULTS HAVEVECS | write_mk $d/defs.mk 291.1Smrg 301.16Schristos for i in bfd.h bfdver.h config.h; do 311.16Schristos write_c $d/$i < $_TMPDIR/bfd/$i 321.16Schristos done 331.1Smrg} 341.1Smrg 351.6Sskrll##### external/gpl3/binutils/lib/libopcodes ##### 361.1Smrg 371.1Smrgget_libopcodes () { 381.16Schristos local d=external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH 391.16Schristos mkdir -p $_TOP/$d 401.1Smrg 411.16Schristos getvars opcodes/Makefile \ 421.16Schristos archdefs BFD_MACHINES libopcodes_la_SOURCES | write_mk $d/defs.mk 431.1Smrg 441.16Schristos write_c $d/config.h < $_TMPDIR/opcodes/config.h 451.1Smrg} 461.1Smrg 471.13Schristosget_libgnuctf () { 481.16Schristos local d=external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH 491.16Schristos mkdir -p $_TOP/$d 501.16Schristos 511.16Schristos getvars libctf/Makefile libctf_la_SOURCES | write_mk $d/defs.mk 521.12Schristos 531.12Schristos 541.16Schristos write_c $d/config.h < $_TMPDIR/libctf/config.h 551.12Schristos} 561.12Schristos 571.6Sskrll##### external/gpl3/binutils/lib/libiberty ##### 581.1Smrg 591.1Smrgget_libiberty () { 601.16Schristos local d=external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH 611.16Schristos mkdir -p $_TOP/$d 621.1Smrg 631.1Smrg getvars libiberty/Makefile \ 641.16Schristos ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES | write_mk $d/defs.mk 651.16Schristos 661.16Schristos write_c $d/config.h < $_TMPDIR/libiberty/config.h 671.16Schristos} 681.16Schristos 691.16Schristos##### external/gpl3/binutils/lib/libiberty ##### 701.16Schristos 711.16Schristosget_libsframe () { 721.16Schristos local d=external/gpl3/binutils/lib/libsframe/arch/$BFD_MACHINE_ARCH 731.16Schristos mkdir -p $_TOP/$d 741.16Schristos 751.16Schristos getvars libsframe/Makefile libsframe_la_SOURCES | write_mk $d/defs.mk 761.1Smrg 771.16Schristos write_c $d/config.h < $_TMPDIR/libsframe/config.h 781.1Smrg} 791.1Smrg 801.6Sskrll##### external/gpl3/binutils/usr.bin ##### 811.1Smrg 821.1Smrgget_binutils () { 831.1Smrg ### common 841.1Smrg 851.16Schristos local d=external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH 861.16Schristos mkdir -p $_TOP/$d 871.1Smrg 881.1Smrg { 891.1Smrg getvars binutils/Makefile \ 901.1Smrg VERSION DEFS INCLUDES PROGRAMS 911.14Schristos getvars binutils/Makefile \ 921.1Smrg man_MANS TEXINFOS 931.14Schristos getvars bfd/Makefile \ 941.7Sskrll PKGVERSION | sed 's,\\\(.\),\1,' 951.14Schristos getvars bfd/Makefile \ 961.7Sskrll REPORT_BUGS_TEXI 971.1Smrg 981.1Smrg for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do 991.1Smrg getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES 1001.1Smrg done 1011.16Schristos } | write_mk $d/defs.mk 1021.1Smrg 1031.16Schristos write_c $d/config.h < $_TMPDIR/binutils/config.h 1041.1Smrg 1051.1Smrg ### gas 1061.1Smrg 1071.16Schristos d=external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH 1081.16Schristos mkdir -p $_TOP/$d 1091.1Smrg 1101.8Schristos grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps" 1111.8Schristos getvars gas/Makefile.nodeps \ 1121.16Schristos DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 1131.8Schristos sed -e s/G_as_new_OBJECTS/G_OBJS/ \ 1141.8Schristos -e s/G_as_new_LDADD=/G_OBJS+=/ \ 1151.11Schristos -e s@config/@@g \ 1161.8Schristos -e 's/\.\..*a//' | 1171.16Schristos write_mk $d/defs.mk 1181.1Smrg 1191.16Schristos for f in config.h itbl-cpu.h obj-format.h targ-cpu.h targ-env.h; do 1201.16Schristos write_c $d/$f < $_TMPDIR/gas/$f 1211.1Smrg done 1221.1Smrg 1231.1Smrg ### gprof 1241.16Schristos d=external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH 1251.1Smrg 1261.16Schristos mkdir -p $_TOP/$d 1271.1Smrg 1281.1Smrg getvars gprof/Makefile \ 1291.1Smrg DEFS gprof_OBJECTS INCLUDES TEXINFOS \ 1301.16Schristos | write_mk $d/defs.mk 1311.1Smrg 1321.16Schristos write_c $d/gconfig.h <$_TMPDIR/gprof/gconfig.h 1331.1Smrg 1341.1Smrg ### ld 1351.1Smrg 1361.16Schristos d=external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH 1371.16Schristos mkdir -p $_TOP/$d 1381.1Smrg 1391.1Smrg { 1401.1Smrg getvars ld/Makefile \ 1411.16Schristos DEFS EMUL EMULATION_OFILES INCLUDES OFILES TEXINFOS 1421.1Smrg getvars ld/Makefile \ 1431.1Smrg target_alias | sed 's,[\._0-9A-Z]*$,,' 1441.9Sskrll getvars ld/Makefile \ 1451.9Sskrll enable_initfini_array 1461.16Schristos } | write_mk $d/defs.mk 1471.1Smrg 1481.16Schristos for f in config.h ldemul-list.h; do 1491.16Schristos write_c $d/$f <$_TMPDIR/ld/$f 1501.1Smrg done 1511.1Smrg} 1521.1Smrg 1531.1Smrg##### main ##### 1541.1Smrg 1551.1Smrgcase $1 in 1561.2Smrgall|binutils) # everything (uses "canadian cross" temp environment) 1571.1Smrg get_binutils 1581.1Smrg get_libbfd 1591.13Schristos get_libgnuctf 1601.1Smrg get_libopcodes 1611.1Smrg get_libiberty 1621.16Schristos get_libsframe 1631.1Smrg exit 0 1641.1Smrg ;; 1651.1Smrg 1661.1Smrg*) echo invalid arguments; exit 1;; 1671.1Smrgesac 168