aboutsummaryrefslogtreecommitdiff
path: root/gdb/Makefile.dist
blob: d142d0f7941dfad477617289b658059fcc89921b (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
/* This file should be run through the C preprocessor by config.gdb
   to produce the Makefile.  */

/* System V:
 If your system has a broken alloca(), define ALLOCA & ALLOCA1 below.
 Also, if you compile gdb with a compiler which uses the coff
 encapsulation feature (this is a function of the compiler used, NOT
 of the m-?.h file selected by config.gdb), you must make sure that
 the GNU nm is the one that is used by munch. */

/* If you are compiling with GCC, make sure that either 1) You use the
 -traditional flag, or 2) You have the fixed include files where GCC
 can reach them.  Otherwise the ioctl calls in inflow.c and readline.c 
 will be incorrectly compiled.  The "fixincludes" script in the gcc
 distribution will fix your include files up. */
/* CC=gcc -traditional */
CC=cc

/* It is also possible that you will need to add -I/usr/include/sys to the
 CFLAGS section if your system doesn't have fcntl.h in /usr/include (which 
 is where it should be according to Posix).  */

YACC=bison -y -v
/* YACC=yacc */
SHELL=/bin/sh
MAKE=make

/* Set this up with gcc if you have gnu ld and the loader will print out
 line numbers for undefinded refs.  */
/* CC-LD=gcc -static */
CC-LD=${CC}

/* If you are using the GNU C library, uncomment the following line.  */
/* HAVE_VPRINTF_DEFINE = -DHAVE_VPRINTF */

/* -I. for "#include <obstack.h>".  Possibly regex.h also. */
 
/* M_CFLAGS, if defined, has system-dependent CFLAGS.  */
#if !defined(M_CFLAGS)
#define M_CFLAGS
#endif

/* CFLAGS for both GDB and readline.  */
GLOBAL_CFLAGS = -g M_CFLAGS
CFLAGS = -I. ${HAVE_VPRINTF_DEFINE} ${GLOBAL_CFLAGS}
/* None of the things in CFLAGS will do any harm, and on some systems
   (e.g. SunOS4) it is important to use the M_CFLAGS.  */
LDFLAGS = $(CFLAGS)

/*
 define this to be "obstack.o" if you don't have the obstack library installed
 you must at the same time define OBSTACK1 as "obstack.o" 
 so that the dependencies work right.  Similarly with REGEX and "regex.o".
 You must define REGEX and REGEX1 on USG machines.
 If your sysyem is missing alloca(), or, more likely, it's there but
 it doesn't work, define ALLOCA & ALLOCA1 */
OBSTACK = obstack.o
OBSTACK1 = obstack.o

#ifdef M_REGEX
REGEX = M_REGEX
REGEX1 = M_REGEX
#else
REGEX = 
REGEX1 = 
#endif

#ifdef M_ALLOCA
ALLOCA = M_ALLOCA
ALLOCA1 = M_ALLOCA
#else
ALLOCA = 
ALLOCA1 =
#endif

/*
 define this to be "malloc.o" if you want to use the gnu malloc routine
 (useful for debugging memory allocation problems in gdb).  Otherwise, leave
 it blank. */
/* GNU_MALLOC = */
GNU_MALLOC = malloc.o

/* Flags to be used in compiling malloc.o
 Specify range checking for storage allocation. */
/* MALLOC_FLAGS = ${CFLAGS} */
MALLOC_FLAGS = ${CFLAGS} -Drcheck -Dbotch=fatal_dump_core -DMSTATS

/*  Define SYSV if compiling on a system V or HP machine.  */
#ifdef M_SYSV
SYSV_DEFINE = -DSYSV
#else
SYSV_DEFINE =
#endif

/* MUNCH_DEFINE should be -DSYSV if have System V-style nm,
   or null if have BSD-style nm.  */ 
#ifdef M_BSD_NM
MUNCH_DEFINE = 
#else
MUNCH_DEFINE = ${SYSV_DEFINE}
#endif

/* Flags that describe where you can find the termcap library.
 You may need to make other arrangements for USG. */
TERMCAP = -ltermcap

/* M_CLIBS, if defined, has system-dependent libs
 For example, -lPW for System V */
#ifndef M_CLIBS
#define M_CLIBS
#endif
CLIBS = ${ADD_FILES} ${TERMCAP} M_CLIBS

ADD_FILES = ${OBSTACK} ${REGEX} ${ALLOCA} ${GNU_MALLOC}
ADD_DEPS = ${OBSTACK1} ${REGEX1} ${ALLOCA1} ${GNU_MALLOC}

SFILES = blockframe.c breakpoint.c dbxread.c coffread.c command.c core.c \
	 environ.c eval.c expprint.c findvar.c infcmd.c inflow.c infrun.c \
	 kdb-start.c main.c printcmd.c \
	 remote.c source.c stack.c standalone.c stuff.c symmisc.c symtab.c \
	 utils.c valarith.c valops.c valprint.c values.c version.c expread.y \
	 xgdb.c

DEPFILES = umax-dep.c gould-dep.c default-dep.c sun3-dep.c \
	   sparc-dep.c hp9k320-dep.c hp300bsd-dep.c news-dep.c i386-dep.c \
	   symmetry-dep.c convex-dep.c altos-dep.c isi-dep.c

PINSNS = gld-pinsn.c i386-pinsn.c sparc-pinsn.c vax-pinsn.c m68k-pinsn.c \
	 ns32k-pinsn.c convex-pinsn.c

HFILES = command.h defs.h environ.h expression.h frame.h getpagesize.h \
	 inferior.h symseg.h symtab.h value.h wait.h \
	 a.out.encap.h a.out.gnu.h stab.gnu.h 

OPCODES = m68k-opcode.h pn-opcode.h sparc-opcode.h npl-opcode.h vax-opcode.h \
	  ns32k-opcode.h convex-opcode.h

MFILES = m-hp9k320.h m-hp300bsd.h m-i386.h m-i386gas.h \
  m-i386-sv32.h m-i386g-sv32.h m-isi.h m-merlin.h \
  m-altos.h m-news.h m-newsos3.h m-npl.h m-pn.h \
  m-sparc.h m-sun2.h m-sun3.h m-sun2os4.h \
  m-sun3os4.h m-sun4os4.h m-umax.h m-vax.h m-symmetry.h m-convex.h

/* This list of files really shouldn't be in this makefile, but I can't think
   of any good way to get the readline makefile to tell us what files
   to put in our tarfile.  */
READLINE = readline.c history.c funmap.c \
  emacs_keymap.c vi_keymap.c vi_mode.c keymaps.c \
  readline.h history.h keymaps.h chardefs.h \
  inc-readline.texinfo inc-history.texinfo \
  Makefile ChangeLog

REMOTE_EXAMPLES = remote-sa.m68k.shar remote-multi.shar

POSSLIBS = obstack.h obstack.c regex.c regex.h malloc.c alloca.c

TESTS = testbpt.c testfun.c testrec.c testreg.c testregs.c

OTHERS = Makefile.dist createtags munch config.gdb ChangeLog README TAGS \
	 gdb.texinfo .gdbinit COPYING expread.tab.c stab.def \
	 XGDB-README copying.c Projects Convex.notes copying.awk hp-include

TAGFILES = ${SFILES} ${DEPFILES} ${PINSNS} ${HFILES} ${OPCODES} ${MFILES} \
	   ${POSSLIBS} 
TARFILES = ${TAGFILES} ${OTHERS} ${REMOTE_EXAMPLES}

OBS = main.o blockframe.o breakpoint.o findvar.o stack.o source.o \
    values.o eval.o valops.o valarith.o valprint.o printcmd.o \
    symtab.o symmisc.o coffread.o dbxread.o infcmd.o infrun.o remote.o \
    command.o utils.o expread.o expprint.o pinsn.o environ.o version.o \
    copying.o ${READLINEOBS}

TSOBS = core.o inflow.o dep.o

NTSOBS = standalone.o

TSSTART = /lib/crt0.o

NTSSTART = kdb-start.o

RL_LIB = readline/libreadline.a

/* Do some fancy trickery to produce a line like
   -DM_MAKEDEFINE="-DM_SYSV -DM_BSD_NM".
*/
MD=M_MAKEDEFINE

/* Avoid funny things that Sun's make throws in for us. */
/* TARGET_ARCH is supposed to get around it putting in the machine type.
   If the "things" up there really is plural, we'll need to do something
   else as well.  */
/*.c.o:
	${CC} -c ${CFLAGS} $< */
TARGET_ARCH=

gdb : $(OBS) $(TSOBS) ${ADD_DEPS} ${RL_LIB}
	rm -f init.c
	./munch ${MUNCH_DEFINE} $(OBS) $(TSOBS) > init.c
	${CC-LD} $(LDFLAGS) -o gdb init.c $(OBS) $(TSOBS) ${RL_LIB} $(CLIBS)

/* This is useful when debugging GDB, because Unix doesn't let you run GDB
   on itself without copying the executable.  So "make gdb1" will make
   gdb and put a copy in gdb1, and you can run it with "gdb gdb1".  */
gdb1 : gdb
	cp gdb gdb1

Makefile : Makefile.dist
	cp Makefile.dist tmp.c
/* This did not work-- -Usparc became "-Usparc" became "-Usparc.
   Or something like that.  */
/*	$(CC) -E >Makefile tmp.c $(MD) "-DM_MAKEDEFINE=\"$(MD)\"" */
	$(CC) -E >Makefile tmp.c $(MD) "-DM_MAKEDEFINE=$(MD)"
	-rm tmp.c

xgdb : $(OBS) $(TSOBS) xgdb.o ${ADD_DEPS} ${RL_LIB}
	rm -f init.c
	./munch ${MUNCH_DEFINE} $(OBS) $(TSOBS) xgdb.o > init.c
	$(CC-LD) $(LDFLAGS) -o xgdb init.c $(OBS) $(TSOBS) xgdb.o \
	-lXaw -lXmu -lXt -lX11 ${RL_LIB} $(CLIBS)

/* Old (pre R3) xgdb comp.
	$(CC-LD) $(LDFLAGS) -o xgdb init.c $(OBS) $(TSOBS) xgdb.o \
	-lXaw -lXt -lX11 $(CLIBS) */

kdb : $(NTSSTART) $(OBS) $(NTSOBS) ${ADD_DEPS} ${RL_LIB}
	rm -f init.c
	./munch ${MUNCH_DEFINE} $(OBS) $(NTSOBS) > init.c
	$(CC) $(LDFLAGS) -c init.c $(CLIBS) 
	ld -o kdb $(NTSSTART) $(OBS) $(NTSOBS) init.o ${RL_LIB} -lc $(CLIBS)

/* If it can figure out the appropriate order, createtags will make sure
 that the proper m-*, *-dep, *-pinsn, and *-opcode files come first
 in the tags list.  It will attempt to do the same for dbxread.c and 
 coffread.c.  This makes using M-. on machine dependent routines much 
 easier.  */

TAGS: ${TAGFILES}
	createtags ${TAGFILES}
tags: TAGS

gdb.tar: ${TARFILES}
	rm -f gdb.tar
	mkdir dist-gdb
	cd dist-gdb ; for i in ${TARFILES} ; do ln -s ../$$i . ; done
	mkdir dist-gdb/readline
	cd dist-gdb/readline ; for i in ${READLINE} ; do ln -s ../../readline/$$i . ; done
	tar chf gdb.tar dist-gdb
	rm -rf dist-gdb

/* Remove gdb.tar.Z so stupid compress doesn't ask whether we want to
   overwrite it.  compress -f is not what we want, because we do want
   to know if compress would not make it smaller.  */
gdb.tar.Z: gdb.tar
	if [ -f gdb.tar.Z ]; then rm -f gdb.tar.Z; fi
	compress gdb.tar

clean:
	rm -f ${OBS} ${TSOBS} ${NTSOBS} ${OBSTACK} ${REGEX} ${GNU_MALLOC}
	rm -f init.c init.o
	rm -f gdb core gdb.tar gdb.tar.Z make.log
	rm -f gdb[0-9]
	cd readline ; make clean

distclean: clean expread.tab.c TAGS
	rm -f dep.c opcode.h param.h pinsn.c config.status
	rm -f y.output yacc.acts yacc.tmp
	rm -f ${TESTS} Makefile

realclean: clean
	rm -f expread.tab.c TAGS
	rm -f dep.c opcode.h param.h pinsn.c config.status
	rm -f Makefile

xgdb.o : defs.h param.h symtab.h frame.h

/* Make copying.c from COPYING */
copying.c : COPYING copying.awk
	awk -f copying.awk < COPYING > copying.c

expread.tab.c : expread.y
	@echo 'Expect 4 shift/reduce conflict.'
	${YACC} expread.y
	mv y.tab.c expread.tab.c

expread.o : expread.tab.c defs.h param.h symtab.h frame.h expression.h
	$(CC) -c ${CFLAGS} expread.tab.c
	mv expread.tab.o expread.o

readline/libreadline.a : force_update
	cd readline ; ${MAKE} "SYSV=${SYSV_DEFINE}" \
		"DEBUG_FLAGS=${GLOBAL_CFLAGS}" "CC=${CC}" libreadline.a

force_update :

/* Only useful if you are using the gnu malloc routines.  */
malloc.o : malloc.c
	${CC} -c ${MALLOC_FLAGS} malloc.c

/* dep.o depends on config.status in case someone reconfigures gdb out
 from under an already compiled gdb.  */
dep.o : dep.c config.status defs.h param.h frame.h inferior.h obstack.h \
	a.out.encap.h

/* pinsn.o depends on config.status in case someone reconfigures gdb out
 from under an already compiled gdb.  */
pinsn.o : pinsn.c config.status defs.h param.h symtab.h obstack.h symseg.h \
	  frame.h opcode.h

/* The rest of this is a standard dependencies list (hand edited output of
   cpp -M).  It does not include dependencies of .o files on .c files. */
/* All files which depend on config.status also depend on param.h in case
   someone reconfigures gdb out from under an already compiled gdb.  */
blockframe.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h 
breakpoint.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h
coffread.o : defs.h param.h config.status 
command.o : command.h defs.h
core.o : defs.h  param.h config.status a.out.encap.h
dbxread.o : param.h config.status defs.h symtab.h obstack.h symseg.h a.out.encap.h \
	    stab.gnu.h
environ.o : environ.h 
eval.o : defs.h  param.h config.status symtab.h obstack.h symseg.h value.h expression.h 
expprint.o : defs.h symtab.h obstack.h symseg.h param.h config.status expression.h
findvar.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h value.h 
infcmd.o : defs.h  param.h config.status symtab.h obstack.h symseg.h frame.h inferior.h \
	   environ.h value.h
inflow.o : defs.h  param.h config.status frame.h inferior.h
infrun.o : defs.h  param.h config.status symtab.h obstack.h symseg.h frame.h inferior.h \
	   wait.h
kdb-start.o : defs.h param.h config.status 
main.o : defs.h  command.h param.h config.status
malloc.o :  getpagesize.h
obstack.o : obstack.h 
printcmd.o :  defs.h param.h config.status frame.h symtab.h obstack.h symseg.h value.h \
	      expression.h 
regex.o : regex.h 
remote.o : defs.h  param.h config.status frame.h inferior.h wait.h
source.o : defs.h  symtab.h obstack.h symseg.h param.h config.status
stack.o :  defs.h param.h config.status symtab.h obstack.h symseg.h frame.h 
standalone.o : defs.h param.h config.status symtab.h obstack.h symseg.h frame.h \
	       inferior.h wait.h 
symmisc.o : defs.h symtab.h obstack.h symseg.h obstack.h 
symtab.o : defs.h  symtab.h obstack.h symseg.h param.h config.status  obstack.h
utils.o : defs.h  param.h config.status 
valarith.o : defs.h param.h config.status symtab.h obstack.h symseg.h value.h expression.h 
valops.o :  defs.h param.h config.status symtab.h obstack.h symseg.h value.h frame.h \
	    inferior.h
valprint.o :  defs.h param.h config.status symtab.h obstack.h symseg.h value.h 
values.o :  defs.h param.h config.status symtab.h obstack.h symseg.h value.h 

robotussin.h : getpagesize.h   
symtab.h : obstack.h symseg.h 
a.out.encap.h : a.out.gnu.h