10fcc88b5Smrg#!/bin/sh 2*3cfdedbdSchristos# $NetBSD: mknative-binutils,v 1.16 2024/06/30 16:11:11 christos Exp $ 30fcc88b5Smrg# 40fcc88b5Smrg# Shell script for generating all the constants needed for a native 5d92e2582Sskrll# platform build of src/external/gpl3/binutils 60fcc88b5Smrg# 70fcc88b5Smrg 80fcc88b5Smrg# initialise 90fcc88b5Smrg 100fcc88b5Smrg_TMPDIR=$2 110fcc88b5Smrg_TOP=$3 120fcc88b5Smrg_PLATFORM=$4 13d99893c4Smrg_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 140fcc88b5Smrg 150fcc88b5Smrg. $_TOP/tools/gcc/mknative.common 160fcc88b5Smrg 176135670dSchristosBFD_MACHINE_ARCH=$(echo ${MACHINE_ARCH} | sed -e 's/armv[4-7]/arm/') 186135670dSchristos 196135670dSchristos 20d92e2582Sskrll##### external/gpl3/binutils/lib/libbfd ##### 210fcc88b5Smrg 220fcc88b5Smrgget_libbfd () { 23*3cfdedbdSchristos local d=external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH 24*3cfdedbdSchristos mkdir -p $_TOP/$d 250fcc88b5Smrg 260fcc88b5Smrg getvars bfd/Makefile \ 270fcc88b5Smrg libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \ 28*3cfdedbdSchristos INCLUDES TDEFAULTS HAVEVECS | write_mk $d/defs.mk 290fcc88b5Smrg 30*3cfdedbdSchristos for i in bfd.h bfdver.h config.h; do 31*3cfdedbdSchristos write_c $d/$i < $_TMPDIR/bfd/$i 32*3cfdedbdSchristos done 330fcc88b5Smrg} 340fcc88b5Smrg 35d92e2582Sskrll##### external/gpl3/binutils/lib/libopcodes ##### 360fcc88b5Smrg 370fcc88b5Smrgget_libopcodes () { 38*3cfdedbdSchristos local d=external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH 39*3cfdedbdSchristos mkdir -p $_TOP/$d 400fcc88b5Smrg 410fcc88b5Smrg getvars opcodes/Makefile \ 42*3cfdedbdSchristos archdefs BFD_MACHINES libopcodes_la_SOURCES | write_mk $d/defs.mk 430fcc88b5Smrg 44*3cfdedbdSchristos write_c $d/config.h < $_TMPDIR/opcodes/config.h 450fcc88b5Smrg} 460fcc88b5Smrg 471c5c771eSchristosget_libgnuctf () { 48*3cfdedbdSchristos local d=external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH 49*3cfdedbdSchristos mkdir -p $_TOP/$d 50a5bd4ab4Schristos 51*3cfdedbdSchristos getvars libctf/Makefile libctf_la_SOURCES | write_mk $d/defs.mk 52a5bd4ab4Schristos 53*3cfdedbdSchristos 54*3cfdedbdSchristos write_c $d/config.h < $_TMPDIR/libctf/config.h 55a5bd4ab4Schristos} 56a5bd4ab4Schristos 57d92e2582Sskrll##### external/gpl3/binutils/lib/libiberty ##### 580fcc88b5Smrg 590fcc88b5Smrgget_libiberty () { 60*3cfdedbdSchristos local d=external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH 61*3cfdedbdSchristos mkdir -p $_TOP/$d 620fcc88b5Smrg 630fcc88b5Smrg getvars libiberty/Makefile \ 64*3cfdedbdSchristos ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES | write_mk $d/defs.mk 650fcc88b5Smrg 66*3cfdedbdSchristos write_c $d/config.h < $_TMPDIR/libiberty/config.h 67*3cfdedbdSchristos} 68*3cfdedbdSchristos 69*3cfdedbdSchristos##### external/gpl3/binutils/lib/libiberty ##### 70*3cfdedbdSchristos 71*3cfdedbdSchristosget_libsframe () { 72*3cfdedbdSchristos local d=external/gpl3/binutils/lib/libsframe/arch/$BFD_MACHINE_ARCH 73*3cfdedbdSchristos mkdir -p $_TOP/$d 74*3cfdedbdSchristos 75*3cfdedbdSchristos getvars libsframe/Makefile libsframe_la_SOURCES | write_mk $d/defs.mk 76*3cfdedbdSchristos 77*3cfdedbdSchristos write_c $d/config.h < $_TMPDIR/libsframe/config.h 780fcc88b5Smrg} 790fcc88b5Smrg 80d92e2582Sskrll##### external/gpl3/binutils/usr.bin ##### 810fcc88b5Smrg 820fcc88b5Smrgget_binutils () { 830fcc88b5Smrg ### common 840fcc88b5Smrg 85*3cfdedbdSchristos local d=external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH 86*3cfdedbdSchristos mkdir -p $_TOP/$d 870fcc88b5Smrg 880fcc88b5Smrg { 890fcc88b5Smrg getvars binutils/Makefile \ 900fcc88b5Smrg VERSION DEFS INCLUDES PROGRAMS 917aa193d2Schristos getvars binutils/Makefile \ 920fcc88b5Smrg man_MANS TEXINFOS 937aa193d2Schristos getvars bfd/Makefile \ 941cb57949Sskrll PKGVERSION | sed 's,\\\(.\),\1,' 957aa193d2Schristos getvars bfd/Makefile \ 961cb57949Sskrll REPORT_BUGS_TEXI 970fcc88b5Smrg 980fcc88b5Smrg for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do 990fcc88b5Smrg getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES 1000fcc88b5Smrg done 101*3cfdedbdSchristos } | write_mk $d/defs.mk 1020fcc88b5Smrg 103*3cfdedbdSchristos write_c $d/config.h < $_TMPDIR/binutils/config.h 1040fcc88b5Smrg 1050fcc88b5Smrg ### gas 1060fcc88b5Smrg 107*3cfdedbdSchristos d=external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH 108*3cfdedbdSchristos mkdir -p $_TOP/$d 1090fcc88b5Smrg 110544cd45cSchristos grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps" 111544cd45cSchristos getvars gas/Makefile.nodeps \ 112544cd45cSchristos DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 113544cd45cSchristos sed -e s/G_as_new_OBJECTS/G_OBJS/ \ 114544cd45cSchristos -e s/G_as_new_LDADD=/G_OBJS+=/ \ 115ea1b76a4Schristos -e s@config/@@g \ 116544cd45cSchristos -e 's/\.\..*a//' | 117*3cfdedbdSchristos write_mk $d/defs.mk 1180fcc88b5Smrg 119*3cfdedbdSchristos for f in config.h itbl-cpu.h obj-format.h targ-cpu.h targ-env.h; do 120*3cfdedbdSchristos write_c $d/$f < $_TMPDIR/gas/$f 1210fcc88b5Smrg done 1220fcc88b5Smrg 1230fcc88b5Smrg ### gprof 124*3cfdedbdSchristos d=external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH 1250fcc88b5Smrg 126*3cfdedbdSchristos mkdir -p $_TOP/$d 1270fcc88b5Smrg 1280fcc88b5Smrg getvars gprof/Makefile \ 1290fcc88b5Smrg DEFS gprof_OBJECTS INCLUDES TEXINFOS \ 130*3cfdedbdSchristos | write_mk $d/defs.mk 1310fcc88b5Smrg 132*3cfdedbdSchristos write_c $d/gconfig.h <$_TMPDIR/gprof/gconfig.h 1330fcc88b5Smrg 1340fcc88b5Smrg ### ld 1350fcc88b5Smrg 136*3cfdedbdSchristos d=external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH 137*3cfdedbdSchristos mkdir -p $_TOP/$d 1380fcc88b5Smrg 1390fcc88b5Smrg { 1400fcc88b5Smrg getvars ld/Makefile \ 141*3cfdedbdSchristos DEFS EMUL EMULATION_OFILES INCLUDES OFILES TEXINFOS 1420fcc88b5Smrg getvars ld/Makefile \ 1430fcc88b5Smrg target_alias | sed 's,[\._0-9A-Z]*$,,' 14441c37f73Sskrll getvars ld/Makefile \ 14541c37f73Sskrll enable_initfini_array 146*3cfdedbdSchristos } | write_mk $d/defs.mk 1470fcc88b5Smrg 148*3cfdedbdSchristos for f in config.h ldemul-list.h; do 149*3cfdedbdSchristos write_c $d/$f <$_TMPDIR/ld/$f 1500fcc88b5Smrg done 1510fcc88b5Smrg} 1520fcc88b5Smrg 1530fcc88b5Smrg##### main ##### 1540fcc88b5Smrg 1550fcc88b5Smrgcase $1 in 156ece8a60dSmrgall|binutils) # everything (uses "canadian cross" temp environment) 1570fcc88b5Smrg get_binutils 1580fcc88b5Smrg get_libbfd 1591c5c771eSchristos get_libgnuctf 1600fcc88b5Smrg get_libopcodes 1610fcc88b5Smrg get_libiberty 162*3cfdedbdSchristos get_libsframe 1630fcc88b5Smrg exit 0 1640fcc88b5Smrg ;; 1650fcc88b5Smrg 1660fcc88b5Smrg*) echo invalid arguments; exit 1;; 1670fcc88b5Smrgesac 168