binutils-gdb/gdb/Makefile.dist
Jim Kingdon e1ce8aa5ed The list of changes is too long to fit in the cvs log (since it truncates!).
Look at the ChangeLog for Apr 30 and May 1.
1991-05-02 04:28:42 +00:00

498 lines
17 KiB
Makefile
Executable File

##Copyright (C) 1989-1991 Free Software Foundation, Inc.
# This file is part of GDB.
# GDB 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 1, or (at your option)
# any later version.
# GDB 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 GDB; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# Place to install binaries.
bindir=/usr/local/bin
# System V: 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=cc
#CC=gcc -traditional
GCC=gcc
VPATH=$(srcdir)
# 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
# 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}
# define this to be "gmalloc.o" if you want to use the gnu malloc routine
# (useful for debugging memory allocation problems in gdb). To use your
# system malloc, uncomment the following two lines.
#GNU_MALLOC =
#MALLOC_CFLAGS = -DNO_MALLOC_CHECK
GNU_MALLOC = gmalloc.o mcheck.o mtrace.o
MALLOC_CFLAGS =
# Where is the "include" directory? Traditionally ../include or ./include
INCLUDE_DIR = ${srcdir}/../include
INCLUDE_DEP = $$(INCLUDE_DIR)
# Where is the BFD library? Traditionally ../bfd or ./bfd
BFD_DIR = ${srcdir}/../bfd
BFD_DEP = $$(BFD_DIR)
# All the includes used for CFLAGS and for lint.
# -I. for config files.
# -I${srcdir} possibly for regex.h also.
INCLUDE_CFLAGS = -I. -I${srcdir} -I$(INCLUDE_DIR) -I${srcdir}/vx-share
# {X,T}M_CFLAGS, if defined, has system-dependent CFLAGS.
# CFLAGS for both GDB and readline.
GLOBAL_CFLAGS = -g ${TM_CFLAGS} ${XM_CFLAGS}
#PROFILE_CFLAGS = -pg
CFLAGS = ${GLOBAL_CFLAGS} ${PROFILE_CFLAGS} ${MALLOC_CFLAGS} ${INCLUDE_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)
# Where is the "-liberty" library, containing getopt and obstack?
LIBIBERTY = ${srcdir}/../libiberty/libiberty.a
# Flags that describe where you can find the termcap library.
# You may need to make other arrangements for USG.
TERMCAP = -ltermcap
# 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
# {X,T}M_CLIBS, if defined, has system-dependent libs
# For example, -lPW for System V to get alloca().
# FIXME STOPGAP FOR BFD LIBRARY: BFD stuff
CLIBS = ${TERMCAP} $(XM_CLIBS) ${TM_CLIBS} ${BFD_DIR}/libbfd.a \
${LIBIBERTY}
CDEPS = ${XM_CDEPS} ${TM_CDEPS} ${BFD_DIR}/libbfd.a \
${LIBIBERTY}
ADD_FILES = ${REGEX} ${ALLOCA} ${GNU_MALLOC}
ADD_DEPS = ${REGEX1} ${ALLOCA1} ${GNU_MALLOC}
VERSION = 3.94.3
DIST=gdb-$(VERSION)
LINT=/usr/5bin/lint
LINTFLAGS=
# Source files in the main directory.
# Files which are included via a tconfig/* or xconfig/* file
# should *not* be specified here; they're in "ALLDEPFILES".
SFILES_MAINDIR = \
blockframe.c breakpoint.c command.c core.c \
environ.c eval.c expprint.c findvar.c infcmd.c inflow.c infrun.c \
main.c printcmd.c \
remote.c source.c stack.c symmisc.c symtab.c symfile.c \
utils.c valarith.c valops.c valprint.c values.c expread.y \
signame.c cplus-dem.c mem-break.c target.c inftarg.c \
dbxread.c coffread.c \
ieee-float.c
# Source files in subdirectories (which will be handled separately by
# 'make gdb.tar.Z').
# Files which are included via a tconfig/* or xconfig/* file
# should *not* be specified here; they're in "ALLDEPFILES".
SFILES_SUBDIR = \
${srcdir}/vx-share/dbgRpcLib.h \
${srcdir}/vx-share/ptrace.h \
${srcdir}/vx-share/reg.h \
${srcdir}/vx-share/vxTypes.h \
${srcdir}/vx-share/vxWorks.h \
${srcdir}/vx-share/wait.h \
${srcdir}/vx-share/xdr_ld.h \
${srcdir}/vx-share/xdr_ptrace.h \
${srcdir}/vx-share/xdr_rdb.h \
${srcdir}/vx-share/xdr_regs.h \
${srcdir}/nindy-share/Makefile \
${srcdir}/nindy-share/VERSION \
${srcdir}/nindy-share/b.out.h \
${srcdir}/nindy-share/block_io.h \
${srcdir}/nindy-share/coff.h \
${srcdir}/nindy-share/demux.h \
${srcdir}/nindy-share/env.h \
${srcdir}/nindy-share/stop.h \
${srcdir}/nindy-share/ttycntl.h
# All source files that go into linking GDB, except config-specified files.
SFILES = $(SFILES_MAINDIR) $(SFILES_SUBDIR)
# All source files that lint should look at
LINTFILES = $(SFILES) expread.tab.c init.c
# Any additional files specified on these lines should also be added to
# the OTHERS = definition below, so they go in the tar files.
SFILES_STAND = $(SFILES) standalone.c
SFILES_KGDB = $(SFILES) stuff.c kdb-start.c
# Header files that are not named in tconfig/* or xconfig/* go here.
HFILES= breakpoint.h command.h defs.h environ.h \
expression.h frame.h gdbcmd.h gdbcore.h \
getpagesize.h ieee-float.h inferior.h param-no-tm.h param.h \
signals.h signame.h symfile.h symtab.h \
target.h tdesc.h terminal.h tm-68k.h tm-i960.h tm-sunos.h \
value.h
OPCODES = pn-opcode.h np1-opcode.h sparc-opcode.h vax-opcode.h m68k-opcode.h \
ns32k-opcode.h convx-opcode.h pyr-opcode.h mips-opcode.h \
am29k-opcode.h
REMOTE_EXAMPLES = rem-m68k.shar rem-multi.shar
MALLOCSRC = gmalloc.c mcheck.c mtrace.c mtrace.awk \
ansidecl.h stdlib.h gmalloc.h stddef.h
POSSLIBS_MAINDIR = regex.c regex.h alloca.c $(MALLOCSRC)
POSSLIBS = $(POSSLIBS_MAINDIR)
TESTS = testbpt.c testfun.c testrec.c testreg.c testregs.c
# tdesc-lib cannot be named simply tdesc, because if if it were GNU make
# would try to make it from tdesc.c.
# tdesc-lib removed from the list due to Motorola copyrights...gnu@cygnus.com
OTHERS = Makefile.dist depend alldeps.mak Makefile.sdir \
createtags munch config.gdb config.status \
ChangeLog ChangeLog-3.x \
README TODO TAGS WHATS.NEW \
gdb.texinfo gdbint.texinfo gdbrc.tex threecol.tex \
.gdbinit COPYING expread.tab.c stab.def \
copying.c Projects Convex.notes copying.awk \
saber.suppress standalone.c stuff.c kdb-start.c \
hp-include # tests
DEPFILES= ${TDEPFILES} ${XDEPFILES}
SOURCES=$(SFILES) $(ALLDEPFILES)
TAGFILES = $(SOURCES) ${HFILES} ${OPCODES} ${ALLPARAM} ${POSSLIBS}
TAGFILES_MAINDIR = $(SFILES_MAINDIR) $(ALLDEPFILES_MAINDIR) \
${HFILES} ${OPCODES} ${ALLPARAM} ${POSSLIBS_MAINDIR}
TARFILES = ${TAGFILES_MAINDIR} ${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 symfile.o symmisc.o infcmd.o infrun.o remote.o \
command.o utils.o expread.o expprint.o environ.o version.o \
copying.o $(DEPFILES) signame.o cplus-dem.o mem-break.o target.o \
inftarg.o ieee-float.o putenv.o \
dbxread.o coffread.o # mipsread.o
RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES)
TSOBS = core.o inflow.o
NTSOBS = standalone.o
TSSTART = /lib/crt0.o
NTSSTART = kdb-start.o
RL_LIB = readline/libreadline.a
RL_LIB_DEP = $(RL_LIB)
# Prevent Sun make from putting in the machine type. Setting
# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
.c.o:
${CC} -c ${CFLAGS} $<
all: gdb
install: gdb
cp gdb $(bindir)/gdb.new
mv $(bindir)/gdb.new $(bindir)/gdb
$(M_INSTALL)
init.c: $(srcdir)/munch $(MUNCH_DEFINE) $(OBS) $(TSOBS)
$(srcdir)/munch ${MUNCH_DEFINE} $(OBS) $(TSOBS) > init.c
gdb: $(OBS) $(TSOBS) ${ADD_DEPS} ${RL_LIB_DEP} ${CDEPS} init.o
${CC-LD} $(LDFLAGS) -o gdb init.o $(OBS) $(TSOBS) $(ADD_FILES) \
${RL_LIB} $(CLIBS)
saber_gdb: $(SFILES) $(DEPFILES) copying.c version.c
#setopt load_flags $(CFLAGS) -I$(BFD_DIR)
#load ./init.c $(SFILES)
#unload ${srcdir}/expread.y
#load ${srcdir}/expread.tab.c readline/libreadline.a
#load copying.c version.c
#load `echo " "$(DEPFILES) | sed -e 's/\.o/.c/g' -e 's, , ../,g'`
#load ${BFD_DIR}/libbfd.a -ltermcap
##void mcheck(a) void (*a)(); { }
# This is useful when debugging GDB, because some Unix's don'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".
# Removing gdb1 before the copy is the right thing if gdb1 is open
# in another process.
gdb1: gdb
rm -f gdb1
cp gdb gdb1
# This is a remote stub which runs under unix and starts up an
# inferior process. This is at least useful for debugging GDB's
# remote support.
rapp: $(RAPP_OBS)
rm -f rapp_init.c
${srcdir}/munch ${RAPP_OBS} > rapp_init.c
${CC-LD} $(LDFLAGS) -o $@ rapp_init.c $(RAPP_OBS)
Makefiles= Makefile.sdir $(M_MAKEFILE) \
${srcdir}/alldeps.mak ${srcdir}/Makefile.dist
MAKE_MAKEFILE= echo "M_MAKEFILE=$(M_MAKEFILE)" | \
cat - ${Makefiles} ${srcdir}/depend >Makefile
Makefile: $(Makefiles)
$(MAKE_MAKEFILE)
alldeps.mak: ${srcdir}/tconfig ${srcdir}/xconfig
rm -f alldeps.mak alldeps.tmp allparam.tmp allconfig.tmp
for i in `ls -d ${srcdir}/tconfig/*[0-9A-Za-z] \
${srcdir}/xconfig/*[0-9A-Za-z] | grep -v RCS` ; do \
echo $$i >>allconfig.tmp; \
awk <$$i ' \
$$1 == "TDEPFILES=" || $$1 == "XDEPFILES=" { \
for (i = 2; i <= NF; i++) \
print $$i >> "alldeps.tmp" ; \
} \
$$1 == "TM_FILE=" || $$1 == "XM_FILE=" { \
print $$2 >> "allparam.tmp" }' ; \
done
sort <alldeps.tmp | uniq | \
sed -e 's/arm-convert.o/arm-convert.s/' \
-e 's!^Onindy.o!nindy-share/Onindy.c!' \
-e 's!^nindy.o!nindy-share/nindy.c!' \
-e 's!ttybreak.o!nindy-share/ttybreak.c!' \
-e 's!ttyflush.o!nindy-share/ttyflush.c!' \
-e 's!xdr_ld.o!vx-share/xdr_ld.c!' \
-e 's!xdr_ptrace.o!vx-share/xdr_ptrace.c!' \
-e 's!xdr_rdb.o!vx-share/xdr_rdb.c!' \
-e 's!xdr_regs.o!vx-share/xdr_regs.c!' \
-e 's/\.o/.c/' \
>alldeps2.tmp
echo 'ALLDEPFILES = $$(ALLDEPFILES_MAINDIR) $$(ALLDEPFILES_SUBDIR)' \
>>alldeps.mak;
grep -v / alldeps2.tmp | \
awk 'BEGIN {printf "ALLDEPFILES_MAINDIR="} \
NR == 0 {printf $$0;} \
NR != 0 {printf "\\\n" $$0} \
END {printf "\n\n"}' >>alldeps.mak;
grep / alldeps2.tmp | \
awk 'BEGIN {printf "ALLDEPFILES_SUBDIR="} \
NR == 0 {printf $$0;} \
NR != 0 {printf "\\\n" $$0} \
END {printf "\n\n"}' >>alldeps.mak;
sort <allparam.tmp | uniq | awk 'BEGIN {printf "ALLPARAM="} \
NR == 0 {printf $$0;} \
NR != 0 {printf "\\\n" $$0} \
END {printf "\n\n"}' >>alldeps.mak;
sort <allconfig.tmp | uniq | awk 'BEGIN {printf "ALLCONFIG="} \
NR == 0 {printf $$0;} \
NR != 0 {printf "\\\n" $$0} \
END {printf "\n\n"}' >>alldeps.mak;
rm -f alldeps.tmp alldeps2.tmp allparam.tmp allconfig.tmp
# The sed script makes everything which depends on {x,t}m.h depend on
# config.status as well, in case someone reconfigures gdb out from
# under an already compiled gdb.
depend: $(SOURCES) Makefile.dist
@echo Ignore errors about non-existent system-supplied include files
@echo for systems other than the one you are using.
@echo "If xm.h and tm.h don't exist, the error messages saying so"
@echo can safely be ignored.
@echo Also ignore parse errors in valops.c, and any errors in
@echo arm-convert.s.
-$(GCC) -MM $(CFLAGS) -I$(BFD_DIR) \
`ls $(SOURCES) | sort -u` >depend.tmp
<depend.tmp sed -e 's/ [xt]m.h/& config.status/g' \
-e 's; vx-share/; $${srcdir}/vx-share/;g' \
-e 's; nindy-share/; $${srcdir}/nindy-share/;g' \
-e 's; $(INCLUDE_DIR)/; $(INCLUDE_DEP)/;g' \
-e 's; [a-z0-9./]*bfd/; $(BFD_DEP)/;g' \
-e 's; \./; $${srcdir}/;g' \
>depend
$(MAKE_MAKEFILE)
rm depend.tmp
config.status:
@echo "You must configure gdb. Look at the README file for details."
@false
# These are not generated by "make depend" because they only are there
# for some machines.
# But these rules don't do what we want; we want to hack the foo.o: tm.h
# dependency to do the right thing.
tm-isi.h tm-sun3.h tm-news.h tm-hp300bsd.h tm-altos.h : tm-68k.h
tm-hp300hpux.h tm-sun2.h tm-3b1.h : tm-68k.h
xm-news1000.h : xm-news.h
xm-i386-sv32.h : xm-i386.h
tm-i386gas.h: tm-i386.h
xm-sun4os4.h : xm-sparc.h
tm-sun4os4.h : tm-sparc.h
kdb : $(NTSSTART) $(OBS) $(NTSOBS) ${ADD_DEPS} ${RL_LIB_DEP}
rm -f init.c
$(srcdir)/munch ${MUNCH_DEFINE} $(OBS) $(NTSOBS) > init.c
$(CC) $(LDFLAGS) -c init.c $(CLIBS)
ld -o kdb $(NTSSTART) $(OBS) $(NTSOBS) init.o $(ADD_FILES) \
${RL_LIB} -lc $(CLIBS)
# Put the proper machine-specific files first.
# createtags will edit the .o in DEPFILES into .c
TAGS: ${TAGFILES}
$(srcdir)/createtags $(TM_FILE) ${XM_FILE} $(DEPFILES) ${TAGFILES}
tags: TAGS
# FIXME: Get alldeps.mak up to date, config.gdb none, THEN make gdb.tar.Z!
gdb.tar.Z: ${TARFILES}
rm -f gdb.tar; rm -rf $(DIST)
cd readline ; make readline.tar
mkdir $(DIST)
cd $(DIST) ; for i in ${TARFILES} ; do ln -s ../$$i . ; done
mkdir $(DIST)/readline
cd $(DIST)/readline ; tar xf ../../readline/readline.tar
mkdir $(DIST)/xconfig ${DIST}/tconfig
cd $(DIST)/tconfig ; \
for i in $(ALLCONFIG) ; do ln -s ../../$$i ../$$i ; done
mkdir $(DIST)/vx-share $(DIST)/nindy-share
cd $(DIST)/tconfig ; \
for i in $(SFILES_SUBDIR) $(ALLDEPFILES_SUBDIR); \
do ln -s ../../$$i ../$$i ; done
tar chf - $(DIST) | compress >gdb.tar.Z
rm -rf $(DIST)
clean:
rm -f ${OBS} ${TSOBS} ${NTSOBS} ${ADD_FILES}
rm -f init.c init.o version.c
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 tm.h xm.h config.status
rm -f y.output yacc.acts yacc.tmp
rm -f ${TESTS} Makefile
realclean: clean
rm -f expread.tab.c TAGS
rm -f tm.h xm.h config.status
rm -f Makefile
gdb.dvi : gdb.texinfo
tex gdb.texinfo
texindex gdb.??
tex gdb.texinfo
# Make copying.c from COPYING
copying.c : COPYING copying.awk
awk -f copying.awk < COPYING > copying.c
version.c : Makefile.dist
echo 'char *version = "$(VERSION)";' >version.c
${srcdir}/expread.tab.c : $(srcdir)/expread.y
@echo 'Expect 4 shift/reduce conflict.'
${YACC} $(srcdir)/expread.y
mv y.tab.c ${srcdir}/expread.tab.c
expread.o : ${srcdir}/expread.tab.c defs.h param.h symtab.h \
frame.h expression.h
$(CC) -c ${CFLAGS} `echo ${srcdir}/expread.tab.c | sed 's,^\./,,'`
mv expread.tab.o expread.o
# dbxread, coffread, mipsread have dependencies on BFD header files.
dbxread.o: ${srcdir}/dbxread.c
${CC} -c ${CFLAGS} -I$(BFD_DIR) ${srcdir}/dbxread.c
coffread.o: ${srcdir}/coffread.c
${CC} -c ${CFLAGS} -I$(BFD_DIR) ${srcdir}/coffread.c
mipsread.o: ${srcdir}/mipsread.c
${CC} -c ${CFLAGS} -I$(BFD_DIR) ${srcdir}/mipsread.c
# Drag in the files that are in another directory.
xdr_ld.o: ${srcdir}/vx-share/xdr_ld.c
${CC} -c ${CFLAGS} ${srcdir}/vx-share/xdr_ld.c
xdr_ptrace.o: ${srcdir}/vx-share/xdr_ptrace.c
${CC} -c ${CFLAGS} ${srcdir}/vx-share/xdr_ptrace.c
xdr_rdb.o: ${srcdir}/vx-share/xdr_rdb.c
${CC} -c ${CFLAGS} ${srcdir}/vx-share/xdr_rdb.c
xdr_regs.o: ${srcdir}/vx-share/xdr_regs.c
${CC} -c ${CFLAGS} ${srcdir}/vx-share/xdr_regs.c
nindy.o: ${srcdir}/nindy-share/nindy.c
${CC} -c ${CFLAGS} ${srcdir}/nindy-share/nindy.c
Onindy.o: ${srcdir}/nindy-share/Onindy.c
${CC} -c ${CFLAGS} ${srcdir}/nindy-share/Onindy.c
ttybreak.o: ${srcdir}/nindy-share/ttybreak.c
${CC} -c ${CFLAGS} ${srcdir}/nindy-share/ttybreak.c
ttyflush.o: ${srcdir}/nindy-share/ttyflush.c
${CC} -c ${CFLAGS} ${srcdir}/nindy-share/ttyflush.c
tdesc-lib/libdc.o : force_update
cd tdesc-lib ; ${MAKE} "SYSV_DEFINE=${SYSV_DEFINE}"
# In LOCAL_INCLUDES, -I${srcdir} is right if srcdir is an absolute path,
# and -I../${srcdir} is right if it is relative (e.g. ".."), so search both.
readline/libreadline.a : force_update
cd readline ; ${MAKE} "SYSV=${SYSV_DEFINE}"\
"VPATH=${srcdir}/readline:../${srcdir}/readline"\
"LOCAL_INCLUDES=-I../ -I${srcdir}/ -I../${srcdir}/"\
"DEBUG_FLAGS=${GLOBAL_CFLAGS}" "CC=${CC}" libreadline.a
lint: $(LINTFILES)
$(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES)
gdb.cxref: $(SFILES)
cxref -I. $(SFILES) >gdb.cxref
force_update :
# When used with GDB, the demangler should never look for leading
# underscores because GDB strips them off during symbol read-in. Thus
# -Dnounderscore.
cplus-dem.o : cplus-dem.c
${CC} -c ${CFLAGS} -Dnounderscore \
`echo ${srcdir}/cplus-dem.c | sed 's,^\./,,'`