xref: /netbsd/tools/binutils/mknative-binutils (revision 6550d01e)
1#!/bin/sh
2#	$NetBSD: mknative-binutils,v 1.7 2009/11/09 13:50:41 skrll Exp $
3#
4# Shell script for generating all the constants needed for a native
5# platform build of src/external/gpl3/binutils
6#
7
8# initialise
9
10_TMPDIR=$2
11_TOP=$3
12_PLATFORM=$4
13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ 	]*,,'`
14
15. $_TOP/tools/gcc/mknative.common
16
17##### external/gpl3/binutils/lib/libbfd #####
18
19get_libbfd () {
20	mkdir -p $_TOP/external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH
21
22	{
23		getvars bfd/Makefile \
24			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
25			INCLUDES TDEFAULTS
26	} | write_mk external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/defs.mk
27
28	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
29	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h
30	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd_stdint.h <$_TMPDIR/bfd/bfd_stdint.h
31
32	{
33		cat $_TMPDIR/bfd/config.h
34	} | write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/config.h
35}
36
37##### external/gpl3/binutils/lib/libopcodes #####
38
39get_libopcodes () {
40	mkdir -p $_TOP/external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH
41
42	{
43		getvars opcodes/Makefile \
44			archdefs BFD_MACHINES libopcodes_la_SOURCES
45	} | write_mk external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/defs.mk
46
47	{
48		cat $_TMPDIR/opcodes/config.h
49	} | write_c external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/config.h
50}
51
52##### external/gpl3/binutils/lib/libiberty #####
53
54get_libiberty () {
55	mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH
56
57	getvars libiberty/Makefile \
58		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
59		| write_mk external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/defs.mk
60
61	write_c external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/config.h \
62		<$_TMPDIR/libiberty/config.h
63}
64
65##### external/gpl3/binutils/usr.bin #####
66
67get_binutils () {
68	### common
69
70	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH
71
72	{
73		getvars binutils/Makefile \
74			VERSION DEFS INCLUDES PROGRAMS
75		getvars binutils/doc/Makefile \
76			man_MANS TEXINFOS
77		getvars bfd/doc/Makefile \
78			PKGVERSION | sed 's,\\\(.\),\1,'
79		getvars bfd/doc/Makefile \
80			REPORT_BUGS_TEXI
81
82		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
83			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
84		done
85	} | write_mk external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/defs.mk
86
87	write_c external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/config.h \
88		<$_TMPDIR/binutils/config.h
89
90	### gas
91
92	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH
93
94	getvars gas/Makefile \
95		DEFS INCLUDES OBJS \
96		| write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk
97
98	for f in config itbl-cpu obj-format targ-cpu targ-env; do
99		write_c external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
100	done
101
102	### gprof
103
104	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH
105
106	getvars gprof/Makefile \
107		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
108		| write_mk external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/defs.mk
109
110	write_c external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
111
112	### ld
113
114	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH
115
116	{
117		getvars ld/Makefile \
118			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
119		getvars ld/Makefile \
120			target_alias | sed 's,[\._0-9A-Z]*$,,'
121	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk
122
123	for f in config ldemul-list; do
124		write_c external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
125	done
126}
127
128##### main #####
129
130case $1 in
131all|binutils)	# everything (uses "canadian cross" temp environment)
132	get_binutils
133	get_libbfd
134	get_libopcodes
135	get_libiberty
136	exit 0
137	;;
138
139*)	echo invalid arguments; exit 1;;
140esac
141