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