-##Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003
-##Free Software Foundation, Inc.
+##Copyright (C) 1991-2013 Free Software Foundation, Inc.
# Makefile for GDB documentation.
# This file is part of GDB.
# This program 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 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
-#
+#
# This program 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 this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
srcdir = @srcdir@
VPATH = @srcdir@
prefix = @prefix@
infodir = @infodir@
-htmldir = $(prefix)/html
+datarootdir = @datarootdir@
+docdir = @docdir@
+pdfdir = @pdfdir@
+htmldir = @htmldir@
+mandir = @mandir@
+man1dir = $(mandir)/man1
+man5dir = $(mandir)/man5
SHELL = @SHELL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
+SYSTEM_GDBINIT = @SYSTEM_GDBINIT@
+
+mkinstalldirs = $(SHELL) $(srcdir)/../../mkinstalldirs
+
# main GDB source directory
gdbdir = $(srcdir)/..
TEXIDIR=${gdbdir}/../texinfo
# where to find makeinfo, preferably one designed for texinfo-2
-MAKEINFO=makeinfo
-
-# Note that texinfo 4.0's makeinfo --html can only generate a
-# single file, which would be too large, so continue to use
-# texi2html. -sts 2000-03-28
+MAKEINFO = @MAKEINFO@
+MAKEINFOFLAGS = @MAKEINFOFLAGS@
+MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@
+MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS)
-MAKEHTML = texi2html
-MAKEHTMLFLAGS = -menu -split_chapter
+MAKEHTML = $(MAKEINFO_CMD) --html
+MAKEHTMLFLAGS =
# where to find texi2roff, ditto
TEXI2ROFF=texi2roff
# where to find texi2dvi, ditto
TEXI2DVI=texi2dvi
+# Package version and bug-reporting URL.
+PKGVERSION = @PKGVERSION@
+BUGURL_TEXI = @REPORT_BUGS_TEXI@
+
# Where is the source dir for the READLINE library doc?
# Traditionally readline is in .. or .
READLINE_DIR = ${gdbdir}/../readline/doc
+READLINE_TEXI_INCFLAG = @READLINE_TEXI_INCFLAG@
# The GDB/MI docs come from a sibling directory ../mi
GDBMI_DIR = ${gdbdir}/mi
# Files which should be generated via 'info' and installed by 'install-info'
INFO_DEPS = gdb.info gdbint.info stabs.info annotate.info
+# Files which should be generated via 'pdf' and installed by 'install-pdf'
+PDFFILES = gdb.pdf gdbint.pdf stabs.pdf refcard.pdf annotate.pdf
+# Files which should be generated via 'html' and installed by 'install-html'
+HTMLFILES = gdb/index.html gdbint/index.html stabs/index.html annotate/index.html
+HTMLFILES_INSTALL = gdb gdbint stabs annotate
+
# There may be alternate predefined collections of switches to configure
# the GDB manual. Normally this is not done in synch with the software
# config system, since this choice tends to be independent; most people
# Don Knuth's TeX formatter
TEX = tex
+PDFTEX = pdftex
# Program to generate Postscript files from DVI files.
DVIPS = dvips
# Main GDB manual
+# Note that this unconditionally includes the readline texi files,
+# even when --with-system-readline is used. This is harmless because
+# these are only used as dependencies.
GDB_DOC_SOURCE_INCLUDES = \
$(srcdir)/fdl.texi \
$(srcdir)/gpl.texi \
$(srcdir)/agentexpr.texi \
$(READLINE_DIR)/rluser.texi \
- $(READLINE_DIR)/inc-hist.texinfo
+ $(READLINE_DIR)/hsuser.texi
GDB_DOC_BUILD_INCLUDES = \
gdb-cfg.texi \
GDBvn.texi
ANNOTATE_DOC_SOURCE_INCLUDES = \
$(srcdir)/fdl.texi
ANNOTATE_DOC_BUILD_INCLUDES = \
- gdb-cfg.texi
+ gdb-cfg.texi \
+ GDBvn.texi
ANNOTATE_DOC_FILES = \
$(srcdir)/annotate.texinfo \
$(ANNOTATE_DOC_SOURCE_INCLUDES) \
$(ANNOTATE_DOC_BUILD_INCLUDES)
+# Options to extract the man page from gdb.texinfo
+MANCONF = -Dman
+
+TEXI2POD = perl $(srcdir)/../../etc/texi2pod.pl \
+ $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS)
+
+POD2MAN1 = pod2man --center="GNU Development Tools" \
+ --release="gdb-`sed q $(srcdir)/../version.in`" --section=1
+POD2MAN5 = pod2man --center="GNU Development Tools" \
+ --release="gdb-`sed q $(srcdir)/../version.in`" --section=5
+
+# List of man pages generated from gdb.texi
+MAN1S = gdb.1 gdbserver.1
+MAN5S = gdbinit.5
+MANS = $(MAN1S) $(MAN5S)
+
#### Host, target, and site specific Makefile fragments come in here.
###
info: $(INFO_DEPS)
dvi: gdb.dvi gdbint.dvi stabs.dvi refcard.dvi annotate.dvi
ps: gdb.ps gdbint.ps stabs.ps refcard.ps annotate.ps
-html: gdb_toc.html gdbint_toc.html stabs_toc.html annotate_toc.html
-pdf: gdb.pdf gdbint.pdf stabs.pdf annotate.pdf
+html: $(HTMLFILES)
+pdf: $(PDFFILES)
+man: $(MANS)
all-doc: info dvi ps # pdf
-diststuff: info
+diststuff: info man
+ rm -f gdb-cfg.texi GDBvn.texi
install-info: $(INFO_DEPS)
$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(infodir)
(cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
done
-install-html: html
- for i in *.html ; do \
- $(INSTALL_DATA) $$i $(DESTDIR)$(htmldir)/$$i ; \
+html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+
+install-html: $(HTMLFILES)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLFILES_INSTALL)'; for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
+ f=$(html__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
+ else \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+ fi; \
+ done
+
+pdf__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+
+install-pdf: $(PDFFILES)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFFILES)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(pdf__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+install-man: install-man1 install-man5
+
+install-man1: $(MAN1S)
+ test -z "$(man1dir)" || $(mkinstalldirs) "$(DESTDIR)$(man1dir)"
+ @list='$(MAN1S)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=`echo $$p | sed -e 's|^.*/||'`; \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(man1dir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(man1dir)/$$f"; \
done
-STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi *.pdf
+install-man5: $(MAN5S)
+ test -z "$(man5dir)" || $(mkinstalldirs) "$(DESTDIR)$(man5dir)"
+ @list='$(MAN5S)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=`echo $$p | sed -e 's|^.*/||'`; \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(man5dir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(man5dir)/$$f"; \
+ done
+
+uninstall-man: uninstall-man1 uninstall-man5
+
+uninstall-man1:
+ @test -n "$(man1dir)" || exit 0; \
+ files=`{ l2='$(MAN1S)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+
+uninstall-man5:
+ @test -n "$(man5dir)" || exit 0; \
+ files=`{ l2='$(MAN5S)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.5[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
+
+STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi *.pdf *.1 *.5
# Copy the object files from a particular stage into a subdirectory.
stage1: force
refcard.ps : refcard.dvi
$(DVIPS) -t landscape -o $@ $?
+refcard.pdf : refcard.tex $(REFEDITS)
+ echo > tmp.sed
+ for f in x $(REFEDITS) ; do \
+ test x$$f = xx && continue ; \
+ cat $(srcdir)/$$f >>tmp.sed ; \
+ done
+ sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex
+ $(SET_TEXINPUTS) $(PDFTEX) sedref.tex
+ mv sedref.pdf refcard.pdf
+ rm -f sedref.log sedref.tex tmp.sed
+
# File to record current GDB version number (copied from main dir version.in)
GDBvn.texi : ${gdbdir}/version.in
echo "@set GDBVN `sed q $(srcdir)/../version.in`" > ./GDBvn.new
+ if [ -n "$(PKGVERSION)" ]; then \
+ echo "@set VERSION_PACKAGE $(PKGVERSION)" >> ./GDBvn.new; \
+ fi
+ echo "@set BUGURL $(BUGURL_TEXI)" >> ./GDBvn.new
+ if [ "$(BUGURL_TEXI)" = "@uref{http://www.gnu.org/software/gdb/bugs/}" ]; then \
+ echo "@set BUGURL_DEFAULT" >> ./GDBvn.new; \
+ fi
+ if test -z "$(READLINE_TEXI_INCFLAG)"; then \
+ echo "@set SYSTEM_READLINE" >> ./GDBvn.new; \
+ fi
+ if [ -n "$(SYSTEM_GDBINIT)" ]; then \
+ echo "@set SYSTEM_GDBINIT $(SYSTEM_GDBINIT)" >> ./GDBvn.new; \
+ fi
mv GDBvn.new GDBvn.texi
# Updated atomically
ln $(srcdir)/GDBvn.texi . || \
cp $(srcdir)/GDBvn.texi . ; else true; fi
rm -f $(GDB_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) $(srcdir)/gdb.texinfo
+ $(TEXI2DVI) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
+ $(srcdir)/gdb.texinfo
gdb.ps: gdb.dvi
$(DVIPS) -o $@ $?
ln $(srcdir)/GDBvn.texi . || \
cp $(srcdir)/GDBvn.texi . ; else true; fi
rm -f $(GDB_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) --pdf $(srcdir)/gdb.texinfo
+ $(TEXI2DVI) --pdf $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
+ $(srcdir)/gdb.texinfo
# GDB MANUAL: info file
gdb.info: ${GDB_DOC_FILES}
- $(MAKEINFO) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) \
+ $(MAKEINFO_CMD) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
-o gdb.info $(srcdir)/gdb.texinfo
# GDB MANUAL: roff translations
# GDB MANUAL: HTML file
-gdb_toc.html: ${GDB_DOC_FILES}
- $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo
+gdb/index.html: ${GDB_DOC_FILES}
+ $(MAKEHTML) $(MAKEHTMLFLAGS) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo
# Clean these up before each run. Avoids a catch 22 with not being
# able to re-generate these files (to fix a corruption) because these
# GDB INTERNALS MANUAL: TeX dvi file
gdbint.dvi: $(GDBINT_DOC_FILES)
rm -f $(GDBINT_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) $(srcdir)/gdbint.texinfo
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/gdbint.texinfo
gdbint.ps : gdbint.dvi
$(DVIPS) -o $@ $?
gdbint.pdf: $(GDBINT_DOC_FILES)
rm -f $(GDBINT_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) --pdf $(srcdir)/gdbint.texinfo
+ $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/gdbint.texinfo
# GDB INTERNALS MANUAL: info file
gdbint.info: $(GDBINT_DOC_FILES)
- $(MAKEINFO) -I $(srcdir) -o gdbint.info $(srcdir)/gdbint.texinfo
+ $(MAKEINFO_CMD) -I $(srcdir) -o gdbint.info $(srcdir)/gdbint.texinfo
# GDB INTERNALS MANUAL: HTML file
-gdbint_toc.html: $(GDBINT_DOC_FILES)
- $(MAKEHTML) $(MAKEHTMLFLAGS) $(srcdir)/gdbint.texinfo
+gdbint/index.html: $(GDBINT_DOC_FILES)
+ $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/gdbint.texinfo
stabs.info: $(STABS_DOC_FILES)
- $(MAKEINFO) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo
+ $(MAKEINFO_CMD) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo
# STABS DOCUMENTATION: HTML file
-stabs_toc.html: $(STABS_DOC_FILES)
- $(MAKEHTML) $(MAKEHTMLFLAGS) $(srcdir)/stabs.texinfo
+stabs/index.html: $(STABS_DOC_FILES)
+ $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/stabs.texinfo
# Clean these up before each run. Avoids a catch 22 with not being
# able to re-generate these files (to fix a corruption) because these
# STABS DOCUMENTATION: TeX dvi file
stabs.dvi : $(STABS_DOC_FILES)
rm -f $(STABS_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) $(srcdir)/stabs.texinfo
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/stabs.texinfo
stabs.ps: stabs.dvi
$(DVIPS) -o $@ $?
stabs.pdf: $(STABS_DOC_FILES)
rm -f $(STABS_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) --pdf $(srcdir)/stabs.texinfo
+ $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/stabs.texinfo
# Clean these up before each run. Avoids a catch 22 with not being
# able to re-generate these files (to fix a corruption) because these
# ANNOTATE DOCUMENTATION: TeX dvi file
annotate.dvi : $(ANNOTATE_DOC_FILES)
rm -f $(ANNOTATE_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) $(srcdir)/annotate.texinfo
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/annotate.texinfo
annotate.ps: annotate.dvi
$(DVIPS) -o $@ $?
annotate.pdf: $(ANNOTATE_DOC_FILES)
rm -f $(ANNOTATE_TEX_TMPS)
- $(SET_TEXINPUTS) $(TEXI2DVI) --pdf $(srcdir)/annotate.texinfo
+ $(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/annotate.texinfo
annotate.info: $(ANNOTATE_DOC_FILES)
- $(MAKEINFO) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo
-
-annotate_toc.html: $(ANNOTATE_DOC_FILES)
- $(MAKEHTML) $(MAKEHTMLFLAGS) $(srcdir)/annotate.texinfo
+ $(MAKEINFO_CMD) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo
+
+annotate/index.html: $(ANNOTATE_DOC_FILES)
+ $(MAKEHTML) $(MAKEHTMLFLAGS) -I $(srcdir) $(srcdir)/annotate.texinfo
+
+# Man pages
+gdb.1: $(GDB_DOC_FILES)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Dgdb < gdb.texinfo > gdb.pod
+ -($(POD2MAN1) gdb.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f gdb.pod
+
+gdbserver.1: $(GDB_DOC_FILES)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Dgdbserver < gdb.texinfo > gdbserver.pod
+ -($(POD2MAN1) gdbserver.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f gdbserver.pod
+
+gdbinit.5: $(GDB_DOC_FILES)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Dgdbinit < gdb.texinfo > gdbinit.pod
+ -($(POD2MAN5) gdbinit.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f gdbinit.pod
force:
-Makefile: Makefile.in $(host_makefile_frag) $(target_makefile_frag) config.status
- $(SHELL) ./config.status
+Makefile: Makefile.in $(host_makefile_frag) ../config.status
+ cd .. && $(SHELL) ./config.status doc/Makefile
# The "least clean" level of cleaning. Get rid of files which are
rm -f sedref.dvi sedref.tex tmp.sed
clean: mostlyclean
- rm -f gdb-cfg.texi
+ rm -f gdb-cfg.texi GDBvn.texi
distclean: clean
- rm -f Makefile config.status config.log
+ rm -f Makefile
# GDBvn.texi, the dvi files, the info files, and the postscript files,
# are all part of the distribution, so it should not be removed by
# "clean" or "distclean". Use maintainer-clean to remove them.
maintainer-clean realclean: distclean
- rm -f GDBvn.texi *.info* *.dvi *.ps *.html *.pdf
+ rm -f GDBvn.texi *.info* *.dvi *.ps *.html *.pdf $(MANS)
-install: install-info
+install: install-info install-man
-uninstall: uninstall-info
+uninstall: uninstall-info uninstall-man