mknative-gdb revision 1.18 1 #!/bin/sh
2 # $NetBSD: mknative-gdb,v 1.18 2024/08/27 14:58:45 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
21 get_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 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
39 get_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
55 get_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
69 get_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
84 get_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_//g |
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
101 get_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_//g |
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
113 ##### gdb/lib/libctf #####
114
115 get_gdb_libctf () {
116 local _CTF=$_GDB/lib/libctf
117 mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
118
119 getvars libctf/Makefile libctf_la_OBJECTS |
120 sed -e s/libctf_la_//g -e 's/\.lo/.o/g' -e s/libctf_la-//g |
121 write_mk $_CTF/arch/$_MACHINE_SUBDIR/defs.mk
122
123 write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
124 <$_TMPDIR/libctf/config.h
125 }
126
127 ##### gdb/lib/libbacktrace #####
128
129 get_gdb_libbacktrace () {
130 local _BACKTRACE=$_GDB/lib/libbacktrace
131 mkdir -p $_TOP/$_BACKTRACE/arch/$_MACHINE_SUBDIR
132
133 getvars libbacktrace/Makefile libbacktrace_la_OBJECTS \
134 libbacktrace_la_LIBADD |
135 sed -e s/libbacktrace_la_//g -e 's/\.lo/.o/g' -e s/libbacktrace_la-//g |
136 write_mk $_BACKTRACE/arch/$_MACHINE_SUBDIR/defs.mk
137
138 write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/config.h \
139 <$_TMPDIR/libbacktrace/config.h
140 write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/backtrace-supported.h \
141 <$_TMPDIR/libbacktrace/backtrace-supported.h
142 }
143
144 ##### gdb/lib/libsframe #####
145
146 get_gdb_libsframe () {
147 local _SFRAME=$_GDB/lib/libsframe
148 mkdir -p $_TOP/$_SFRAME/arch/$_MACHINE_SUBDIR
149
150 getvars libsframe/Makefile libsframe_la_OBJECTS |
151 sed -e s/libsframe_la_//g -e 's/\.lo/.o/g' -e s/libsframe_la-//g |
152 write_mk $_SFRAME/arch/$_MACHINE_SUBDIR/defs.mk
153 }
154
155 ##### gdb/lib/libgnulib #####
156
157 get_gdb_libgnulib () {
158 local _GNULIB=$_GDB/lib/libgnulib
159 mkdir -p $_TOP/$_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/import/malloc
160
161 (getvars gnulib/Makefile gl_LIBOBJS |
162 sed -e s/gl_LIB//g &&
163 getvars gnulib/import/Makefile libgnu_a_OBJECTS |
164 sed -e s/libgnu_a-//g -e s@glthread/@@g -e s@malloc/@@g) |
165 write_mk $_GNULIB/arch/$_MACHINE_SUBDIR/defs.mk
166
167 for i in config.h \
168 import/alloca.h import/ctype.h \
169 import/dirent.h import/fcntl.h \
170 import/fnmatch.h import/glob.h \
171 import/glob-libc.gl.h \
172 import/inttypes.h import/limits.h \
173 import/locale.h import/math.h \
174 import/malloc/scratch_buffer.gl.h \
175 import/signal.h import/stdint.h \
176 import/stdio.h import/stdlib.h \
177 import/string.h import/time.h \
178 import/unistd.h import/wchar.h \
179 import/wctype.h
180 do
181 write_c $_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/$i \
182 < $_TMPDIR/gnulib/$i
183 done
184 }
185
186 ##### gdb/lib/libgdb #####
187
188 get_gdb_libgdb () {
189 local _GDBP=$_GDB/lib/libgdb
190
191 {
192 getvars gdb/Makefile \
193 INTERNAL_CFLAGS LIBGDB_OBS SIM_OBS
194 } | sed -e s@arch/@@g -e s@cli/@@g -e s@common/agent@common-agent@ \
195 -e s@common/@@g -e s@compile/@@g -e s@guile/@@g -e s@mi/@@g \
196 -e s@nat/@@g -e s@python/@@g -e s@target/@@g \
197 -e s@dwarf2/@@g -e s@unittests/@@g \
198 -e s@tui/@@g | write_mk $_GDBP/arch/$_MACHINE_SUBDIR/defs.mk
199
200 # getvars gdb/gdbserver/Makefile \
201 # INTERNAL_CFLAGS OBS \
202 # | write_mk $_GDB/bin/gdb/arch/$_MACHINE_SUBDIR/gdbserver.mk
203
204 for i in config.h version.c init.c \
205 xml-builtin.c jit-reader.h
206 do
207 write_c $_GDBP/arch/$_MACHINE_SUBDIR/$i \
208 < $_TMPDIR/gdb/$i
209 done
210
211
212 for f in nm tm xm; do
213 if [ ! -f $_TMPDIR/gdb/$f.h ]; then
214 continue
215 fi
216 ls -l $_TMPDIR/gdb/$f.h | \
217 sed 's,^.*->.*/gdb/,,;s,^,#include <,;s,$,>,' | \
218 write_c $_GDBP/arch/$_MACHINE_SUBDIR/$f.h
219 done
220
221 local _LIBSIM=$_GDB/lib/libsim
222 case $_MACHINE_SUBDIR in
223 powerpc*)
224 mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
225 #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
226 # <$_TMPDIR/sim/ppc/config.h
227 #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/build-config.h \
228 # <$_TMPDIR/sim/ppc/build-config.h
229 #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
230 # <$_TMPDIR/sim/common/cconfig.h
231 ;;
232 xxmips*) # Disabled for now
233 mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
234 write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
235 <$_TMPDIR/sim/mips/config.h
236 #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \
237 # <$_TMPDIR/sim/common/cconfig.h
238 {
239 getvars sim/mips/Makefile \
240 LIB_OBJS CONFIG_CFLAGS \
241 BUILT_SRC_FROM_IGEN IGEN_OBJS
242 } | write_mk $_LIBSIM/arch/$_MACHINE_SUBDIR/defs.mk
243 ;;
244 *)
245 ;;
246 esac
247 }
248
249 # gdb/bin/gdbserver`
250
251 get_gdb_bingdbserver () {
252 local _CTF=$_GDB/bin/gdbserver
253
254 if [ ! -f $_CTF/arch/$_MACHINE_SUBDIR/config.h ]; then
255 return
256 fi
257 mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR
258
259 write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \
260 <$_TMPDIR/gdbserver/config.h
261 write_c $_CTF/arch/$_MACHINE_SUBDIR/version.cc \
262 <$_TMPDIR/gdbserver/version-generated.cc
263 }
264
265 # info
266
267 get_gdb_info () {
268 local _INFO=$_GDB/info
269 local _SRC=$_TMPDIR/gdb/doc
270
271 mkdir -p $_TOP/$_INFO
272
273 for i in $_SRC/*.info; do
274 j=`basename $i`
275 writefile $_INFO/$j < $i
276 done
277 }
278
279 ##### main #####
280
281 case $1 in
282 all|gdb) # everything (uses "canadian cross" temp environment)
283 get_gdb_libgdb
284 get_gdb_libgdbsupport
285 get_gdb_libctf
286 get_gdb_libbacktrace
287 get_gdb_libsframe
288 get_gdb_libgnulib
289 get_gdb_libbfd
290 get_gdb_libopcodes
291 get_gdb_libiberty
292 get_gdb_libreadline
293 get_gdb_libdecnumber
294 get_gdb_bingdbserver
295 get_gdb_info
296 exit 0
297 ;;
298
299 *) echo invalid arguments; exit 1;;
300 esac
301