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 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 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 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