xref: /netbsd-src/tools/binutils/mknative-binutils (revision 3cfdedbddcbf1d8dfc2ac9c3ed3e569dd37f001f)
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