mknative-binutils revision 1.15
11.1Smrg#!/bin/sh
21.15Schristos#	$NetBSD: mknative-binutils,v 1.15 2023/02/07 20:37:30 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.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH
241.1Smrg
251.1Smrg	{
261.1Smrg		getvars bfd/Makefile \
271.1Smrg			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
281.10Schristos			INCLUDES TDEFAULTS HAVEVECS
291.15Schristos	} | write_mk external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH/defs.mk
301.1Smrg
311.15Schristos	write_c external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
321.15Schristos	write_c external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h
331.1Smrg
341.1Smrg	{
351.1Smrg		cat $_TMPDIR/bfd/config.h
361.15Schristos	} | write_c external/gpl3/binutils/lib/libbfd/arch/$BFD_MACHINE_ARCH/config.h
371.1Smrg}
381.1Smrg
391.6Sskrll##### external/gpl3/binutils/lib/libopcodes #####
401.1Smrg
411.1Smrgget_libopcodes () {
421.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH
431.1Smrg
441.1Smrg	{
451.1Smrg		getvars opcodes/Makefile \
461.1Smrg			archdefs BFD_MACHINES libopcodes_la_SOURCES
471.15Schristos	} | write_mk external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH/defs.mk
481.1Smrg
491.1Smrg	{
501.1Smrg		cat $_TMPDIR/opcodes/config.h
511.15Schristos	} | write_c external/gpl3/binutils/lib/libopcodes/arch/$BFD_MACHINE_ARCH/config.h
521.1Smrg}
531.1Smrg
541.13Schristosget_libgnuctf () {
551.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH
561.12Schristos
571.12Schristos	{
581.12Schristos		getvars libctf/Makefile libctf_la_SOURCES
591.15Schristos	} | write_mk external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH/defs.mk
601.12Schristos
611.12Schristos	{
621.12Schristos		cat $_TMPDIR/libctf/config.h
631.15Schristos	} | write_c external/gpl3/binutils/lib/libgnuctf/arch/$BFD_MACHINE_ARCH/config.h
641.12Schristos}
651.12Schristos
661.6Sskrll##### external/gpl3/binutils/lib/libiberty #####
671.1Smrg
681.1Smrgget_libiberty () {
691.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH
701.1Smrg
711.1Smrg	getvars libiberty/Makefile \
721.1Smrg		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
731.15Schristos		| write_mk external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH/defs.mk
741.1Smrg
751.15Schristos	write_c external/gpl3/binutils/lib/libiberty/arch/$BFD_MACHINE_ARCH/config.h \
761.1Smrg		<$_TMPDIR/libiberty/config.h
771.1Smrg}
781.1Smrg
791.6Sskrll##### external/gpl3/binutils/usr.bin #####
801.1Smrg
811.1Smrgget_binutils () {
821.1Smrg	### common
831.1Smrg
841.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH
851.1Smrg
861.1Smrg	{
871.1Smrg		getvars binutils/Makefile \
881.1Smrg			VERSION DEFS INCLUDES PROGRAMS
891.14Schristos		getvars binutils/Makefile \
901.1Smrg			man_MANS TEXINFOS
911.14Schristos		getvars bfd/Makefile \
921.7Sskrll			PKGVERSION | sed 's,\\\(.\),\1,'
931.14Schristos		getvars bfd/Makefile \
941.7Sskrll			REPORT_BUGS_TEXI
951.1Smrg
961.1Smrg		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
971.1Smrg			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
981.1Smrg		done
991.15Schristos	} | write_mk external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH/defs.mk
1001.1Smrg
1011.15Schristos	write_c external/gpl3/binutils/usr.bin/common/arch/$BFD_MACHINE_ARCH/config.h \
1021.1Smrg		<$_TMPDIR/binutils/config.h
1031.1Smrg
1041.1Smrg	### gas
1051.1Smrg
1061.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH
1071.1Smrg
1081.8Schristos	grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps"
1091.8Schristos	getvars gas/Makefile.nodeps \
1101.8Schristos                DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 
1111.8Schristos	sed	-e s/G_as_new_OBJECTS/G_OBJS/ \
1121.8Schristos		-e s/G_as_new_LDADD=/G_OBJS+=/ \
1131.11Schristos		-e s@config/@@g \
1141.8Schristos		-e 's/\.\..*a//' |
1151.15Schristos	write_mk external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH/defs.mk
1161.1Smrg
1171.1Smrg	for f in config itbl-cpu obj-format targ-cpu targ-env; do
1181.15Schristos		write_c external/gpl3/binutils/usr.bin/gas/arch/$BFD_MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
1191.1Smrg	done
1201.1Smrg
1211.1Smrg	### gprof
1221.1Smrg
1231.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH
1241.1Smrg
1251.1Smrg	getvars gprof/Makefile \
1261.1Smrg		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
1271.15Schristos		| write_mk external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH/defs.mk
1281.1Smrg
1291.15Schristos	write_c external/gpl3/binutils/usr.bin/gprof/arch/$BFD_MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
1301.1Smrg
1311.1Smrg	### ld
1321.1Smrg
1331.15Schristos	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH
1341.1Smrg
1351.1Smrg	{
1361.1Smrg		getvars ld/Makefile \
1371.1Smrg			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
1381.1Smrg		getvars ld/Makefile \
1391.1Smrg			target_alias | sed 's,[\._0-9A-Z]*$,,'
1401.9Sskrll		getvars	ld/Makefile \
1411.9Sskrll			enable_initfini_array
1421.15Schristos	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH/defs.mk
1431.1Smrg
1441.1Smrg	for f in config ldemul-list; do
1451.15Schristos		write_c external/gpl3/binutils/usr.bin/ld/arch/$BFD_MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
1461.1Smrg	done
1471.1Smrg}
1481.1Smrg
1491.1Smrg##### main #####
1501.1Smrg
1511.1Smrgcase $1 in
1521.2Smrgall|binutils)	# everything (uses "canadian cross" temp environment)
1531.1Smrg	get_binutils
1541.1Smrg	get_libbfd
1551.13Schristos	get_libgnuctf
1561.1Smrg	get_libopcodes
1571.1Smrg	get_libiberty
1581.1Smrg	exit 0
1591.1Smrg	;;
1601.1Smrg
1611.1Smrg*)	echo invalid arguments; exit 1;;
1621.1Smrgesac
163