mknative-binutils revision 1.10
11.1Smrg#!/bin/sh
21.10Schristos#	$NetBSD: mknative-binutils,v 1.10 2018/11/07 01:14:19 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.6Sskrll##### external/gpl3/binutils/lib/libbfd #####
181.1Smrg
191.1Smrgget_libbfd () {
201.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH
211.1Smrg
221.1Smrg	{
231.1Smrg		getvars bfd/Makefile \
241.1Smrg			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
251.10Schristos			INCLUDES TDEFAULTS HAVEVECS
261.6Sskrll	} | write_mk external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/defs.mk
271.1Smrg
281.6Sskrll	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
291.6Sskrll	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h
301.6Sskrll	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd_stdint.h <$_TMPDIR/bfd/bfd_stdint.h
311.1Smrg
321.1Smrg	{
331.1Smrg		cat $_TMPDIR/bfd/config.h
341.6Sskrll	} | write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/config.h
351.1Smrg}
361.1Smrg
371.6Sskrll##### external/gpl3/binutils/lib/libopcodes #####
381.1Smrg
391.1Smrgget_libopcodes () {
401.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH
411.1Smrg
421.1Smrg	{
431.1Smrg		getvars opcodes/Makefile \
441.1Smrg			archdefs BFD_MACHINES libopcodes_la_SOURCES
451.6Sskrll	} | write_mk external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/defs.mk
461.1Smrg
471.1Smrg	{
481.1Smrg		cat $_TMPDIR/opcodes/config.h
491.6Sskrll	} | write_c external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/config.h
501.1Smrg}
511.1Smrg
521.6Sskrll##### external/gpl3/binutils/lib/libiberty #####
531.1Smrg
541.1Smrgget_libiberty () {
551.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH
561.1Smrg
571.1Smrg	getvars libiberty/Makefile \
581.1Smrg		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
591.6Sskrll		| write_mk external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/defs.mk
601.1Smrg
611.6Sskrll	write_c external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/config.h \
621.1Smrg		<$_TMPDIR/libiberty/config.h
631.1Smrg}
641.1Smrg
651.6Sskrll##### external/gpl3/binutils/usr.bin #####
661.1Smrg
671.1Smrgget_binutils () {
681.1Smrg	### common
691.1Smrg
701.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH
711.1Smrg
721.1Smrg	{
731.1Smrg		getvars binutils/Makefile \
741.1Smrg			VERSION DEFS INCLUDES PROGRAMS
751.1Smrg		getvars binutils/doc/Makefile \
761.1Smrg			man_MANS TEXINFOS
771.7Sskrll		getvars bfd/doc/Makefile \
781.7Sskrll			PKGVERSION | sed 's,\\\(.\),\1,'
791.7Sskrll		getvars bfd/doc/Makefile \
801.7Sskrll			REPORT_BUGS_TEXI
811.1Smrg
821.1Smrg		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
831.1Smrg			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
841.1Smrg		done
851.6Sskrll	} | write_mk external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/defs.mk
861.1Smrg
871.6Sskrll	write_c external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/config.h \
881.1Smrg		<$_TMPDIR/binutils/config.h
891.1Smrg
901.1Smrg	### gas
911.1Smrg
921.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH
931.1Smrg
941.8Schristos	grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps"
951.8Schristos	getvars gas/Makefile.nodeps \
961.8Schristos                DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 
971.8Schristos	sed	-e s/G_as_new_OBJECTS/G_OBJS/ \
981.8Schristos		-e s/G_as_new_LDADD=/G_OBJS+=/ \
991.10Schristos		-e s@config/@@ \
1001.8Schristos		-e 's/\.\..*a//' |
1011.8Schristos	write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk
1021.1Smrg
1031.1Smrg	for f in config itbl-cpu obj-format targ-cpu targ-env; do
1041.6Sskrll		write_c external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
1051.1Smrg	done
1061.1Smrg
1071.1Smrg	### gprof
1081.1Smrg
1091.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH
1101.1Smrg
1111.1Smrg	getvars gprof/Makefile \
1121.1Smrg		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
1131.6Sskrll		| write_mk external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/defs.mk
1141.1Smrg
1151.6Sskrll	write_c external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
1161.1Smrg
1171.1Smrg	### ld
1181.1Smrg
1191.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH
1201.1Smrg
1211.1Smrg	{
1221.1Smrg		getvars ld/Makefile \
1231.1Smrg			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
1241.1Smrg		getvars ld/Makefile \
1251.1Smrg			target_alias | sed 's,[\._0-9A-Z]*$,,'
1261.9Sskrll		getvars	ld/Makefile \
1271.9Sskrll			enable_initfini_array
1281.6Sskrll	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk
1291.1Smrg
1301.1Smrg	for f in config ldemul-list; do
1311.6Sskrll		write_c external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
1321.1Smrg	done
1331.1Smrg}
1341.1Smrg
1351.1Smrg##### main #####
1361.1Smrg
1371.1Smrgcase $1 in
1381.2Smrgall|binutils)	# everything (uses "canadian cross" temp environment)
1391.1Smrg	get_binutils
1401.1Smrg	get_libbfd
1411.1Smrg	get_libopcodes
1421.1Smrg	get_libiberty
1431.1Smrg	exit 0
1441.1Smrg	;;
1451.1Smrg
1461.1Smrg*)	echo invalid arguments; exit 1;;
1471.1Smrgesac
148