# ; -*- mode: sh ; -*-
# Copyright (C) 2013-2022 Free Software Foundation, Inc.
#
# This file is part of GDB.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Variables defined here:
#
# NAT_FILE - The header file with definitions for this native target.
#
# NATDEPFILES - Source files required for native debugging on this
#               native target.
#
# NAT_CDEPS - Dynamic symbols to be exported for libthread_db.
#
# LOADLIBES - Libraries against which GDB will be linked for this
#             native target.
#
# MH_CFLAGS - Additional CFLAGS for this host.
#
# XM_CLIBS - Host-dependent libraries against which GDB will be linked
#            for this native target.
#
# HAVE_NATIVE_GCORE_HOST - Whether gcore should be installed on this
#                          native target.
#
# nat_makefile_frag - Name of the (optional) Makefile fragment file
#                     required to build the native target.  The
#                     fragment is incorporated into the Makefile that
#                     configure constructs from Makefile.in.
#
# Notes:
#
# - To avoid shell expansion of variables, declare them with single
#   quotes.
#
# - nat_makefile_frag must contain the full path of the file.


# This first case is useful for filling default values for each
# gdb_host.
case ${gdb_host} in
    *linux*)
	NAT_FILE='config/nm-linux.h'
	NATDEPFILES='inf-ptrace.o fork-child.o nat/fork-inferior.o \
		proc-service.o \
		linux-thread-db.o linux-nat.o nat/linux-osdata.o linux-fork.o \
		nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o \
		nat/linux-personality.o nat/linux-namespaces.o'
	NAT_CDEPS='$(srcdir)/proc-service.list'
	LOADLIBES='-ldl $(RDYNAMIC)'
	;;
    fbsd*)
	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o'
	HAVE_NATIVE_GCORE_HOST=1
	LOADLIBES='-lkvm'
	;;
    nbsd*)
	NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o'
	HAVE_NATIVE_GCORE_HOST=1
	;;
    obsd*)
	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
	;;
    cygwin*)
	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
	;;
    mingw*)
	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
	;;
    aix)
	NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o'
	;;
    darwin)
	NATDEPFILES='fork-child.o nat/fork-inferior.o darwin-nat.o \
	    darwin-nat-info.o'
	;;
    sol2)
	NATDEPFILES='fork-child.o nat/fork-inferior.o \
	    procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \
	    sol-thread.o'
	HAVE_NATIVE_GCORE_HOST=1
        ;;
esac

