summaryrefslogtreecommitdiff
path: root/tools/gdb/mknative-gdb
blob: 1d4e16394c660f953d0200dbd8b185c52987aca2 (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
#!/bin/sh
#	$NetBSD: mknative-gdb,v 1.1 2006/05/29 19:10:58 nathanw Exp $
#
# Shell script for generating all the constants needed for a native
# platform build of src/gnu/dist/gdb6.
#

# initialise

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

. $_TOP/tools/gcc/mknative.common

##### gnu/usr.bin/gdb6/bfd #####

get_gdb_libbfd () {
	mkdir -p $_TOP/gnu/usr.bin/gdb6/bfd/arch/$MACHINE_ARCH

	{
		getvars bfd/Makefile \
			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
			INCLUDES TDEFAULTS
	} | write_mk gnu/usr.bin/gdb6/bfd/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/usr.bin/gdb6/bfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
	write_c gnu/usr.bin/gdb6/bfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h

	{
		cat $_TMPDIR/bfd/config.h
	} | write_c gnu/usr.bin/gdb6/bfd/arch/$MACHINE_ARCH/config.h
}

##### gnu/lib/opcodes #####

get_gdb_libopcodes () {
	mkdir -p $_TOP/gnu/usr.bin/gdb6/opcodes/arch/$MACHINE_ARCH

	{
		getvars opcodes/Makefile \
			archdefs BFD_MACHINES libopcodes_la_SOURCES
	} | write_mk gnu/usr.bin/gdb6/opcodes/arch/$MACHINE_ARCH/defs.mk

	{
		cat $_TMPDIR/opcodes/config.h
	} | write_c gnu/usr.bin/gdb6/opcodes/arch/$MACHINE_ARCH/config.h
}

##### gnu/lib/libiberty #####

get_gdb_libiberty () {
	mkdir -p $_TOP/gnu/usr.bin/gdb6/libiberty/arch/$MACHINE_ARCH

	getvars libiberty/Makefile \
		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
		| write_mk gnu/usr.bin/gdb6/libiberty/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/usr.bin/gdb6/libiberty/arch/$MACHINE_ARCH/config.h \
		<$_TMPDIR/libiberty/config.h
}

##### gnu/usr.bin/gdb6/readline #####

get_gdb_libreadline () {
	mkdir -p $_TOP/gnu/usr.bin/gdb6/readline/arch/$MACHINE_ARCH

	{
		getvars readline/Makefile \
			CCFLAGS OBJECTS
	} | write_mk gnu/usr.bin/gdb6/readline/arch/$MACHINE_ARCH/defs.mk

	write_c gnu/usr.bin/gdb6/readline/arch/$MACHINE_ARCH/config.h \
		<$_TMPDIR/readline/config.h
}

##### gnu/usr.bin/gdb6 #####

get_gdb () {
	mkdir -p $_TOP/gnu/usr.bin/gdb6/arch/$MACHINE_ARCH

	{
		getvars gdb/Makefile \
			INTERNAL_CFLAGS LIBGDB_OBS SIM_OBS
	} | write_mk gnu/usr.bin/gdb6/arch/$MACHINE_ARCH/defs.mk

#	getvars gdb/gdbserver/Makefile \
#		INTERNAL_CFLAGS OBS \
#		| write_mk gnu/usr.bin/gdb/arch/$MACHINE_ARCH/gdbserver.mk

	write_c gnu/usr.bin/gdb6/arch/$MACHINE_ARCH/config.h \
		< $_TMPDIR/gdb/config.h

	for f in init version; do
		write_c gnu/usr.bin/gdb6/arch/$MACHINE_ARCH/$f.c <$_TMPDIR/gdb/$f.c
	done

	for f in nm tm xm; do
		if [ -f $_TMPDIR/gdb/$f.h ]; then 
			ls -l $_TMPDIR/gdb/$f.h | sed 's,^.*->.*/gdb/,,;s,^,#include <,;s,$,>,' \
				| write_c gnu/usr.bin/gdb6/arch/$MACHINE_ARCH/$f.h
		fi
	done

	case $MACHINE_ARCH in
	powerpc*)
		mkdir -p $_TOP/gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH
		write_c gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH/config.h \
			<$_TMPDIR/sim/ppc/config.h
		write_c gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH/cconfig.h \
			<$_TMPDIR/sim/common/cconfig.h
		;;
	mips*)
		mkdir -p $_TOP/gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH
		write_c gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH/config.h \
			<$_TMPDIR/sim/mips/config.h
		write_c gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH/cconfig.h \
			<$_TMPDIR/sim/common/cconfig.h
		{
			getvars sim/mips/Makefile \
				LIB_OBJS CONFIG_CFLAGS \
			    	BUILT_SRC_FROM_IGEN IGEN_OBJS
		} | write_mk gnu/usr.bin/gdb6/sim/arch/$MACHINE_ARCH/defs.mk
		;;
	*)
		;;
	esac
}

##### main #####

case $1 in
all|gdb)	# everything (uses "canadian cross" temp environment)
	get_gdb
	get_gdb_libbfd
	get_gdb_libopcodes
	get_gdb_libiberty
	get_gdb_libreadline
	exit 0
	;;

*)	echo invalid arguments; exit 1;;
esac