xref: /netbsd-src/tools/binutils/mknative-binutils (revision 1c5c771e20de0ceefb0867dff5ca8979a8165f0c)
1#!/bin/sh
2#	$NetBSD: mknative-binutils,v 1.13 2020/04/04 01:34:53 christos 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 HAVEVECS
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
52get_libgnuctf () {
53	mkdir -p $_TOP/external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH
54
55	{
56		getvars libctf/Makefile libctf_la_SOURCES
57	} | write_mk external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH/defs.mk
58
59	{
60		cat $_TMPDIR/libctf/config.h
61	} | write_c external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH/config.h
62}
63
64##### external/gpl3/binutils/lib/libiberty #####
65
66get_libiberty () {
67	mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH
68
69	getvars libiberty/Makefile \
70		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
71		| write_mk external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/defs.mk
72
73	write_c external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/config.h \
74		<$_TMPDIR/libiberty/config.h
75}
76
77##### external/gpl3/binutils/usr.bin #####
78
79get_binutils () {
80	### common
81
82	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH
83
84	{
85		getvars binutils/Makefile \
86			VERSION DEFS INCLUDES PROGRAMS
87		getvars binutils/doc/Makefile \
88			man_MANS TEXINFOS
89		getvars bfd/doc/Makefile \
90			PKGVERSION | sed 's,\\\(.\),\1,'
91		getvars bfd/doc/Makefile \
92			REPORT_BUGS_TEXI
93
94		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
95			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
96		done
97	} | write_mk external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/defs.mk
98
99	write_c external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/config.h \
100		<$_TMPDIR/binutils/config.h
101
102	### gas
103
104	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH
105
106	grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps"
107	getvars gas/Makefile.nodeps \
108                DEFS INCLUDES as_new_OBJECTS as_new_LDADD |
109	sed	-e s/G_as_new_OBJECTS/G_OBJS/ \
110		-e s/G_as_new_LDADD=/G_OBJS+=/ \
111		-e s@config/@@g \
112		-e 's/\.\..*a//' |
113	write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk
114
115	for f in config itbl-cpu obj-format targ-cpu targ-env; do
116		write_c external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
117	done
118
119	### gprof
120
121	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH
122
123	getvars gprof/Makefile \
124		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
125		| write_mk external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/defs.mk
126
127	write_c external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
128
129	### ld
130
131	mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH
132
133	{
134		getvars ld/Makefile \
135			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
136		getvars ld/Makefile \
137			target_alias | sed 's,[\._0-9A-Z]*$,,'
138		getvars	ld/Makefile \
139			enable_initfini_array
140	} | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk
141
142	for f in config ldemul-list; do
143		write_c external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
144	done
145}
146
147##### main #####
148
149case $1 in
150all|binutils)	# everything (uses "canadian cross" temp environment)
151	get_binutils
152	get_libbfd
153	get_libgnuctf
154	get_libopcodes
155	get_libiberty
156	exit 0
157	;;
158
159*)	echo invalid arguments; exit 1;;
160esac
161