#	$NetBSD: Makefile,v 1.14 2024/08/18 19:26:28 christos Exp $

NOCTF=
.include <bsd.own.mk>
.include "../Makefile.inc"

GDBLIBDIR=${.CURDIR}/../../lib
GDBARCHDIR=${GDBLIBDIR}/libgdb/arch/${GDB_MACHINE_ARCH}
.include "${GDBARCHDIR}/defs.mk"

PROG=		gdb
MAN=		gdb.1 gdbinit.5

SRCS=		gdb.c 
CPPFLAGS+=	-I${.CURDIR} \
		-I${GNULIBDIR}/libgnulib/arch/${GDB_MACHINE_ARCH}/gnulib \
		-I${DIST}/gdb \
		-I${DIST}/gdbsupport \
		-I${DIST}/gdb/config \
		-I${DIST}/gnulib/import \
		-I${DIST}/include/opcode \
		-I${DIST}/readline \
		-I${DIST}/libdecnumber \
		-I${DIST} \
		-I${GDBLIBDIR}/libgdbsupport/arch/${GDB_MACHINE_ARCH} \
		-I${GDBLIBDIR}/libgdbsupport/arch/${GDB_MACHINE_ARCH}/gdbsupport \
		-I${GDBLIBDIR}/libbfd/arch/${GDB_MACHINE_ARCH} \
		-I${GDBLIBDIR}/libgnulib/arch/${GDB_MACHINE_ARCH} \
		-I${GDBLIBDIR}/libgnulib/arch/${GDB_MACHINE_ARCH}/gnulib/import \
		-I${DIST}/bfd \
		-I${DIST}/include \
		${GCPPFLAGS:M-D*}


TEXINFO=	annotate.texinfo gdb.texinfo stabs.texinfo
INFOFLAGS=	-I${DIST}/gdb/doc -I${DIST}/gdb/mi \
		-I${DIST}/readline/readline/doc -I${.CURDIR}/.. -DGDBN=${GDBN}

gdb-cfg.texi: ${DIST}/gdb/doc/all-cfg.texi
	${TOOL_CAT} ${.ALLSRC} > ${.TARGET}

CLEANFILES+= gdb-cfg.texi
annotate.info stabs.info gdb.info: gdb-cfg.texi GDBvn.texi

FILES=		netbsd.xml
FILESDIR=	/usr/share/gdb/syscalls

.include "../../Makefile.inc"
.include <bsd.info.mk>

PROGDPLIBS+= gdb ${GDBLIBDIR}/libgdb
# XXX: modula2 won't load otherwise, since nothing brings the m2-objs in.
LIBGDBDIR!=	cd ${GDBLIBDIR}/libgdb && ${PRINTOBJDIR}
LDADD+=		${LIBGDBDIR}/m2-lang.o

# Simulator support
.if ${GDB_MACHINE_ARCH} == powerpc || ${GDB_MACHINE_ARCH} == powerpcle || \
    ${GDB_MACHINE_ARCH} == powerpc64
PROGDPLIBS+= sim ${GDBLIBDIR}/libsim
.elif ${MACHINE_CPU} == xxmips
PROGDPLIBS+= sim ${GDBLIBDIR}/libsim
.endif

PROGDPLIBS+= opcodes ${GDBLIBDIR}/libopcodes \
    bfd ${GDBLIBDIR}/libbfd \
    decnumber ${GDBLIBDIR}/libdecnumber \
    gdbsupport ${GDBLIBDIR}/libgdbsupport \
    backtrace ${GDBLIBDIR}/libbacktrace \
    sframe ${GDBLIBDIR}/libsframe \
    ctf ${GDBLIBDIR}/libctf \
    gnulib ${GDBLIBDIR}/libgnulib \
    iberty ${GDBLIBDIR}/libiberty

.if ${USE_LIBEDIT} == yes
LDADD+= -ledit
DPADD+= ${LIBEDIT}
.else
PROGDPLIBS+= readline ${GDBLIBDIR}/libreadline
.endif

.include <bsd.prog.mk>

LIBGMP!=	cd ${.CURDIR}/../../../../lgpl3/gmp/lib/libgmp && ${PRINTOBJDIR}
LDADD+= -L${LIBGMP} -lgmp
DPADD+= ${LIBGMP}/libgmp.a

LDADD+=	-lexpat -llzma -lz -lcurses -lterminfo -lintl -lm -lkvm -lutil -lpthread
DPADD+=	${LIBEXPAT} ${LIBLZMA} ${LIBZ} ${LIBCURSES} ${LIBTERMINFO} ${LIBINTL} \
    ${LIBM} ${LIBKVM} ${LIBUTIL} ${LIBPTHREAD}

# Force c++
CWARNFLAGS.clang+=	-Wno-deprecated
HOST_CC:=		${HOST_CXX}
HOST_CFLAGS+=		${HOST_CXXFLAGS}
CC:=			${CXX}
CFLAGS:=		${CXXFLAGS} -std=gnu++11 -Wno-error=stack-protector

.PATH: ${DIST}/gdb ${DIST}/gdb/mi ${DIST}/gdb/cli ${DIST}/gdb/tui \
    ${DIST}/gdb/signals ${DIST}/gdb/syscalls ${DIST}/gdb/doc \
    ${.CURDIR}/../arch/${GDB_MACHINE_ARCH}
