1 1.1 mrg #!/bin/sh 2 1.18 christos # $NetBSD: mknative-binutils,v 1.18 2026/02/15 15:47:46 christos Exp $ 3 1.1 mrg # 4 1.1 mrg # Shell script for generating all the constants needed for a native 5 1.6 skrll # platform build of src/external/gpl3/binutils 6 1.1 mrg # 7 1.1 mrg 8 1.1 mrg # initialise 9 1.1 mrg 10 1.1 mrg _TMPDIR=$2 11 1.1 mrg _TOP=$3 12 1.1 mrg _PLATFORM=$4 13 1.4 mrg _VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 14 1.1 mrg 15 1.1 mrg . $_TOP/tools/gcc/mknative.common 16 1.1 mrg 17 1.15 christos BFD_MACHINE_ARCH=$(echo ${MACHINE_ARCH} | sed -e 's/armv[4-7]/arm/') 18 1.15 christos 19 1.15 christos 20 1.6 skrll ##### external/gpl3/binutils/lib/libbfd ##### 21 1.1 mrg 22 1.1 mrg get_libbfd () { 23 1.16 christos local d=external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH 24 1.16 christos mkdir -p $_TOP/$d 25 1.1 mrg 26 1.16 christos getvars bfd/Makefile \ 27 1.16 christos libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \ 28 1.16 christos INCLUDES TDEFAULTS HAVEVECS | write_mk $d/defs.mk 29 1.1 mrg 30 1.16 christos for i in bfd.h bfdver.h config.h; do 31 1.16 christos write_c $d/$i < $_TMPDIR/bfd/$i 32 1.16 christos done 33 1.1 mrg } 34 1.1 mrg 35 1.6 skrll ##### external/gpl3/binutils/lib/libopcodes ##### 36 1.1 mrg 37 1.1 mrg get_libopcodes () { 38 1.16 christos local d=external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH 39 1.16 christos mkdir -p $_TOP/$d 40 1.1 mrg 41 1.16 christos getvars opcodes/Makefile \ 42 1.16 christos archdefs BFD_MACHINES libopcodes_la_SOURCES | write_mk $d/defs.mk 43 1.1 mrg 44 1.16 christos write_c $d/config.h < $_TMPDIR/opcodes/config.h 45 1.1 mrg } 46 1.1 mrg 47 1.13 christos get_libgnuctf () { 48 1.16 christos local d=external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH 49 1.16 christos mkdir -p $_TOP/$d 50 1.16 christos 51 1.16 christos getvars libctf/Makefile libctf_la_SOURCES | write_mk $d/defs.mk 52 1.12 christos 53 1.12 christos 54 1.16 christos write_c $d/config.h < $_TMPDIR/libctf/config.h 55 1.12 christos } 56 1.12 christos 57 1.6 skrll ##### external/gpl3/binutils/lib/libiberty ##### 58 1.1 mrg 59 1.1 mrg get_libiberty () { 60 1.16 christos local d=external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH 61 1.16 christos mkdir -p $_TOP/$d 62 1.1 mrg 63 1.1 mrg getvars libiberty/Makefile \ 64 1.16 christos ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES | write_mk $d/defs.mk 65 1.16 christos 66 1.16 christos write_c $d/config.h < $_TMPDIR/libiberty/config.h 67 1.16 christos } 68 1.16 christos 69 1.16 christos ##### external/gpl3/binutils/lib/libiberty ##### 70 1.16 christos 71 1.16 christos get_libsframe () { 72 1.16 christos local d=external/gpl3/binutils/lib/libsframe/arch/$BFD_MACHINE_ARCH 73 1.16 christos mkdir -p $_TOP/$d 74 1.16 christos 75 1.16 christos getvars libsframe/Makefile libsframe_la_SOURCES | write_mk $d/defs.mk 76 1.1 mrg 77 1.16 christos write_c $d/config.h < $_TMPDIR/libsframe/config.h 78 1.1 mrg } 79 1.1 mrg 80 1.6 skrll ##### external/gpl3/binutils/usr.bin ##### 81 1.1 mrg 82 1.1 mrg get_binutils () { 83 1.1 mrg ### common 84 1.1 mrg 85 1.16 christos local d=external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH 86 1.16 christos mkdir -p $_TOP/$d 87 1.1 mrg 88 1.18 christos { 89 1.18 christos getvars binutils/Makefile \ 90 1.18 christos VERSION DEFS INCLUDES PROGRAMS 91 1.18 christos getvars binutils/Makefile \ 92 1.18 christos man_MANS TEXINFOS 93 1.18 christos getvars bfd/Makefile \ 94 1.18 christos PKGVERSION | sed 's,\\\(.\),\1,' 95 1.18 christos getvars bfd/Makefile \ 96 1.18 christos REPORT_BUGS_TEXI 97 1.18 christos 98 1.18 christos for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do 99 1.18 christos getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES 100 1.18 christos done 101 1.18 christos } | write_mk $d/defs.mk 102 1.1 mrg 103 1.18 christos write_c $d/config.h < $_TMPDIR/binutils/config.h 104 1.1 mrg 105 1.1 mrg ### gas 106 1.1 mrg 107 1.16 christos d=external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH 108 1.16 christos mkdir -p $_TOP/$d 109 1.1 mrg 110 1.8 christos grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps" 111 1.8 christos getvars gas/Makefile.nodeps \ 112 1.16 christos DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 113 1.8 christos sed -e s/G_as_new_OBJECTS/G_OBJS/ \ 114 1.8 christos -e s/G_as_new_LDADD=/G_OBJS+=/ \ 115 1.11 christos -e s@config/@@g \ 116 1.8 christos -e 's/\.\..*a//' | 117 1.16 christos write_mk $d/defs.mk 118 1.1 mrg 119 1.16 christos for f in config.h itbl-cpu.h obj-format.h targ-cpu.h targ-env.h; do 120 1.16 christos write_c $d/$f < $_TMPDIR/gas/$f 121 1.1 mrg done 122 1.1 mrg 123 1.1 mrg ### gprof 124 1.16 christos d=external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH 125 1.1 mrg 126 1.16 christos mkdir -p $_TOP/$d 127 1.1 mrg 128 1.1 mrg getvars gprof/Makefile \ 129 1.1 mrg DEFS gprof_OBJECTS INCLUDES TEXINFOS \ 130 1.16 christos | write_mk $d/defs.mk 131 1.1 mrg 132 1.16 christos write_c $d/gconfig.h <$_TMPDIR/gprof/gconfig.h 133 1.1 mrg 134 1.1 mrg ### ld 135 1.1 mrg 136 1.16 christos d=external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH 137 1.16 christos mkdir -p $_TOP/$d 138 1.1 mrg 139 1.1 mrg { 140 1.1 mrg getvars ld/Makefile \ 141 1.16 christos DEFS EMUL EMULATION_OFILES INCLUDES OFILES TEXINFOS 142 1.1 mrg getvars ld/Makefile \ 143 1.1 mrg target_alias | sed 's,[\._0-9A-Z]*$,,' 144 1.9 skrll getvars ld/Makefile \ 145 1.9 skrll enable_initfini_array 146 1.16 christos } | write_mk $d/defs.mk 147 1.1 mrg 148 1.16 christos for f in config.h ldemul-list.h; do 149 1.16 christos write_c $d/$f <$_TMPDIR/ld/$f 150 1.1 mrg done 151 1.1 mrg } 152 1.1 mrg 153 1.1 mrg ##### main ##### 154 1.1 mrg 155 1.1 mrg case $1 in 156 1.2 mrg all|binutils) # everything (uses "canadian cross" temp environment) 157 1.1 mrg get_binutils 158 1.1 mrg get_libbfd 159 1.13 christos get_libgnuctf 160 1.1 mrg get_libopcodes 161 1.1 mrg get_libiberty 162 1.16 christos get_libsframe 163 1.1 mrg exit 0 164 1.1 mrg ;; 165 1.1 mrg 166 1.1 mrg *) echo invalid arguments; exit 1;; 167 1.1 mrg esac 168