gdb: Add missing install-dvi Makefile target

Message ID 20240404215910.57477-1-christophe.lyon@linaro.org
State New
Headers
Series gdb: Add missing install-dvi Makefile target |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed

Commit Message

Christophe Lyon April 4, 2024, 9:59 p.m. UTC
  For some reason install-dvi is missing although other targets of the
same family are present. This looks like an oversight.

This enables calling 'make install-dvi' from the top-level build
directory.
---
 gdb/Makefile.in                |  2 +-
 gdb/data-directory/Makefile.in |  2 +-
 gdb/doc/Makefile.in            | 19 +++++++++++++++++--
 gdb/testsuite/Makefile.in      |  1 +
 4 files changed, 20 insertions(+), 4 deletions(-)
  

Comments

Thiago Jung Bauermann April 6, 2024, 4:13 a.m. UTC | #1
Hello Christophe,

Thank you for the patch! Just a couple of minor comments:

Christophe Lyon <christophe.lyon@linaro.org> writes:

> For some reason install-dvi is missing although other targets of the
> same family are present. This looks like an oversight.
>
> This enables calling 'make install-dvi' from the top-level build
> directory.

I can confirm that 'make install-dvi' works from inside $BUILD/gdb, but
from $BUILD I get this error:

Doing install-dvi in libdecnumber
make[2]: Entering directory '/home/thiago.bauermann/.cache/builds/gdb-native/libdecnumber'
make[2]: *** No rule to make target 'install-dvi'.  Stop.
make[2]: Leaving directory '/home/thiago.bauermann/.cache/builds/gdb-native/libdecnumber'
make[1]: *** [Makefile:7855: install-dvi-libdecnumber] Error 1
make[1]: Leaving directory '/home/thiago.bauermann/.cache/builds/gdb-native'
make: *** [Makefile:1669: do-install-dvi] Error 2

With 'make -k' I see that gdbserver also lacks an install-dvi target.

> @@ -233,7 +236,7 @@ Doxyfile-gdb-xref:	$(srcdir)/Doxyfile-gdb-xref.in
>  Doxyfile-gdbserver:	$(srcdir)/Doxyfile-gdbserver.in
>  	$(doxyedit) $(srcdir)/Doxyfile-gdbserver.in >Doxyfile-gdbserver
>
> -all-doc: info dvi ps # pdf
> +all-doc: info dvi ps pdf
>  diststuff: info man
>  	rm -f gdb-cfg.texi
>

This seems unrelated.

--
Thiago
  
Christophe Lyon April 7, 2024, 7:08 p.m. UTC | #2
On Sat, 6 Apr 2024 at 06:13, Thiago Jung Bauermann
<thiago.bauermann@linaro.org> wrote:
>
>
> Hello Christophe,
>
> Thank you for the patch! Just a couple of minor comments:
>
> Christophe Lyon <christophe.lyon@linaro.org> writes:
>
> > For some reason install-dvi is missing although other targets of the
> > same family are present. This looks like an oversight.
> >
> > This enables calling 'make install-dvi' from the top-level build
> > directory.
>
> I can confirm that 'make install-dvi' works from inside $BUILD/gdb, but
> from $BUILD I get this error:
>
> Doing install-dvi in libdecnumber
> make[2]: Entering directory '/home/thiago.bauermann/.cache/builds/gdb-native/libdecnumber'
> make[2]: *** No rule to make target 'install-dvi'.  Stop.
> make[2]: Leaving directory '/home/thiago.bauermann/.cache/builds/gdb-native/libdecnumber'
> make[1]: *** [Makefile:7855: install-dvi-libdecnumber] Error 1
> make[1]: Leaving directory '/home/thiago.bauermann/.cache/builds/gdb-native'
> make: *** [Makefile:1669: do-install-dvi] Error 2
>
Hmmm so the master copy of libdecnumber is in GCC IIUC, which does
contain the install-dvi target.
Looks like gdb needs to sync with gcc's current version of
libdecnumber? (which should be a different patch, of course)

