1# ; -*- mode: sh ; -*-
2# Copyright (C) 2013-2023 Free Software Foundation, Inc.
3#
4# This file is part of GDB.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 3 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19# Variables defined here:
20#
21# NAT_FILE - The header file with definitions for this native target.
22#
23# NATDEPFILES - Source files required for native debugging on this
24#               native target.
25#
26# NAT_CDEPS - Dynamic symbols to be exported for libthread_db.
27#
28# LOADLIBES - Libraries against which GDB will be linked for this
29#             native target.
30#
31# MH_CFLAGS - Additional CFLAGS for this host.
32#
33# XM_CLIBS - Host-dependent libraries against which GDB will be linked
34#            for this native target.
35#
36# HAVE_NATIVE_GCORE_HOST - Whether gcore should be installed on this
37#                          native target.
38#
39# nat_makefile_frag - Name of the (optional) Makefile fragment file
40#                     required to build the native target.  The
41#                     fragment is incorporated into the Makefile that
42#                     configure constructs from Makefile.in.
43#
44# Notes:
45#
46# - To avoid shell expansion of variables, declare them with single
47#   quotes.
48#
49# - nat_makefile_frag must contain the full path of the file.
50
51
52# This first case is useful for filling default values for each
53# gdb_host.
54case ${gdb_host} in
55    *linux*)
56	NAT_FILE='config/nm-linux.h'
57	NATDEPFILES='inf-ptrace.o fork-child.o nat/fork-inferior.o \
58		proc-service.o \
59		linux-thread-db.o linux-nat.o nat/linux-osdata.o linux-fork.o \
60		nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o \
61		nat/linux-personality.o nat/linux-namespaces.o'
62	NAT_CDEPS='$(srcdir)/proc-service.list'
63	LOADLIBES='-ldl $(RDYNAMIC)'
64	;;
65    fbsd*)
66	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o'
67	HAVE_NATIVE_GCORE_HOST=1
68	LOADLIBES='-lkvm'
69	;;
70    nbsd*)
71	NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o \
72	    inf-ptrace.o bsd-kvm.o'
73	LOADLIBES='-lkvm'
74	HAVE_NATIVE_GCORE_HOST=1
75	;;
76    obsd*)
77	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
78	;;
79    cygwin*)
80	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
81	;;
82    mingw*)
83	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
84	;;
85    aix)
86	NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o'
87	;;
88    darwin)
89	NATDEPFILES='fork-child.o nat/fork-inferior.o darwin-nat.o \
90	    darwin-nat-info.o'
91	;;
92    sol2)
93	NATDEPFILES='fork-child.o nat/fork-inferior.o \
94	    procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \
95	    sol-thread.o'
96	HAVE_NATIVE_GCORE_HOST=1
97        ;;
98esac
99
100# This is where we actually filter by host and host CPU.
101case ${gdb_host} in
102    aix)
103	case ${gdb_host_cpu} in
104	    powerpc)
105		# Host: IBM PowerPC running AIX aix-thread.o is not
106		# listed in NATDEPFILES as it is pulled in by
107		# configure.
108		NATDEPFILES="${NATDEPFILES} rs6000-aix-nat.o"
109
110		# When compiled with cc, for debugging, this argument
111		# should be passed.  We have no idea who our current
112		# compiler is though, so we skip it.
113		# MH_CFLAGS='-bnodelcsect'
114		;;
115	esac
116	;;
117    alpha-linux)
118	case ${gdb_host_cpu} in
119	    alpha)
120		# Host: Little-endian Alpha running Linux
121		NATDEPFILES="${NATDEPFILES} linux-nat-trad.o alpha-linux-nat.o"
122		# doublest.c currently assumes some properties of FP arithmetic
123		# on the host which require this.
124		MH_CFLAGS='-mieee'
125		;;
126	esac
127	;;
128    cygwin)
129	case ${gdb_host_cpu} in
130	    i386)
131		# Native config information for GDB on i386
132		# systems running Cygwin.
133		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
134		;;
135	esac
136	;;
137    cygwin64)
138	case ${gdb_host_cpu} in
139	    i386)
140		# Native config information for GDB on amd64
141		# systems running Cygwin.
142		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
143		;;
144	esac
145	;;
146    darwin)
147	case ${gdb_host_cpu} in
148	    i386)
149		# Host: IA86 running Darwin
150		NATDEPFILES="${NATDEPFILES} i386-darwin-nat.o x86-nat.o \
151		    nat/x86-dregs.o amd64-nat.o"
152		;;
153	esac
154	;;
155    fbsd)
156	case ${gdb_host_cpu} in
157	    aarch64)
158		# Host: FreeBSD/aarch64
159		NATDEPFILES="${NATDEPFILES} aarch64-nat.o \
160		nat/aarch64-hw-point.o aarch64-fbsd-nat.o"
161		LOADLIBES=
162		;;
163	    arm)
164		# Host: FreeBSD/arm
165		NATDEPFILES="${NATDEPFILES} arm-fbsd-nat.o"
166		LOADLIBES=
167		;;
168	    i386)
169		# Host: FreeBSD/i386
170		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
171		x86-bsd-nat.o x86-fbsd-nat.o i386-fbsd-nat.o bsd-kvm.o"
172		;;
173	    mips)
174		# Host: FreeBSD/mips
175		NATDEPFILES="${NATDEPFILES} mips-fbsd-nat.o"
176		LOADLIBES=
177		;;
178	    powerpc)
179		# Native config information for GDB on PowerPC
180		# systems running FreeBSD.
181		NATDEPFILES="${NATDEPFILES} ppc-fbsd-nat.o bsd-kvm.o"
182		;;
183	    riscv*)
184		# Host: FreeBSD/riscv
185		NATDEPFILES="${NATDEPFILES} riscv-fbsd-nat.o"
186		;;
187	    sparc)
188		# Host: FreeBSD/sparc64
189		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
190		sparc64-fbsd-nat.o bsd-kvm.o"
191		;;
192	esac
193	;;
194    fbsd64)
195	case ${gdb_host_cpu} in
196	    i386)
197		# Host: FreeBSD/amd64
198		NATDEPFILES="${NATDEPFILES} amd64-nat.o \
199		amd64-fbsd-nat.o bsd-kvm.o x86-nat.o nat/x86-dregs.o \
200		x86-bsd-nat.o x86-fbsd-nat.o"
201		;;
202	esac
203	;;
204    go32)
205	case ${gdb_host_cpu} in
206	    i386)
207		# Host: Intel x86 running DJGPP
208		# We include several header files from config/djgpp
209		MH_CFLAGS='-I$(srcdir)/config/djgpp'
210		NATDEPFILES='go32-nat.o x86-nat.o nat/x86-dregs.o'
211		XM_CLIBS='-ldbg'
212		;;
213	esac
214	;;
215    i386gnu)
216	case ${gdb_host_cpu} in
217	    i386)
218		# Host: Intel 386 running the GNU Hurd
219		NATDEPFILES='i386-gnu-nat.o gnu-nat.o \
220		     x86-nat.o nat/x86-dregs.o fork-child.o \
221		     nat/fork-inferior.o \
222		     notify_S.o process_reply_S.o msg_reply_S.o \
223		     msg_U.o exc_request_U.o exc_request_S.o'
224		HAVE_NATIVE_GCORE_HOST=1
225
226		NAT_FILE='nm-i386gnu.h'
227		MH_CFLAGS='-D_GNU_SOURCE'
228
229		XM_CLIBS='-lshouldbeinlibc'
230
231		nat_makefile_frag="${srcdir}/config/${gdb_host_cpu}/i386gnu.mn"
232		;;
233	esac
234	;;
235    linux)
236	case ${gdb_host_cpu} in
237	    aarch64)
238		#  Host: AArch64 based machine running GNU/Linux
239		NATDEPFILES="${NATDEPFILES} aarch64-nat.o aarch64-linux-nat.o \
240		aarch32-linux-nat.o nat/aarch64-hw-point.o \
241		nat/aarch64-linux-hw-point.o \
242		nat/aarch64-linux.o \
243		nat/aarch64-sve-linux-ptrace.o \
244		nat/aarch64-mte-linux-ptrace.o"
245		;;
246	    arc)
247		# Host: ARC based machine running GNU/Linux
248		NATDEPFILES="${NATDEPFILES} arc-linux-nat.o"
249		;;
250	    arm)
251		# Host: ARM based machine running GNU/Linux
252		NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \
253		aarch32-linux-nat.o"
254		;;
255	    i386)
256		# Host: Intel 386 running GNU/Linux.
257		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
258		i386-linux-nat.o x86-linux-nat.o nat/linux-btrace.o \
259		nat/x86-linux.o nat/x86-linux-dregs.o"
260		;;
261	    ia64)
262		# Host: Intel IA-64 running GNU/Linux
263		NATDEPFILES="${NATDEPFILES} ia64-linux-nat.o"
264		;;
265	    loongarch)
266		# Host: LoongArch, running GNU/Linux.
267		NATDEPFILES="${NATDEPFILES} loongarch-linux-nat.o linux-nat-trad.o"
268		;;
269	    m32r)
270		# Host: M32R based machine running GNU/Linux
271		NATDEPFILES="${NATDEPFILES} m32r-linux-nat.o"
272		;;
273	    m68k)
274		# Host: Motorola m68k running GNU/Linux.
275		NATDEPFILES="${NATDEPFILES} m68k-linux-nat.o"
276		;;
277	    mips)
278		# Host: Linux/MIPS
279		NATDEPFILES="${NATDEPFILES} linux-nat-trad.o \
280		mips-linux-nat.o nat/mips-linux-watch.o"
281		;;
282	    or1k)
283		# Host: Linux/OpenRISC
284		NATDEPFILES="${NATDEPFILES} or1k-linux-nat.o"
285		;;
286	    pa)
287		# Host: Hewlett-Packard PA-RISC machine, running Linux
288		NATDEPFILES="${NATDEPFILES} hppa-linux-nat.o"
289		;;
290	    powerpc)
291		# Host: PowerPC, running Linux
292		NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
293		;;
294	    riscv*)
295		# Host: RISC-V, running Linux
296		NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \
297		nat/riscv-linux-tdesc.o"
298		;;
299	    s390)
300		# Host: S390, running Linux
301		NATDEPFILES="${NATDEPFILES} s390-linux-nat.o"
302		;;
303	    sparc)
304		# Host: GNU/Linux SPARC
305		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-linux-nat.o"
306		;;
307	    tilegx)
308		# Host: Tilera TILE-Gx running GNU/Linux.
309		NATDEPFILES="${NATDEPFILES} tilegx-linux-nat.o"
310		NAT_CDEPS=
311		;;
312	    xtensa)
313		# Host: Xtensa, running GNU/Linux.
314		NATDEPFILES="${NATDEPFILES} xtensa-linux-nat.o"
315		;;
316	esac
317	;;
318    linux64)
319	case ${gdb_host_cpu} in
320	    i386)
321		# Host: GNU/Linux x86-64
322		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
323		amd64-nat.o amd64-linux-nat.o x86-linux-nat.o \
324		nat/linux-btrace.o \
325		nat/x86-linux.o nat/x86-linux-dregs.o \
326		nat/amd64-linux-siginfo.o"
327		;;
328	    sparc)
329		# Host: GNU/Linux UltraSPARC
330		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
331		sparc64-linux-nat.o"
332		;;
333	esac
334	;;
335    mingw)
336	case ${gdb_host_cpu} in
337	    i386)
338		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
339		;;
340	esac
341	;;
342    mingw64)
343	case ${gdb_host_cpu} in
344	    i386)
345		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
346		;;
347	esac
348	;;
349    nbsd)
350	case ${gdb_host_cpu} in
351	    aarch64)
352		# Host: NetBSD/aarch64
353		NATDEPFILES="${NATDEPFILES} aarch64-netbsd-nat.o"
354		;;
355	    alpha)
356		# Host: NetBSD/alpha
357		NATDEPFILES="${NATDEPFILES} alpha-bsd-nat.o"
358		;;
359	    arm)
360		# Host: NetBSD/arm
361		NATDEPFILES="${NATDEPFILES} arm-netbsd-nat.o"
362		;;
363	    i386)
364		# Host: NetBSD/i386 ELF
365		NATDEPFILES="${NATDEPFILES} x86-nat.o \
366		nat/x86-dregs.o \
367		x86-bsd-nat.o i386-bsd-nat.o i386-netbsd-nat.o"
368		;;
369	    m68k)
370		# Host: NetBSD/m68k ELF
371		NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o"
372		;;
373	    mips)
374		# Host: NetBSD/mips
375		NATDEPFILES="${NATDEPFILES} mips-netbsd-nat.o"
376		;;
377	    pa)
378		# Host: NetBSD/hppa
379		NATDEPFILES="${NATDEPFILES} hppa-netbsd-nat.o"
380		;;
381	    powerpc)
382		# Host: NetBSD/powerpc
383		NATDEPFILES="${NATDEPFILES} ppc-netbsd-nat.o"
384		;;
385	    riscv*)
386		# Host: NetBSD/riscv
387		NATDEPFILES="${NATDEPFILES} riscv-netbsd-nat.o"
388		;;
389	    sh)
390		# Host: NetBSD/sh
391		NATDEPFILES="${NATDEPFILES} sh-netbsd-nat.o"
392		;;
393	    sparc)
394		# Host: NetBSD/sparc ELF
395		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-netbsd-nat.o"
396		;;
397	    vax)
398		# Host: NetBSD/vax ELF
399		NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o"
400		;;
401
402	esac
403	;;
404    nbsd64)
405	case ${gdb_host_cpu} in
406	    i386)
407		# Host: NetBSD/amd64
408		NATDEPFILES="${NATDEPFILES} amd64-nat.o x86-nat.o \
409		nat/x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-netbsd-nat.o"
410		;;
411	    sparc)
412		# Host: NetBSD/sparc64
413		NATDEPFILES="${NATDEPFILES} sparc64-netbsd-nat.o sparc-nat.o"
414		;;
415
416	esac
417	;;
418    nto)
419	case ${gdb_host_cpu} in
420	    i386)
421		# Host: Intel 386 running QNX.
422		NATDEPFILES='nto-procfs.o'
423		NAT_FILE='config/nm-nto.h'
424		;;
425	esac
426	;;
427    obsd)
428	case ${gdb_host_cpu} in
429	    i386)
430		# Host: OpenBSD/i386 ELF
431		NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \
432		i386-bsd-nat.o i386-obsd-nat.o bsd-kvm.o"
433		LOADLIBES='-lkvm'
434		;;
435	    m68k)
436		# Host: OpenBSD/m68k
437		NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
438		LOADLIBES='-lkvm'
439		;;
440	    pa)
441		# Host: OpenBSD/hppa
442		NATDEPFILES="${NATDEPFILES} obsd-nat.o hppa-obsd-nat.o"
443		;;
444	    powerpc)
445		# Host: OpenBSD/powerpc
446		NATDEPFILES="${NATDEPFILES} obsd-nat.o ppc-obsd-nat.o bsd-kvm.o"
447		LOADLIBES='-lkvm'
448		;;
449	    vax)
450		# Host: OpenBSD/vax
451		NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
452		LOADLIBES='-lkvm'
453		;;
454	esac
455	;;
456    obsd64)
457	case ${gdb_host_cpu} in
458	    i386)
459		# Host: OpenBSD/amd64
460		NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \
461		x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o"
462		LOADLIBES='-lkvm'
463		;;
464	    mips)
465		# Host: OpenBSD/mips64
466		NATDEPFILES="${NATDEPFILES} obsd-nat.o mips64-obsd-nat.o"
467		;;
468	    sparc)
469		# Host: OpenBSD/sparc64
470		NATDEPFILES="${NATDEPFILES} obsd-nat.o sparc64-obsd-nat.o \
471		sparc-nat.o bsd-kvm.o"
472		LOADLIBES='-lkvm'
473		;;
474	esac
475	;;
476    ppc64-linux)
477	case ${gdb_host_cpu} in
478	    powerpc)
479		# Host: PowerPC64, running Linux
480		XM_CLIBS=
481		NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
482		;;
483	esac
484	;;
485    sol2)
486	case ${gdb_host_cpu} in
487	    i386)
488		# Host: Solaris x86_64
489		NATDEPFILES="${NATDEPFILES} \
490		amd64-nat.o i386-sol2-nat.o"
491		;;
492	    sparc)
493		# Host: Solaris SPARC & UltraSPARC
494		NAT_FILE='nm-sol2.h'
495		NATDEPFILES="${NATDEPFILES} sparc-sol2-nat.o"
496		;;
497	esac
498	;;
499esac
500