1#!/bin/sh
2#         $NetBSD: mknative-gdb,v 1.19 2024/08/27 21:50:20 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 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_//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
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_//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
115get_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
129get_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
146get_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
157get_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
188get_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          xxpowerpc*)
224                    mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR
225                    write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \
226                              <$_TMPDIR/sim/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
251get_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
267get_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
281case $1 in
282all|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;;
300esac
301