xref: /netbsd-src/tools/gdb/mknative-gdb (revision 638de00dfa5ff19603c6311b45837341f94cfa35)
115577e82Snathanw#!/bin/sh
2*638de00dSchristos#	$NetBSD: mknative-gdb,v 1.19 2024/08/27 21:50:20 christos Exp $
315577e82Snathanw#
415577e82Snathanw# Shell script for generating all the constants needed for a native
597417a67Schristos# platform build of src/external/gpl3/gdb
615577e82Snathanw#
715577e82Snathanw
815577e82Snathanw# initialise
915577e82Snathanw
1015577e82Snathanw_TMPDIR=$2
1115577e82Snathanw_TOP=$3
1215577e82Snathanw_PLATFORM=$4
134141e03cSmrg_MACHINE_SUBDIR=$5
1415577e82Snathanw_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ 	]*,,'`
1597417a67Schristos_GDB=external/gpl3/gdb
1615577e82Snathanw
1715577e82Snathanw. $_TOP/tools/gcc/mknative.common
1815577e82Snathanw
1997417a67Schristos##### gdb/lib/libbfd #####
2015577e82Snathanw
2115577e82Snathanwget_gdb_libbfd () {
2297417a67Schristos	local _BFD=$_GDB/lib/libbfd
234141e03cSmrg	mkdir -p $_TOP/$_BFD/arch/$_MACHINE_SUBDIR
2415577e82Snathanw
2515577e82Snathanw	{
2615577e82Snathanw		getvars bfd/Makefile \
2715577e82Snathanw			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
2815577e82Snathanw			INCLUDES TDEFAULTS
294141e03cSmrg	} | write_mk $_BFD/arch/$_MACHINE_SUBDIR/defs.mk
3015577e82Snathanw
319eceabbeSchristos	for i in bfd-in3.h config.h bfd.h bfdver.h targmatch.h
3297417a67Schristos	do
334141e03cSmrg	    write_c $_BFD/arch/$_MACHINE_SUBDIR/$i <$_TMPDIR/bfd/$i
3497417a67Schristos	done
3515577e82Snathanw}
3615577e82Snathanw
3797417a67Schristos##### gdb/lib/libopcodes #####
3815577e82Snathanw
3915577e82Snathanwget_gdb_libopcodes () {
4097417a67Schristos	local _OPCODES=$_GDB/lib/libopcodes
414141e03cSmrg	mkdir -p $_TOP/$_OPCODES/arch/$_MACHINE_SUBDIR
4215577e82Snathanw
4315577e82Snathanw	{
4415577e82Snathanw		getvars opcodes/Makefile \
4515577e82Snathanw			archdefs BFD_MACHINES libopcodes_la_SOURCES
464141e03cSmrg	} | write_mk $_GDB/lib/libopcodes//arch/$_MACHINE_SUBDIR/defs.mk
4715577e82Snathanw
4815577e82Snathanw	{
4915577e82Snathanw		cat $_TMPDIR/opcodes/config.h
504141e03cSmrg	} | write_c $_OPCODES/arch/$_MACHINE_SUBDIR/config.h
5115577e82Snathanw}
5215577e82Snathanw
5397417a67Schristos##### gdb/lib/libiberty #####
5415577e82Snathanw
5515577e82Snathanwget_gdb_libiberty () {
5697417a67Schristos	local _IBERTY=$_GDB/lib/libiberty
574141e03cSmrg	mkdir -p $_TOP/$_IBERTY/arch/$_MACHINE_SUBDIR
5815577e82Snathanw
5915577e82Snathanw	getvars libiberty/Makefile \
6015577e82Snathanw		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
614141e03cSmrg		| write_mk $_IBERTY/arch/$_MACHINE_SUBDIR/defs.mk
6215577e82Snathanw
634141e03cSmrg	write_c $_IBERTY/arch/$_MACHINE_SUBDIR/config.h \
6415577e82Snathanw		<$_TMPDIR/libiberty/config.h
6515577e82Snathanw}
6615577e82Snathanw
6797417a67Schristos##### gdb/lib/libreadline #####
6815577e82Snathanw
6915577e82Snathanwget_gdb_libreadline () {
7097417a67Schristos	local _READLINE=$_GDB/lib/libreadline
714141e03cSmrg	mkdir -p $_TOP/$_READLINE/arch/$_MACHINE_SUBDIR
7215577e82Snathanw
7315577e82Snathanw	{
74d3776013Schristos		getvars readline/readline/Makefile \
7515577e82Snathanw			CCFLAGS OBJECTS
764141e03cSmrg	} | write_mk $_READLINE/arch/$_MACHINE_SUBDIR/defs.mk
7715577e82Snathanw
784141e03cSmrg	write_c $_READLINE/arch/$_MACHINE_SUBDIR/config.h \
79d3776013Schristos		<$_TMPDIR/readline/readline/config.h
8015577e82Snathanw}
8115577e82Snathanw
8297417a67Schristos##### gdb/lib/libdecnumber #####
8315577e82Snathanw
8497417a67Schristosget_gdb_libdecnumber () {
8597417a67Schristos	local _DECNUMBER=$_GDB/lib/libdecnumber
864141e03cSmrg	mkdir -p $_TOP/$_DECNUMBER/arch/$_MACHINE_SUBDIR
8797417a67Schristos
88576200d1Schristos	getvars libdecnumber/Makefile libdecnumber_a_OBJS |
899eceabbeSchristos	sed -e s/libdecnumber_a_//g |
904141e03cSmrg	write_mk $_DECNUMBER/arch/$_MACHINE_SUBDIR/defs.mk
9197417a67Schristos
924141e03cSmrg	write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/config.h \
93d3776013Schristos		<$_TMPDIR/readline/readline/config.h
9497417a67Schristos
954141e03cSmrg	write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/gstdint.h \
9697417a67Schristos		< $_TMPDIR/libdecnumber/gstdint.h
9797417a67Schristos}
9897417a67Schristos
99576200d1Schristos##### gdb/lib/libgdbsupport #####
100576200d1Schristos
101576200d1Schristosget_gdb_libgdbsupport () {
102576200d1Schristos	local _GDBSUPPORT=$_GDB/lib/libgdbsupport
103576200d1Schristos	mkdir -p $_TOP/$_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport
104576200d1Schristos
105576200d1Schristos	getvars gdbsupport/Makefile libgdbsupport_a_OBJECTS |
1069eceabbeSchristos	sed -e s/libgdbsupport_a_//g |
107576200d1Schristos	write_mk $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/defs.mk
108576200d1Schristos
109576200d1Schristos	write_c $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport/config.h \
110576200d1Schristos		<$_TMPDIR/gdbsupport/config.h
111576200d1Schristos}
112576200d1Schristos
1139eceabbeSchristos##### gdb/lib/libctf #####
1149eceabbeSchristos
115576200d1Schristosget_gdb_libctf () {
116576200d1Schristos	local _CTF=$_GDB/lib/libctf
117576200d1Schristos	mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
118576200d1Schristos
119576200d1Schristos	getvars libctf/Makefile libctf_la_OBJECTS |
1209eceabbeSchristos	sed -e s/libctf_la_//g -e 's/\.lo/.o/g' -e s/libctf_la-//g |
121576200d1Schristos	write_mk $_CTF/arch/$_MACHINE_SUBDIR/defs.mk
122576200d1Schristos
123576200d1Schristos	write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
124576200d1Schristos		<$_TMPDIR/libctf/config.h
125576200d1Schristos}
126576200d1Schristos
1279eceabbeSchristos##### gdb/lib/libbacktrace #####
1289eceabbeSchristos
1299eceabbeSchristosget_gdb_libbacktrace () {
1309eceabbeSchristos	local _BACKTRACE=$_GDB/lib/libbacktrace
1319eceabbeSchristos	mkdir -p $_TOP/$_BACKTRACE/arch/$_MACHINE_SUBDIR
1329eceabbeSchristos
1339eceabbeSchristos	getvars libbacktrace/Makefile libbacktrace_la_OBJECTS \
1349eceabbeSchristos	    libbacktrace_la_LIBADD |
1359eceabbeSchristos	sed -e s/libbacktrace_la_//g -e 's/\.lo/.o/g' -e s/libbacktrace_la-//g |
1369eceabbeSchristos	write_mk $_BACKTRACE/arch/$_MACHINE_SUBDIR/defs.mk
1379eceabbeSchristos
1389eceabbeSchristos	write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/config.h \
1399eceabbeSchristos		<$_TMPDIR/libbacktrace/config.h
1409eceabbeSchristos	write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/backtrace-supported.h \
1419eceabbeSchristos		<$_TMPDIR/libbacktrace/backtrace-supported.h
1429eceabbeSchristos}
1439eceabbeSchristos
1449eceabbeSchristos##### gdb/lib/libsframe #####
1459eceabbeSchristos
1469eceabbeSchristosget_gdb_libsframe () {
1479eceabbeSchristos	local _SFRAME=$_GDB/lib/libsframe
1489eceabbeSchristos	mkdir -p $_TOP/$_SFRAME/arch/$_MACHINE_SUBDIR
1499eceabbeSchristos
1509eceabbeSchristos	getvars libsframe/Makefile libsframe_la_OBJECTS |
1519eceabbeSchristos	sed -e s/libsframe_la_//g -e 's/\.lo/.o/g' -e s/libsframe_la-//g |
1529eceabbeSchristos	write_mk $_SFRAME/arch/$_MACHINE_SUBDIR/defs.mk
1539eceabbeSchristos}
1549eceabbeSchristos
155576200d1Schristos##### gdb/lib/libgnulib #####
156576200d1Schristos
157576200d1Schristosget_gdb_libgnulib () {
158576200d1Schristos	local _GNULIB=$_GDB/lib/libgnulib
1599eceabbeSchristos	mkdir -p $_TOP/$_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/import/malloc
160576200d1Schristos
161576200d1Schristos	(getvars gnulib/Makefile gl_LIBOBJS |
1629eceabbeSchristos	sed -e s/gl_LIB//g &&
163576200d1Schristos	getvars gnulib/import/Makefile libgnu_a_OBJECTS |
1649eceabbeSchristos	sed -e s/libgnu_a-//g -e s@glthread/@@g -e s@malloc/@@g) |
165576200d1Schristos	write_mk $_GNULIB/arch/$_MACHINE_SUBDIR/defs.mk
166576200d1Schristos
167576200d1Schristos	for i in config.h \
168576200d1Schristos	    import/alloca.h import/ctype.h \
169576200d1Schristos	    import/dirent.h import/fcntl.h \
170576200d1Schristos	    import/fnmatch.h import/glob.h \
1719eceabbeSchristos	    import/glob-libc.gl.h \
172576200d1Schristos	    import/inttypes.h import/limits.h \
173576200d1Schristos	    import/locale.h import/math.h \
1749eceabbeSchristos	    import/malloc/scratch_buffer.gl.h \
175576200d1Schristos	    import/signal.h import/stdint.h \
176576200d1Schristos	    import/stdio.h import/stdlib.h \
177576200d1Schristos	    import/string.h import/time.h \
178576200d1Schristos	    import/unistd.h import/wchar.h \
179576200d1Schristos	    import/wctype.h
180576200d1Schristos	do
181cfd59bbcSchristos	    write_c $_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/$i \
182576200d1Schristos		< $_TMPDIR/gnulib/$i
183576200d1Schristos	done
184576200d1Schristos}
18597417a67Schristos
186833251feSchristos##### gdb/lib/libgdb #####
187833251feSchristos
18897417a67Schristosget_gdb_libgdb () {
18997417a67Schristos	local _GDBP=$_GDB/lib/libgdb
19015577e82Snathanw
19115577e82Snathanw	{
19215577e82Snathanw		getvars gdb/Makefile \
19315577e82Snathanw			INTERNAL_CFLAGS LIBGDB_OBS SIM_OBS
194dad3d2d1Schristos	} | sed -e s@arch/@@g -e s@cli/@@g -e s@common/agent@common-agent@ \
195dad3d2d1Schristos		-e s@common/@@g -e s@compile/@@g -e s@guile/@@g -e s@mi/@@g \
196dad3d2d1Schristos		-e s@nat/@@g -e s@python/@@g -e s@target/@@g \
197d3776013Schristos		-e s@dwarf2/@@g -e s@unittests/@@g \
198dad3d2d1Schristos		-e s@tui/@@g | write_mk $_GDBP/arch/$_MACHINE_SUBDIR/defs.mk
19915577e82Snathanw
20015577e82Snathanw#	getvars gdb/gdbserver/Makefile \
20115577e82Snathanw#		INTERNAL_CFLAGS OBS \
2024141e03cSmrg#		| write_mk $_GDB/bin/gdb/arch/$_MACHINE_SUBDIR/gdbserver.mk
20315577e82Snathanw
204dad3d2d1Schristos	for i in config.h version.c init.c \
205d3776013Schristos	    xml-builtin.c jit-reader.h
20697417a67Schristos	do
2074141e03cSmrg	    write_c $_GDBP/arch/$_MACHINE_SUBDIR/$i \
20897417a67Schristos		< $_TMPDIR/gdb/$i
20915577e82Snathanw	done
21015577e82Snathanw
211d3776013Schristos
21215577e82Snathanw	for f in nm tm xm; do
213d3776013Schristos		if [ ! -f $_TMPDIR/gdb/$f.h ]; then
214d3776013Schristos			continue
21515577e82Snathanw		fi
216d3776013Schristos		ls -l $_TMPDIR/gdb/$f.h | \
217d3776013Schristos			sed 's,^.*->.*/gdb/,,;s,^,#include <,;s,$,>,' | \
218d3776013Schristos			write_c $_GDBP/arch/$_MACHINE_SUBDIR/$f.h
21915577e82Snathanw	done
22015577e82Snathanw
22197417a67Schristos	local _LIBSIM=$_GDB/lib/libsim
2224141e03cSmrg	case $_MACHINE_SUBDIR in
223*638de00dSchristos	xxpowerpc*)
2244141e03cSmrg		mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
225*638de00dSchristos		write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
226*638de00dSchristos			<$_TMPDIR/sim/config.h
227baa3270aSchristos		#write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/build-config.h \
228baa3270aSchristos		#	<$_TMPDIR/sim/ppc/build-config.h
2294141e03cSmrg		#write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
2304141e03cSmrg		#	<$_TMPDIR/sim/common/cconfig.h
23115577e82Snathanw		;;
23296f71ed6Schristos	xxmips*)	# Disabled for now
2334141e03cSmrg		mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
2344141e03cSmrg		write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
23515577e82Snathanw			<$_TMPDIR/sim/mips/config.h
2364141e03cSmrg		#write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
2374141e03cSmrg		#	<$_TMPDIR/sim/common/cconfig.h
23815577e82Snathanw		{
23915577e82Snathanw			getvars sim/mips/Makefile \
24015577e82Snathanw				LIB_OBJS CONFIG_CFLAGS \
24115577e82Snathanw			    	BUILT_SRC_FROM_IGEN IGEN_OBJS
2424141e03cSmrg		} | write_mk $_LIBSIM/arch/$_MACHINE_SUBDIR/defs.mk
24315577e82Snathanw		;;
24415577e82Snathanw	*)
24515577e82Snathanw		;;
24615577e82Snathanw	esac
24715577e82Snathanw}
24815577e82Snathanw
249833251feSchristos# gdb/bin/gdbserver`
250833251feSchristos
251833251feSchristosget_gdb_bingdbserver () {
252833251feSchristos	local _CTF=$_GDB/bin/gdbserver
253575adc54Schristos
254575adc54Schristos	if [ ! -f $_CTF/arch/$_MACHINE_SUBDIR/config.h ]; then
255575adc54Schristos		return
256575adc54Schristos	fi
257833251feSchristos	mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
258833251feSchristos
259833251feSchristos	write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
260833251feSchristos		<$_TMPDIR/gdbserver/config.h
261254454c5Schristos	write_c $_CTF/arch/$_MACHINE_SUBDIR/version.cc \
262254454c5Schristos		<$_TMPDIR/gdbserver/version-generated.cc
263833251feSchristos}
264833251feSchristos
2656c4905d1Srin# info
2666c4905d1Srin
2676c4905d1Sringet_gdb_info () {
2686c4905d1Srin	local _INFO=$_GDB/info
2696c4905d1Srin	local _SRC=$_TMPDIR/gdb/doc
2706c4905d1Srin
2716c4905d1Srin	mkdir -p $_TOP/$_INFO
2726c4905d1Srin
2736c4905d1Srin	for i in $_SRC/*.info; do
2746c4905d1Srin		j=`basename $i`
2756c4905d1Srin		writefile $_INFO/$j < $i
2766c4905d1Srin	done
2776c4905d1Srin}
2786c4905d1Srin
27915577e82Snathanw##### main #####
28015577e82Snathanw
28115577e82Snathanwcase $1 in
28215577e82Snathanwall|gdb)	# everything (uses "canadian cross" temp environment)
28397417a67Schristos	get_gdb_libgdb
284576200d1Schristos	get_gdb_libgdbsupport
285576200d1Schristos	get_gdb_libctf
2869eceabbeSchristos	get_gdb_libbacktrace
2879eceabbeSchristos	get_gdb_libsframe
288576200d1Schristos	get_gdb_libgnulib
28915577e82Snathanw	get_gdb_libbfd
29015577e82Snathanw	get_gdb_libopcodes
29115577e82Snathanw	get_gdb_libiberty
29215577e82Snathanw	get_gdb_libreadline
29397417a67Schristos	get_gdb_libdecnumber
294833251feSchristos	get_gdb_bingdbserver
2956c4905d1Srin	get_gdb_info
29615577e82Snathanw	exit 0
29715577e82Snathanw	;;
29815577e82Snathanw
29915577e82Snathanw*)	echo invalid arguments; exit 1;;
30015577e82Snathanwesac
301