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