summaryrefslogtreecommitdiff
path: root/tools/binutils/mknative-binutils
blob: 82b12307edb06aef2fee68476dcd35daf96024c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/sh
#	$NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll Exp $
#
# Shell script for generating all the constants needed for a native
# platform build of src/external/gpl3/binutils
#

# initialise

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

. $_TOP/tools/gcc/mknative.common

##### external/gpl3/binutils/lib/libbfd #####

get_libbfd () {
	mkdir -p $_TOP/external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH

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

	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h
	write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd_stdint.h <$_TMPDIR/bfd/bfd_stdint.h

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

##### external/gpl3/binutils/lib/libopcodes #####

get_libopcodes () {
	mkdir -p $_TOP/external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH

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

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

##### external/gpl3/binutils/lib/libiberty #####

get_libiberty () {
	mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH

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

	write_c external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/config.h \
		<$_TMPDIR/libiberty/config.h
}

##### external/gpl3/binutils/usr.bin #####

get_binutils () {
	### common

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

	{
		getvars binutils/Makefile \
			VERSION DEFS INCLUDES PROGRAMS
		getvars binutils/doc/Makefile \
			man_MANS TEXINFOS
		getvars bfd/doc/Makefile \
			PKGVERSION | sed 's,\\\(.\),\1,'
		getvars bfd/doc/Makefile \
			REPORT_BUGS_TEXI

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

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

	### gas

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

	grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps"
	getvars gas/Makefile.nodeps \
                DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 
	sed	-e s/G_as_new_OBJECTS/G_OBJS/ \
		-e s/G_as_new_LDADD=/G_OBJS+=/ \
		-e 's/\.\..*a//' |
	write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk

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

	### gprof

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

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

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

	### ld

	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/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]*$,,'
		getvars	ld/Makefile \
			enable_initfini_array
	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk

	for f in config ldemul-list; do
		write_c external/gpl3/binutils/usr.bin/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