> With 'make -k' I see that gdbserver also lacks an install-dvi target.
Ack, sorry for missing this (our build script does not try to build
any doc from gdbserver.
In fact, the man page for gdbserver is part of gdb/doc, but there's no
other doc for gdbserver there (no info/dvi/pdf/texinfo). Is that
expected?
IIUC gdbserver.1 is extracted from the main gdb.texinfo, but there's
no such rule to generate gdbserver.{info/dvi/pdf/html}, an oversight?

>
> > @@ -233,7 +236,7 @@ Doxyfile-gdb-xref:        $(srcdir)/Doxyfile-gdb-xref.in
> >  Doxyfile-gdbserver:  $(srcdir)/Doxyfile-gdbserver.in
> >       $(doxyedit) $(srcdir)/Doxyfile-gdbserver.in >Doxyfile-gdbserver
> >
> > -all-doc: info dvi ps # pdf
> > +all-doc: info dvi ps pdf
> >  diststuff: info man
> >       rm -f gdb-cfg.texi
>
> This seems unrelated.
>
Indeed, that doesn't match the subject/commit message I proposed, I
can put this into a separate patch if you want, or document this
change in the commit message: it looks like an other oversight?

Thanks,

Christophe

> --
> Thiago
  

Patch

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 40732cb2227..d001359539a 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -2035,7 +2035,7 @@  check-headers:
 	done
 .PHONY: check-headers
 
-info install-info clean-info dvi pdf install-pdf html install-html: force
+info install-info clean-info dvi install-dvi pdf install-pdf html install-html: force
 	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
 
 # Traditionally "install" depends on "all".  But it may be useful
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index 2a40be4ade0..2db8706eba6 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -422,7 +422,7 @@  maintainer-clean realclean distclean: clean
 .PHONY: install-info install-pdf install-html clean-info
 check installcheck:
 info dvi pdf html:
-install-info install-pdf install-html:
+install-info install-dvi install-pdf install-html:
 clean-info:
 
 # GNU Make has an annoying habit of putting *all* the Makefile variables
diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
index 04f9dbd27f0..8007f6373d4 100644
--- a/gdb/doc/Makefile.in
+++ b/gdb/doc/Makefile.in
@@ -24,6 +24,7 @@  prefix = @prefix@
 infodir = @infodir@
 datarootdir = @datarootdir@
 docdir = @docdir@
+dvidir = @dvidir@
 pdfdir = @pdfdir@
 htmldir = @htmldir@
 mandir = @mandir@
@@ -87,6 +88,8 @@  SET_TEXINPUTS = \
 # Files which should be generated via 'info' and installed by 'install-info'
 INFO_DEPS = gdb.info stabs.info annotate.info
 
+# Files which should be generated via 'dvi' and installed by 'install-dvi'
+DVIFILES = gdb.dvi stabs.dvi refcard.dvi annotate.dvi
 # Files which should be generated via 'pdf' and installed by 'install-pdf'
 PDFFILES = gdb.pdf stabs.pdf refcard.pdf annotate.pdf
 # Files which should be generated via 'html' and installed by 'install-html'
@@ -191,7 +194,7 @@  HAVE_NATIVE_GCORE_HOST = @HAVE_NATIVE_GCORE_HOST@
 all: info
 
 info: $(INFO_DEPS)
-dvi: gdb.dvi stabs.dvi refcard.dvi annotate.dvi
+dvi: $(DVIFILES)
 ps: gdb.ps stabs.ps refcard.ps annotate.ps
 html: $(HTMLFILES)
 pdf: $(PDFFILES)
@@ -233,7 +236,7 @@  Doxyfile-gdb-xref:	$(srcdir)/Doxyfile-gdb-xref.in
 Doxyfile-gdbserver:	$(srcdir)/Doxyfile-gdbserver.in
 	$(doxyedit) $(srcdir)/Doxyfile-gdbserver.in >Doxyfile-gdbserver
 
-all-doc: info dvi ps # pdf
+all-doc: info dvi ps pdf
 diststuff: info man
 	rm -f gdb-cfg.texi
 
@@ -293,6 +296,18 @@  install-html: $(HTMLFILES)
 	  fi; \
 	done
 
+dvi__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+
+install-dvi: $(DVIFILES)
+	@$(NORMAL_INSTALL)
+	test -z "$(dvidir)" || $(mkinstalldirs) "$(DESTDIR)$(dvidir)"
+	@list='$(DVIFILES)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(dvi__strip_dir) \
+	  echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
+	  $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
+	done
+
 pdf__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 
 install-pdf: $(PDFFILES)
diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in
index f6603daf7fd..f799f16c2bb 100644
--- a/gdb/testsuite/Makefile.in
+++ b/gdb/testsuite/Makefile.in
@@ -105,6 +105,7 @@  INFODIRS=doc
 info:
 install-info:
 dvi:
+install-dvi:
 pdf:
 install-pdf:
 html: