xref: /netbsd-src/usr.sbin/crash/Makefile (revision b426528770b1ff548bd444360bac04d668221a78)
1#	$NetBSD: Makefile,v 1.53 2024/11/25 22:04:15 skrll Exp $
2
3PROG=		crash
4MAN=		crash.8
5RUMPKERNEL=	yes	# XXX: Avoid -mcmodel=kernel
6
7CWARNFLAGS.clang+=	-Wno-format
8
9LDADD+=	-lutil -lkvm -ledit -lterminfo
10DPADD+=	${LIBUTIL} ${LIBKVM} ${LIBEDIT} ${LIBTERMINFO}
11
12.include <bsd.own.mk>
13
14# some ddb kernel components need limited modifications.  for now,
15# punt if not noted as implemented here.
16.if \
17       ${MACHINE_CPU} == "aarch64" \
18    || ${MACHINE_CPU} == "arm" \
19    || ${MACHINE_CPU} == "mips" \
20    || ${MACHINE_CPU} == "riscv" \
21    || ${MACHINE_ARCH} == "alpha" \
22    || ${MACHINE_ARCH} == "m68k" \
23    || ${MACHINE_ARCH} == "powerpc" \
24    || ${MACHINE_ARCH} == "powerpc64" \
25    || ${MACHINE} == "amd64" \
26    || ${MACHINE} == "hppa" \
27    || ${MACHINE} == "i386" \
28    || ${MACHINE} == "sparc" \
29    || ${MACHINE} == "sparc64"
30SRCS+=	db_trace.c
31.if \
32       ${MACHINE_ARCH} == "alpha" \
33    || ${MACHINE_CPU} == "riscv"
34SRCS+=	db_interface.c
35.elif ${MACHINE_CPU} == "mips"
36SRCS+=	db_interface.c mips_stacktrace.c
37CPPFLAGS+=	-DDDB
38.elif ${MACHINE_ARCH} != "m68k" \
39   && ${MACHINE_ARCH} != "powerpc" \
40   && ${MACHINE_ARCH} != "powerpc64"
41SRCS+=	db_machdep.c
42.endif
43REALCRASH=yes
44.else
45REALCRASH=no
46.endif
47
48.if ${REALCRASH} != "no"	# {
49
50S=		${.CURDIR}/../../sys
51
52CPPFLAGS+=	-I${.CURDIR} -I${.OBJDIR} -I${S} -fno-strict-aliasing
53CPPFLAGS+=	-DDDB_VERBOSE_HELP -DDB_MAX_LINE=10000000 -D_KMEMUSER
54CPPFLAGS+=	-UDB_MACHINE_COMMANDS
55
56# XXX
57.if ${MACHINE} == "evbppc"
58CPPFLAGS+=	-DPPC_INTR_IMPL="<powerpc/intr.h>"
59.endif
60
61# ddb files from kernel
62.PATH:	$S/ddb
63SRCS+=	db_command.c db_lwp.c db_proc.c db_xxx.c db_cpu.c
64SRCS+=  db_autoconf.c
65SRCS+=	db_access.c db_elf.c db_examine.c
66SRCS+=	db_expr.c db_lex.c db_output.c db_print.c
67SRCS+=	db_sym.c db_syncobj.c db_variables.c db_write_cmd.c
68
69.PATH:	${S}/arch/${MACHINE}/${MACHINE}
70.PATH:	${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}
71SRCS+=	db_disasm.c
72
73.PATH:  $S/kern
74SRCS+=	kern_timeout.c
75CPPFLAGS.kern_timeout.c += -DCRASH -DDDB
76
77CPPFLAGS +=-DLOCKDEBUG
78SRCS += subr_lockdebug.c
79CPPFLAGS.subr_lockdebug.c += -DCRASH -DDDB
80
81CPPFLAGS+=	-I${S}/arch
82
83. if    ${MACHINE} == "amd64" \
84     || ${MACHINE} == "i386"
85MACHINE_FAMILY = x86
86. elif  ${MACHINE} == "sparc64"
87MACHINE_FAMILY = sparc
88. else
89MACHINE_FAMILY = ${MACHINE_CPU}
90. endif
91
92.if ${MACHINE_CPU} == "arm"
93.PATH:	${S}/arch/arm/arm32
94SRCS+=disassem.c cpufunc_asm.S
95.endif
96.if ${MACHINE_CPU} == "aarch64"
97SRCS+=disasm.c
98.endif
99
100.PATH:	${S}/arch/${MACHINE_FAMILY}/${MACHINE_FAMILY}
101
102# crash main source
103SRCS+=	crash.c
104
105# arch.c
106.PATH:	${.CURDIR}/arch
107. if (exists(${.CURDIR}/arch/${MACHINE_FAMILY}.c))
108SRCS+=	${MACHINE_FAMILY}.c
109. else
110SRCS+=	generic.c
111. endif
112
113COPTS.db_output.c += -Wno-format-nonliteral
114
115.if ${MKREPRO} == "yes"
116.       if ${MKREPRO_TIMESTAMP:U0} != 0
117NVFLAGS+=-r ${MKREPRO_TIMESTAMP}
118.       else
119NVFLAGS+=-R
120.       endif
121.endif
122
123# vers.c
124SRCS+=	vers.c
125vers.c:	${S}/conf/newvers.sh ${_NETBSD_VERSION_DEPENDS}
126	TOOL_DATE=${TOOL_DATE} ${HOST_SH} ${S}/conf/newvers.sh ${NVFLAGS} -n -m ${MACHINE} -i CRASH
127CLEANFILES+=	vers.c version
128
129.else				# } {
130
131SRCS+=	unsupported.c
132
133.endif				# }
134
135.if  ${MACHINE} == "sparc" \
136    || ${MACHINE} == "sparc64"
137COPTS.kern_timeout.c += -Wno-stack-protector
138.endif
139
140.include "../../compat/exec.mk"
141
142COPTS.db_command.c+=	${CC_WNO_CAST_FUNCTION_TYPE}
143
144COPTS+=		-fcommon
145
146.include <bsd.prog.mk>
147.include <bsd.klinks.mk>
148