mknative-binutils revision 1.9
11.1Smrg#!/bin/sh
21.9Sskrll#	$NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll 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.1Smrg			INCLUDES TDEFAULTS
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.8Schristos		-e 's/\.\..*a//' |
1001.8Schristos	write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk
1011.1Smrg
1021.1Smrg	for f in config itbl-cpu obj-format targ-cpu targ-env; do
1031.6Sskrll		write_c external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
1041.1Smrg	done
1051.1Smrg
1061.1Smrg	### gprof
1071.1Smrg
1081.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH
1091.1Smrg
1101.1Smrg	getvars gprof/Makefile \
1111.1Smrg		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
1121.6Sskrll		| write_mk external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/defs.mk
1131.1Smrg
1141.6Sskrll	write_c external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
1151.1Smrg
1161.1Smrg	### ld
1171.1Smrg
1181.6Sskrll	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH
1191.1Smrg
1201.1Smrg	{
1211.1Smrg		getvars ld/Makefile \
1221.1Smrg			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
1231.1Smrg		getvars ld/Makefile \
1241.1Smrg			target_alias | sed 's,[\._0-9A-Z]*$,,'
1251.9Sskrll		getvars	ld/Makefile \
1261.9Sskrll			enable_initfini_array
1271.6Sskrll	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk
1281.1Smrg
1291.1Smrg	for f in config ldemul-list; do
1301.6Sskrll		write_c external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
1311.1Smrg	done
1321.1Smrg}
1331.1Smrg
1341.1Smrg##### main #####
1351.1Smrg
1361.1Smrgcase $1 in
1371.2Smrgall|binutils)	# everything (uses "canadian cross" temp environment)
1381.1Smrg	get_binutils
1391.1Smrg	get_libbfd
1401.1Smrg	get_libopcodes
1411.1Smrg	get_libiberty
1421.1Smrg	exit 0
1431.1Smrg	;;
1441.1Smrg
1451.1Smrg*)	echo invalid arguments; exit 1;;
1461.1Smrgesac
147