summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/binutils/gdb/Makefile
blob: f6c7865e71484f87b28bab1fed7fe6b661a863e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# $FreeBSD$

.include "../Makefile.inc0"

.PATH: ${SRCDIR}/binutils

NOSHARED?=yes
PROG=	gdb
XSRCS=	annotate.c ax-general.c ax-gdb.c bcache.c blockframe.c		\
	breakpoint.c buildsym.c c-exp.y c-lang.c c-typeprint.c		\
	c-valprint.c ch-exp.c ch-lang.c ch-typeprint.c ch-valprint.c	\
	coffread.c complaints.c copying.c core-regset.c	\
	corefile.c corelow.c cp-valprint.c dcache.c dbxread.c		\
	demangle.c dwarfread.c dwarf2read.c elfread.c environ.c eval.c	\
	exec.c expprint.c f-exp.y f-lang.c f-typeprint.c f-valprint.c	\
	findvar.c fork-child.c gdbarch.c gdbtypes.c \
	infcmd.c inflow.c infptrace.c infrun.c inftarg.c language.c	\
	jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c nlmread.c	\
	m2-lang.c m2-exp.y m2-typeprint.c m2-valprint.c main.c maint.c	\
	mdebugread.c mem-break.c minsyms.c objfiles.c parse.c		\
	printcmd.c remote.c remote-utils.c scm-exp.c scm-lang.c		\
	scm-valprint.c solib.c source.c stabsread.c stack.c symfile.c	\
	symmisc.c symtab.c target.c thread.c top.c tracepoint.c \
	typeprint.c utils.c valarith.c valops.c valprint.c values.c	\
	serial.c ser-unix.c ser-tcp.c
XSRCS+=	arch-utils.c cp-abi.c completer.c doublest.c event-loop.c	\
	event-top.c frame.c gdb-events.c inf-loop.c linespec.c		\
	memattr.c regcache.c signals.c solib-svr4.c solib-legacy.c	\
	ui-file.c ui-out.c wrapper.c cli-out.c \
	cli-cmds.c cli-cmds.h cli-decode.c cli-decode.h	cli-script.c	\
	cli-script.h cli-setshow.c cli-setshow.h cli-utils.c cli-utils.h
XSRCS+=	freebsd-uthread.c kvm-fbsd.c
SRCS=	init.c ${XSRCS} nm.h tm.h xm.h gdbversion.c xregex.h

.if exists(${.CURDIR}/Makefile.${TARGET_ARCH})
.include "${.CURDIR}/Makefile.${TARGET_ARCH}"
.endif

WARNS=	0
.if ${TARGET_ARCH} != ${MACHINE_ARCH}
CFLAGS+=	-DCROSS_COMPILE=1
.endif
CFLAGS+=	-DDEFAULT_BFD_ARCH=bfd_${TARGET_ARCH}_arch
CFLAGS+=	-I${.CURDIR}/${TARGET_ARCH}
CFLAGS+=	-I${SRCDIR}/binutils
CFLAGS+=	-I${SRCDIR}/bfd
CFLAGS+=	-I${GDBDIR}/gdb
CFLAGS+=	-I${GDBDIR}/gdb/config
DPADD=		${LIBKVM}
DPADD+=		${LIBM}
DPADD+=		${RELTOP}/libbfd/libbfd.a
DPADD+=		${RELTOP}/libopcodes/libopcodes.a
DPADD+=		${LIBGNUREGEX}
DPADD+=		${RELTOP}/libiberty/libiberty.a
DPADD+=		${LIBREADLINE}
DPADD+=		${LIBTERMCAP}
LDADD=		-lkvm
LDADD+=		-lm
LDADD+=		${RELTOP}/libbfd/libbfd.a
LDADD+=		${RELTOP}/libopcodes/libopcodes.a
LDADD+=		-lgnuregex
LDADD+=		${RELTOP}/libiberty/libiberty.a
LDADD+=		-lreadline
LDADD+=		-ltermcap

GDBDIR=	${.CURDIR}/../../../../contrib/gdb
.PATH:	${GDBDIR}/gdb ${GDBDIR}/gdb/cli
.PATH:	${SRCDIR}/opcodes

CFLAGS+= -I$(.CURDIR) -I${DESTDIR}/usr/include/readline
YFLAGS=

CLEANFILES=	init.c init.c-tmp nm.h tm.h xm.h gdbversion.c xregex.h

# We do this by grepping through sources.  If that turns out to be too slow,
# maybe we could just require every .o file to have an initialization routine
# of a given name (remote-udi.o -> _initialize_remote_udi, etc.).
#
# Formatting conventions:  The name of the _initialize_* routines must start
# in column zero, and must not be inside #if.
#
# Note that the set of files with init functions might change, or the names
# of the functions might change, so this files needs to depend on all the
# object files that will be linked into gdb.

init.c: ${XSRCS}
	@${ECHO} Making ${.TARGET}
	@rm -f init.c-tmp
	@echo '/* Do not modify this file.  */' >init.c-tmp
	@echo '/* It is created automatically by the Makefile.  */'>>init.c-tmp
	@echo '#include "defs.h"'		>>init.c-tmp
	@echo '#include "call-cmds.h"'		>>init.c-tmp
	@echo 'void initialize_all_files () {' >>init.c-tmp
	@for i in ${.ALLSRC} ; do \
	  filename=`echo $$i | sed \
	    -e '/^Onindy.c/d' \
	    -e '/^nindy.c/d' \
	    -e '/ttyflush.c/d' \
	    -e '/xdr_ld.c/d' \
	    -e '/xdr_ptrace.c/d' \
	    -e '/xdr_rdb.c/d' \
	    -e '/udr.c/d' \
	    -e '/udip2soc.c/d' \
	    -e '/udi2go32.c/d' \
	    -e '/version.c/d' \
	    -e '/^[a-z0-9A-Z_]*_[SU].c/d' \
	    -e '/[a-z0-9A-Z_]*-exp.tab.c/d'` ; \
	  case $$filename in \
	    "") ;; \
	    *) sed <$$filename >>init.c-tmp -n \
	-e '/^_initialize_[a-z_0-9A-Z]* *(/s/^\([a-z_0-9A-Z]*\).*/  {extern void \1 (); \1 ();}/p' ; ;; \
	  esac ; \
	done
	@echo '}' >>init.c-tmp
	@mv init.c-tmp ${.TARGET}

.PRECIOUS: init.c

nm.h:
	echo '#include "${TARGET_ARCH}/nm-fbsd.h"'	>${.TARGET}
	echo '#include "fbsd-kgdb.h"'		>>${.TARGET}

.for H in tm-fbsd xm-${TARGET_ARCH}
${H:C/-.*$//}.h:
	ln -sf \
	    ${.CURDIR}/../../../../contrib/gdb/gdb/config/${TARGET_ARCH}/${H}.h \
	    ${.TARGET}
.endfor

gdbversion.c: version.in
	@echo '#include "version.h"'				> ${.TARGET}
	@echo 'const char version[] = "'"`sed q ${.ALLSRC}`"'";'>>${.TARGET}
	@echo 'const char host_name[] = "${MACHINE_ARCH}-undermydesk-freebsd";'	>>${.TARGET}
	@echo 'const char target_name[] = "${TARGET_ARCH}-undermydesk-freebsd";'	>>${.TARGET}

xregex.h:
	@echo '#include <gnuregex.h>' >${.TARGET}

.include <bsd.prog.mk>
OpenPOWER on IntegriCloud