xref: /netbsd-src/tools/gdb/mknative-gdb (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1#!/bin/sh
2#	$NetBSD: mknative-gdb,v 1.15 2020/12/05 21:27:31 christos Exp $
3#
4# Shell script for generating all the constants needed for a native
5# platform build of src/external/gpl3/gdb
6#
7
8# initialise
9
10_TMPDIR=$2
11_TOP=$3
12_PLATFORM=$4
13_MACHINE_SUBDIR=$5
14_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ 	]*,,'`
15_GDB=external/gpl3/gdb
16
17. $_TOP/tools/gcc/mknative.common
18
19##### gdb/lib/libbfd #####
20
21get_gdb_libbfd () {
22	local _BFD=$_GDB/lib/libbfd
23	mkdir -p $_TOP/$_BFD/arch/$_MACHINE_SUBDIR
24
25	{
26		getvars bfd/Makefile \
27			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
28			INCLUDES TDEFAULTS
29	} | write_mk $_BFD/arch/$_MACHINE_SUBDIR/defs.mk
30
31	for i in bfd-in3.h bfd_stdint.h config.h bfd.h bfdver.h targmatch.h
32	do
33	    write_c $_BFD/arch/$_MACHINE_SUBDIR/$i <$_TMPDIR/bfd/$i
34	done
35}
36
37##### gdb/lib/libopcodes #####
38
39get_gdb_libopcodes () {
40	local _OPCODES=$_GDB/lib/libopcodes
41	mkdir -p $_TOP/$_OPCODES/arch/$_MACHINE_SUBDIR
42
43	{
44		getvars opcodes/Makefile \
45			archdefs BFD_MACHINES libopcodes_la_SOURCES
46	} | write_mk $_GDB/lib/libopcodes//arch/$_MACHINE_SUBDIR/defs.mk
47
48	{
49		cat $_TMPDIR/opcodes/config.h
50	} | write_c $_OPCODES/arch/$_MACHINE_SUBDIR/config.h
51}
52
53##### gdb/lib/libiberty #####
54
55get_gdb_libiberty () {
56	local _IBERTY=$_GDB/lib/libiberty
57	mkdir -p $_TOP/$_IBERTY/arch/$_MACHINE_SUBDIR
58
59	getvars libiberty/Makefile \
60		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
61		| write_mk $_IBERTY/arch/$_MACHINE_SUBDIR/defs.mk
62
63	write_c $_IBERTY/arch/$_MACHINE_SUBDIR/config.h \
64		<$_TMPDIR/libiberty/config.h
65}
66
67##### gdb/lib/libreadline #####
68
69get_gdb_libreadline () {
70	local _READLINE=$_GDB/lib/libreadline
71	mkdir -p $_TOP/$_READLINE/arch/$_MACHINE_SUBDIR
72
73	{
74		getvars readline/readline/Makefile \
75			CCFLAGS OBJECTS
76	} | write_mk $_READLINE/arch/$_MACHINE_SUBDIR/defs.mk
77
78	write_c $_READLINE/arch/$_MACHINE_SUBDIR/config.h \
79		<$_TMPDIR/readline/readline/config.h
80}
81
82##### gdb/lib/libdecnumber #####
83
84get_gdb_libdecnumber () {
85	local _DECNUMBER=$_GDB/lib/libdecnumber
86	mkdir -p $_TOP/$_DECNUMBER/arch/$_MACHINE_SUBDIR
87
88	getvars libdecnumber/Makefile libdecnumber_a_OBJS |
89	sed -e s/libdecnumber_a_// |
90	write_mk $_DECNUMBER/arch/$_MACHINE_SUBDIR/defs.mk
91
92	write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/config.h \
93		<$_TMPDIR/readline/readline/config.h
94
95	write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/gstdint.h \
96		< $_TMPDIR/libdecnumber/gstdint.h
97}
98
99##### gdb/lib/libgdbsupport #####
100
101get_gdb_libgdbsupport () {
102	local _GDBSUPPORT=$_GDB/lib/libgdbsupport
103	mkdir -p $_TOP/$_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport
104
105	getvars gdbsupport/Makefile libgdbsupport_a_OBJECTS |
106	sed -e s/libgdbsupport_a_// |
107	write_mk $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/defs.mk
108
109	write_c $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport/config.h \
110		<$_TMPDIR/gdbsupport/config.h
111}
112
113get_gdb_libctf () {
114	local _CTF=$_GDB/lib/libctf
115	mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
116
117	getvars libctf/Makefile libctf_la_OBJECTS |
118	sed -e s/libctf_la_// -e 's/\.lo/.o/g' -e s/libctf_la-//g |
119	write_mk $_CTF/arch/$_MACHINE_SUBDIR/defs.mk
120
121	write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
122		<$_TMPDIR/libctf/config.h
123}
124
125##### gdb/lib/libgnulib #####
126
127get_gdb_libgnulib () {
128	local _GNULIB=$_GDB/lib/libgnulib
129	mkdir -p $_TOP/$_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/import
130
131	(getvars gnulib/Makefile gl_LIBOBJS |
132	sed -e s/gl_LIB// &&
133	getvars gnulib/import/Makefile libgnu_a_OBJECTS |
134	sed -e s/libgnu_a_// -e s@glthread/@@g -e s@malloc/@@g) |
135	write_mk $_GNULIB/arch/$_MACHINE_SUBDIR/defs.mk
136
137	for i in config.h \
138	    import/alloca.h import/ctype.h \
139	    import/dirent.h import/fcntl.h \
140	    import/fnmatch.h import/glob.h \
141	    import/inttypes.h import/limits.h \
142	    import/locale.h import/math.h \
143	    import/signal.h import/stdint.h \
144	    import/stdio.h import/stdlib.h \
145	    import/string.h import/time.h \
146	    import/unistd.h import/wchar.h \
147	    import/wctype.h
148	do
149	    write_c $_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/$i \
150		< $_TMPDIR/gnulib/$i
151	done
152}
153
154##### gdb/lib/libgdb #####
155
156get_gdb_libgdb () {
157	local _GDBP=$_GDB/lib/libgdb
158
159	{
160		getvars gdb/Makefile \
161			INTERNAL_CFLAGS LIBGDB_OBS SIM_OBS
162	} | sed -e s@arch/@@g -e s@cli/@@g -e s@common/agent@common-agent@ \
163		-e s@common/@@g -e s@compile/@@g -e s@guile/@@g -e s@mi/@@g \
164		-e s@nat/@@g -e s@python/@@g -e s@target/@@g \
165		-e s@dwarf2/@@g -e s@unittests/@@g \
166		-e s@tui/@@g | write_mk $_GDBP/arch/$_MACHINE_SUBDIR/defs.mk
167
168#	getvars gdb/gdbserver/Makefile \
169#		INTERNAL_CFLAGS OBS \
170#		| write_mk $_GDB/bin/gdb/arch/$_MACHINE_SUBDIR/gdbserver.mk
171
172	for i in config.h version.c init.c \
173	    xml-builtin.c jit-reader.h
174	do
175	    write_c $_GDBP/arch/$_MACHINE_SUBDIR/$i \
176		< $_TMPDIR/gdb/$i
177	done
178
179
180	for f in nm tm xm; do
181		if [ ! -f $_TMPDIR/gdb/$f.h ]; then
182			continue
183		fi
184		ls -l $_TMPDIR/gdb/$f.h | \
185			sed 's,^.*->.*/gdb/,,;s,^,#include <,;s,$,>,' | \
186			write_c $_GDBP/arch/$_MACHINE_SUBDIR/$f.h
187	done
188
189	local _LIBSIM=$_GDB/lib/libsim
190	case $_MACHINE_SUBDIR in
191	powerpc*)
192		mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
193		write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
194			<$_TMPDIR/sim/ppc/config.h
195		write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/build-config.h \
196			<$_TMPDIR/sim/ppc/build-config.h
197		#write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
198		#	<$_TMPDIR/sim/common/cconfig.h
199		;;
200	xxmips*)	# Disabled for now
201		mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
202		write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
203			<$_TMPDIR/sim/mips/config.h
204		#write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
205		#	<$_TMPDIR/sim/common/cconfig.h
206		{
207			getvars sim/mips/Makefile \
208				LIB_OBJS CONFIG_CFLAGS \
209			    	BUILT_SRC_FROM_IGEN IGEN_OBJS
210		} | write_mk $_LIBSIM/arch/$_MACHINE_SUBDIR/defs.mk
211		;;
212	*)
213		;;
214	esac
215}
216
217# gdb/bin/gdbserver`
218
219get_gdb_bingdbserver () {
220	local _CTF=$_GDB/bin/gdbserver
221
222	if [ ! -f $_CTF/arch/$_MACHINE_SUBDIR/config.h ]; then
223		return
224	fi
225	mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
226
227	write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
228		<$_TMPDIR/gdbserver/config.h
229	write_c $_CTF/arch/$_MACHINE_SUBDIR/version.cc \
230		<$_TMPDIR/gdbserver/version-generated.cc
231}
232
233##### main #####
234
235case $1 in
236all|gdb)	# everything (uses "canadian cross" temp environment)
237	get_gdb_libgdb
238	get_gdb_libgdbsupport
239	get_gdb_libctf
240	get_gdb_libgnulib
241	get_gdb_libbfd
242	get_gdb_libopcodes
243	get_gdb_libiberty
244	get_gdb_libreadline
245	get_gdb_libdecnumber
246	get_gdb_bingdbserver
247	exit 0
248	;;
249
250*)	echo invalid arguments; exit 1;;
251esac
252