NetBSD-5.0.2/tools/binutils/mknative-binutils

#!/bin/sh
#	$NetBSD: mknative-binutils,v 1.5 2006/02/02 20:06:04 skrll Exp $
#
# Shell script for generating all the constants needed for a native
# platform build of src/gnu/dist/binutils.
#

# initialise

_TMPDIR=$2
_TOP=$3
_PLATFORM=$4
_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ 	]*,,'`

. $_TOP/tools/gcc/mknative.common

##### gnu/lib/libbfd #####

get_libbfd () {
	mkdir -p $_TOP/gnu/lib/libbfd/arch/$MACHINE_ARCH

	{
		getvars bfd/Makefile \
			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
			INCLUDES TDEFAULTS
	} | write_mk gnu/lib/libbfd/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
	write_c gnu/lib/libbfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h

	{
		cat $_TMPDIR/bfd/config.h
	} | write_c gnu/lib/libbfd/arch/$MACHINE_ARCH/config.h
}

##### gnu/lib/libopcodes #####

get_libopcodes () {
	mkdir -p $_TOP/gnu/lib/libopcodes/arch/$MACHINE_ARCH

	{
		getvars opcodes/Makefile \
			archdefs BFD_MACHINES libopcodes_la_SOURCES
	} | write_mk gnu/lib/libopcodes/arch/$MACHINE_ARCH/defs.mk

	{
		cat $_TMPDIR/opcodes/config.h
	} | write_c gnu/lib/libopcodes/arch/$MACHINE_ARCH/config.h
}

##### gnu/lib/libiberty #####

get_libiberty () {
	mkdir -p $_TOP/gnu/lib/libiberty/arch/$MACHINE_ARCH

	getvars libiberty/Makefile \
		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
		| write_mk gnu/lib/libiberty/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/lib/libiberty/arch/$MACHINE_ARCH/config.h \
		<$_TMPDIR/libiberty/config.h
}

##### gnu/usr.bin/binutils #####

get_binutils () {
	### common

	mkdir -p $_TOP/gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH

	{
		getvars binutils/Makefile \
			VERSION DEFS INCLUDES PROGRAMS
		getvars binutils/doc/Makefile \
			man_MANS TEXINFOS

		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
		done
	} | write_mk gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH/config.h \
		<$_TMPDIR/binutils/config.h

	### gas

	mkdir -p $_TOP/gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH

	getvars gas/Makefile \
		DEFS INCLUDES OBJS \
		| write_mk gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH/defs.mk

	for f in config itbl-cpu obj-format targ-cpu targ-env; do
		write_c gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
	done

	### gprof

	mkdir -p $_TOP/gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH

	getvars gprof/Makefile \
		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
		| write_mk gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h

	### ld

	mkdir -p $_TOP/gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH

	{
		getvars ld/Makefile \
			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
		getvars ld/Makefile \
			target_alias | sed 's,[\._0-9A-Z]*$,,'
	} | write_mk gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH/defs.mk

	for f in config ldemul-list; do
		write_c gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
	done
}

##### main #####

case $1 in
all|binutils)	# everything (uses "canadian cross" temp environment)
	get_binutils
	get_libbfd
	get_libopcodes
	get_libiberty
	exit 0
	;;

*)	echo invalid arguments; exit 1;;
esac