# This is where we actually filter by host and host CPU.
case ${gdb_host} in
    aix)
	case ${gdb_host_cpu} in
	    powerpc)
		# Host: IBM PowerPC running AIX aix-thread.o is not
		# listed in NATDEPFILES as it is pulled in by
		# configure.
		NATDEPFILES="${NATDEPFILES} rs6000-aix-nat.o"

		# When compiled with cc, for debugging, this argument
		# should be passed.  We have no idea who our current
		# compiler is though, so we skip it.
		# MH_CFLAGS='-bnodelcsect'
		;;
	esac
	;;
    alpha-linux)
	case ${gdb_host_cpu} in
	    alpha)
		# Host: Little-endian Alpha running Linux
		NATDEPFILES="${NATDEPFILES} linux-nat-trad.o alpha-linux-nat.o"
		# doublest.c currently assumes some properties of FP arithmetic
		# on the host which require this.
		MH_CFLAGS='-mieee'
		;;
	esac
	;;
    cygwin)
	case ${gdb_host_cpu} in
	    i386)
		# Native config information for GDB on i386
		# systems running Cygwin.
		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
		;;
	esac
	;;
    cygwin64)
	case ${gdb_host_cpu} in
	    i386)
		# Native config information for GDB on amd64
		# systems running Cygwin.
		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
		;;
	esac
	;;
    darwin)
	case ${gdb_host_cpu} in
	    i386)
		# Host: IA86 running Darwin
		NATDEPFILES="${NATDEPFILES} i386-darwin-nat.o x86-nat.o \
		    nat/x86-dregs.o amd64-nat.o"
		;;
	esac
	;;
    fbsd)
	case ${gdb_host_cpu} in
	    aarch64)
		# Host: FreeBSD/aarch64
		NATDEPFILES="${NATDEPFILES} aarch64-nat.o \
		nat/aarch64-hw-point.o aarch64-fbsd-nat.o"
		LOADLIBES=
		;;
	    arm)
		# Host: FreeBSD/arm
		NATDEPFILES="${NATDEPFILES} arm-fbsd-nat.o"
		LOADLIBES=
		;;
	    i386)
		# Host: FreeBSD/i386
		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
		x86-bsd-nat.o x86-fbsd-nat.o i386-fbsd-nat.o bsd-kvm.o"
		;;
	    mips)
		# Host: FreeBSD/mips
		NATDEPFILES="${NATDEPFILES} mips-fbsd-nat.o"
		LOADLIBES=
		;;
	    powerpc)
		# Native config information for GDB on PowerPC
		# systems running FreeBSD.
		NATDEPFILES="${NATDEPFILES} ppc-fbsd-nat.o bsd-kvm.o"
		;;
	    riscv*)
		# Host: FreeBSD/riscv
		NATDEPFILES="${NATDEPFILES} riscv-fbsd-nat.o"
		;;
	    sparc)
		# Host: FreeBSD/sparc64
		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
		sparc64-fbsd-nat.o bsd-kvm.o"
		;;
	esac
	;;
    fbsd64)
	case ${gdb_host_cpu} in
	    i386)
		# Host: FreeBSD/amd64
		NATDEPFILES="${NATDEPFILES} amd64-nat.o \
		amd64-fbsd-nat.o bsd-kvm.o x86-nat.o nat/x86-dregs.o \
		x86-bsd-nat.o x86-fbsd-nat.o"
		;;
	esac
	;;
    go32)
	case ${gdb_host_cpu} in
	    i386)
		# Host: Intel x86 running DJGPP
		# We include several header files from config/djgpp
		MH_CFLAGS='-I$(srcdir)/config/djgpp'
		NATDEPFILES='go32-nat.o x86-nat.o nat/x86-dregs.o'
		XM_CLIBS='-ldbg'
		;;
	esac
	;;
    i386gnu)
	case ${gdb_host_cpu} in
	    i386)
		# Host: Intel 386 running the GNU Hurd
		NATDEPFILES='i386-gnu-nat.o gnu-nat.o \
		     x86-nat.o nat/x86-dregs.o fork-child.o \
		     nat/fork-inferior.o \
		     notify_S.o process_reply_S.o msg_reply_S.o \
		     msg_U.o exc_request_U.o exc_request_S.o'
		HAVE_NATIVE_GCORE_HOST=1

		NAT_FILE='nm-i386gnu.h'
		MH_CFLAGS='-D_GNU_SOURCE'

		XM_CLIBS='-lshouldbeinlibc'

		nat_makefile_frag="${srcdir}/config/${gdb_host_cpu}/i386gnu.mn"
		;;
	esac
	;;
    linux)
	case ${gdb_host_cpu} in
	    aarch64)
		#  Host: AArch64 based machine running GNU/Linux
		NATDEPFILES="${NATDEPFILES} aarch64-nat.o aarch64-linux-nat.o \
		aarch32-linux-nat.o nat/aarch64-hw-point.o \
		nat/aarch64-linux-hw-point.o \
		nat/aarch64-linux.o \
		nat/aarch64-sve-linux-ptrace.o \
		nat/aarch64-mte-linux-ptrace.o"
		;;
	    arc)
		# Host: ARC based machine running GNU/Linux
		NATDEPFILES="${NATDEPFILES} arc-linux-nat.o"
		;;
	    arm)
		# Host: ARM based machine running GNU/Linux
		NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \
		aarch32-linux-nat.o"
		;;
	    i386)
		# Host: Intel 386 running GNU/Linux.
		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
		i386-linux-nat.o x86-linux-nat.o nat/linux-btrace.o \
		nat/x86-linux.o nat/x86-linux-dregs.o"
		;;
	    ia64)
		# Host: Intel IA-64 running GNU/Linux
		NATDEPFILES="${NATDEPFILES} ia64-linux-nat.o"
		;;
	    loongarch)
		# Host: LoongArch, running GNU/Linux.
		NATDEPFILES="${NATDEPFILES} loongarch-linux-nat.o linux-nat-trad.o"
		;;
	    m32r)
		# Host: M32R based machine running GNU/Linux
		NATDEPFILES="${NATDEPFILES} m32r-linux-nat.o"
		;;
	    m68k)
		# Host: Motorola m68k running GNU/Linux.
		NATDEPFILES="${NATDEPFILES} m68k-linux-nat.o"
		;;
	    mips)
		# Host: Linux/MIPS
		NATDEPFILES="${NATDEPFILES} linux-nat-trad.o \
		mips-linux-nat.o nat/mips-linux-watch.o"
		;;
	    or1k)
		# Host: Linux/OpenRISC
		NATDEPFILES="${NATDEPFILES} or1k-linux-nat.o"
		;;
	    pa)
		# Host: Hewlett-Packard PA-RISC machine, running Linux
		NATDEPFILES="${NATDEPFILES} hppa-linux-nat.o"
		;;
	    powerpc)
		# Host: PowerPC, running Linux
		NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
		;;
	    riscv*)
		# Host: RISC-V, running Linux
		NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \
		nat/riscv-linux-tdesc.o"
		;;
	    s390)
		# Host: S390, running Linux
		NATDEPFILES="${NATDEPFILES} s390-linux-nat.o"
		;;
	    sparc)
		# Host: GNU/Linux SPARC
		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-linux-nat.o"
		;;
	    tilegx)
		# Host: Tilera TILE-Gx running GNU/Linux.
		NATDEPFILES="${NATDEPFILES} tilegx-linux-nat.o"
		NAT_CDEPS=
		;;
	    xtensa)
		# Host: Xtensa, running GNU/Linux.
		NATDEPFILES="${NATDEPFILES} xtensa-linux-nat.o"
		;;
	esac
	;;
    linux64)
	case ${gdb_host_cpu} in
	    i386)
		# Host: GNU/Linux x86-64
		NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
		amd64-nat.o amd64-linux-nat.o x86-linux-nat.o \
		nat/linux-btrace.o \
		nat/x86-linux.o nat/x86-linux-dregs.o \
		nat/amd64-linux-siginfo.o"
		;;
	    sparc)
		# Host: GNU/Linux UltraSPARC
		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
		sparc64-linux-nat.o"
		;;
	esac
	;;
    mingw)
	case ${gdb_host_cpu} in
	    i386)
		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
		;;
	esac
	;;
    mingw64)
	case ${gdb_host_cpu} in
	    i386)
		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
		;;
	esac
	;;
    nbsd)
	case ${gdb_host_cpu} in
	    alpha)
		# Host: NetBSD/alpha
		NATDEPFILES="${NATDEPFILES} alpha-bsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    mips)
		# Host: NetBSD/mips
		NATDEPFILES="${NATDEPFILES} mips-netbsd-nat.o"
		;;
	    pa)
		# Host: NetBSD/hppa
		NATDEPFILES="${NATDEPFILES} netbsd-nat.o hppa-netbsd-nat.o"
		;;
	    powerpc)
		# Host: NetBSD/powerpc
		NATDEPFILES="${NATDEPFILES} ppc-netbsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    sh)
		# Host: NetBSD/sh
		NATDEPFILES="${NATDEPFILES} sh-netbsd-nat.o"
		;;

	esac
	;;
    nbsd64)
	case ${gdb_host_cpu} in
	    i386)
		# Host: NetBSD/amd64
		NATDEPFILES="${NATDEPFILES} netbsd-nat.o amd64-nat.o x86-nat.o \
		nat/x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-netbsd-nat.o"
		;;
	    sparc)
		# Host: NetBSD/sparc64
		NATDEPFILES="${NATDEPFILES} sparc64-netbsd-nat.o sparc-nat.o \
		bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;

	esac
	;;
    nbsdelf)
	case ${gdb_host_cpu} in
	    arm)
		# Host: NetBSD/arm
		NATDEPFILES="${NATDEPFILES} arm-netbsd-nat.o"
		;;
	    i386)
		# Host: NetBSD/i386 ELF
		NATDEPFILES="${NATDEPFILES} netbsd-nat.o x86-nat.o \
		nat/x86-dregs.o \
		x86-bsd-nat.o i386-bsd-nat.o i386-netbsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    m68k)
		# Host: NetBSD/m68k ELF
		NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    sparc)
		# Host: NetBSD/sparc ELF
		NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-netbsd-nat.o \
		bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    vax)
		# Host: NetBSD/vax ELF
		NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;

	esac
	;;
    nto)
	case ${gdb_host_cpu} in
	    i386)
		# Host: Intel 386 running QNX.
		NATDEPFILES='nto-procfs.o'
		NAT_FILE='config/nm-nto.h'
		;;
	esac
	;;
    obsd)
	case ${gdb_host_cpu} in
	    i386)
		# Host: OpenBSD/i386 ELF
		NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \
		i386-bsd-nat.o i386-obsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    m68k)
		# Host: OpenBSD/m68k
		NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    pa)
		# Host: OpenBSD/hppa
		NATDEPFILES="${NATDEPFILES} obsd-nat.o hppa-obsd-nat.o"
		;;
	    powerpc)
		# Host: OpenBSD/powerpc
		NATDEPFILES="${NATDEPFILES} obsd-nat.o ppc-obsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    vax)
		# Host: OpenBSD/vax
		NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	esac
	;;
    obsd64)
	case ${gdb_host_cpu} in
	    i386)
		# Host: OpenBSD/amd64
		NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \
		x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	    mips)
		# Host: OpenBSD/mips64
		NATDEPFILES="${NATDEPFILES} obsd-nat.o mips64-obsd-nat.o"
		;;
	    sparc)
		# Host: OpenBSD/sparc64
		NATDEPFILES="${NATDEPFILES} obsd-nat.o sparc64-obsd-nat.o \
		sparc-nat.o bsd-kvm.o"
		LOADLIBES='-lkvm'
		;;
	esac
	;;
    ppc64-linux)
	case ${gdb_host_cpu} in
	    powerpc)
		# Host: PowerPC64, running Linux
		XM_CLIBS=
		NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
		;;
	esac
	;;
    sol2)
	case ${gdb_host_cpu} in
	    i386)
		# Host: Solaris x86_64
		NATDEPFILES="${NATDEPFILES} \
		amd64-nat.o i386-sol2-nat.o"
		;;
	    sparc)
		# Host: Solaris SPARC & UltraSPARC
		NAT_FILE='nm-sol2.h'
		NATDEPFILES="${NATDEPFILES} sparc-sol2-nat.o"
		;;
	esac
	;;
esac
