public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: Simon Marchi <simark@simark.ca>, Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] gdb/doc: use silent-rules.mk in the Makefile
Date: Wed, 17 Apr 2024 22:00:24 +0100	[thread overview]
Message-ID: <87jzkvhfh3.fsf@redhat.com> (raw)
In-Reply-To: <a66298e5-30c8-4197-b2aa-8d3c91a0547c@simark.ca>

Simon Marchi <simark@simark.ca> writes:

> On 2024-04-16 04:47, Andrew Burgess wrote:
>> Andrew Burgess <aburgess@redhat.com> writes:
>> 
>>> Simon Marchi <simark@simark.ca> writes:
>>>
>>>> On 4/15/24 9:55 AM, Andrew Burgess wrote:
>>>>> Eli Zaretskii <eliz@gnu.org> writes:
>>>>>> So my preference would be for having the above emit something like the
>>>>>> below instead
>>>>>>
>>>>>>   TEXI2POD gdb.pod
>>>>>>   POD2MAN1 gdb.1
>>>>>
>>>>> That one's harder.  The target information comes from make's $@
>>>>> variable, so it's easy enough to do:
>>>>>
>>>>>   TEXI2POD gdb.1
>>>>>   POD2MAN  gdb.1
>>>>>
>>>>> which isn't exactly what you asked for.
>>>>
>>>> Could you split the rule in two?  One rule generating gdb.pod and one
>>>> rule generating gdb.1.
>>>>
>>>> I personally think the original output from Andrew's patch is fine.  In
>>>> the silent mode, all I need to know is that make is currently working on
>>>> getting gdb.1 generated.  The intermediary gdb.pod file is an
>>>> implementation detail of the rule.  If I want to see it, then I'll use
>>>> `make V=1`.
>>>
>>> I agree.
>>>
>>>> But if it makes everyone happy, I don't mind if we split the rule in
>>>> two.  Smaller and simpler rules are easier to understand.
>>>
>>> I didn't really want to split the rule as the .pod really is an
>>> intermediate step:
>>>
>>> 	$(SILENCE) touch $@
>>> 	-$(ECHO_TEXI2POD) $(TEXI2POD) $(MANCONF) -Dgdb < $(srcdir)/gdb.texinfo > gdb.pod
>>> 	-$(ECHO_TEXI2MAN) ($(POD2MAN1) gdb.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
>>> 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
>>> 	$(SILENCE) rm -f gdb.pod
>>>
>>> We create the .pod and then consume it, before finally deleting it.
>>>
>>> If the rule was split then we'd end up creating the .pod in one rule
>>> before deleting it in another, which didn't seem great.  But if you're
>>> happy with that change then I can split the rule.
>
> We could maybe just not remove the intermediary pod files (but remove
> them in the clean target, of course)?  They probably don't take that
> much space in the build.
>
> I think your version with the split rules is fine, it fits well the
> make model.
>
>> 
>> Below is a reworked patch which splits the man page and .pod creation.
>> 
>> Let me know what you think.
>> 
>> Thanks,
>> Andrew
>> 
>> ---
>> 
>> commit 1b0c9eb959212f175092da0e200811ba47f2000f
>> Author: Andrew Burgess <aburgess@redhat.com>
>> Date:   Fri Apr 12 17:47:20 2024 +0100
>> 
>>     gdb/doc: use silent-rules.mk in the Makefile
>>     
>>     Make use of silent-rules.mk when building the GDB docs.
>>     
>>     During review it was requested that there be more specific rules than
>>     just reusing the general 'GEN' rule everywhere in the doc/ directory,
>>     so I've added:
>>     
>>       ECHO_DVIPS =    @echo "  DVIPS    $@";
>>       ECHO_TEX =      @echo "  TEX      $@";
>>       ECHO_PDFTEX =   @echo "  PDFTEX   $@";
>>       ECHO_TEXI2DVI = @echo "  TEXI2DVI $@";
>>       ECHO_MAKEHTML = @echo "  MAKEHTML $@";
>>       ECHO_TEXI2POD = @echo "  TEXI2POD $@";
>>       ECHO_TEXI2MAN = @echo "  TEXI2MAN $@";
>>       ECHO_MAKEINFO = @echo "  MAKEINFO $@";
>>     
>>     Then I've made use of these new silent rules and added lots of uses of
>>     SILENT to reduce additional clutter.
>>     
>>     As the man page generation is done in two phases, first the creation
>>     of a .pod file, then the creation of the final man page file, I've
>>     restructured the man page rules.  Previously we had one rule for each
>>     of the 5 man pages.  I now have one general rule that will generate
>>     all of the 5 .pod files, then I have two rules that convert the .pod
>>     files into the final man pages.
>>     
>>     I needed two rules for the man page generation as some man pages match
>>     %.1 and some match %.5.  I could combine these by using the GNU Make
>>     .SECONDARYEXPANSION extension, but I'm not sure if we are OK to depend
>>     on GNU only Make features, and having the two separate rules seems
>>     clear enough.
>
> We do require GNU make already:
>
>   https://sourceware.org/gdb/current/onlinedocs/gdb.html/Requirements.html#Requirements
>
> But I have to admit that a using things like .SECONDARYEXPANSION is
> above my make skill level :).

Good to know.  I looked again at .SECONDARYEXPANSION and in the end I
figured it was probably less clear than what I've got now, so I'm not
going to use it I think.

>
>>     
>>     I've also added a new SILENT_QUIET_FLAG to silent-rules.mk, this is
>>     like SILENT_FLAG, but is set to '-q' when in silent mode, this can be
>>     used with the 'dvips' and 'texi2dvi' commands, both of which use '-q'
>>     to mean: only report errors.
>
> Maybe name this one SILENT_Q_FLAG?  SILENT_QUIET_FLAG would be for
> "--quiet" or "-quiet".

Done.

>
>>     As with the rest of the GDB makefiles, I've only converted the
>>     "generation" rules to use silent-rules.mk, the install / uninstall
>>     rules are left unchanged.
>>     
>>     There are still a few "generation" targets that produce output, there
>>     seems to be no flag to silence the 'tex' and 'pdftex' commands which
>>     some recipes use, I've not worried about these for now, e.g. the
>>     refcard.dvi and refcard.pdf targets still produce some output.
>
> Not a big deal IMO.  If we really want to, we could pipe stdout to
> /dev/null I suppose.

I thought about this, and figured this was likely a bad idea.  A well
written application should send general chat to stdout and
warnings/errors to stderr, but I don't think we should assume that's the
case.  Sending stdout to /dev/null runs the risk that the build could
fail with no useful message being printed.

>
>>     Luckily, when doing a 'make all' in the gdb/ directory, we only build
>>     the info docs by default, and those rules are now nice and silent, so
>>     a complete GDB build is now looking nice and quiet by default.
>> 
>> diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
>> index 8007f6373d4..ed8f7be5227 100644
>> --- a/gdb/doc/Makefile.in
>> +++ b/gdb/doc/Makefile.in
>> @@ -33,6 +33,8 @@ man5dir = $(mandir)/man5
>>  
>>  transform = @program_transform_name@
>>  
>> +include $(srcdir)/../silent-rules.mk
>> +
>>  SHELL = @SHELL@
>>  
>>  LN_S = @LN_S@
>> @@ -238,7 +240,7 @@ Doxyfile-gdbserver:	$(srcdir)/Doxyfile-gdbserver.in
>>  
>>  all-doc: info dvi ps pdf
>>  diststuff: info man
>> -	rm -f gdb-cfg.texi
>> +	$(SILENCE) rm -f gdb-cfg.texi

I've dropped this 'rm' in the latest update.  Looking at the rule to
generate gdb-cfg.texi, I'm not sure why we'd want to delete this file
here.  It's already deleted as part of the 'clean' rule.

>
> This makes this rule completely silent, that's maybe too much?  In the
> clean target, we don't silence the `rm`s, so I don't think we should
> here either.
>
>> -gdb-add-index.1: $(GDB_DOC_FILES)
>> -	touch $@
>> -	-$(TEXI2POD) $(MANCONF) -Dgdb-add-index < $(srcdir)/gdb.texinfo > gdb-add-index.pod
>> -	-($(POD2MAN1) gdb-add-index.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
>> +$(MAN1S) : %.1 : %.pod $(GDB_DOC_FILES)
>> +	$(SILENCE) touch $@
>> +	$(ECHO_TEXI2MAN) ($(POD2MAN1) $*.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
>>  		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
>> -	rm -f gdb-add-index.pod
>> +	$(SILENCE) rm -f $*.pod
>
> So as I said above, I would just not remove the pod file.

Done.

>
> A question about the pre-existing code: do you know why the `touch @` is
> needed?  It just seems dangerous to me.

I agree this seems weird.  I've dropped this in this new update.

So in the version below:

  + .pod file removal is now done as part of the 'mostlyclean' target,

  + the 'diststuff' target doesn't remove a temporary file any more,
  that is done in the 'mostlyclean' target,

  + No longer start by touching the target file when building the man
  pages.

Thoughts?

Thanks,
Andrew


---

commit 13baf7f097593b9d877036f55fb3d9c2d443ea38
Author: Andrew Burgess <aburgess@redhat.com>
Date:   Fri Apr 12 17:47:20 2024 +0100

    gdb/doc: use silent-rules.mk in the Makefile
    
    Make use of silent-rules.mk when building the GDB docs.
    
    During review it was requested that there be more specific rules than
    just reusing the general 'GEN' rule everywhere in the doc/ directory,
    so I've added:
    
      ECHO_DVIPS =    @echo "  DVIPS    $@";
      ECHO_TEX =      @echo "  TEX      $@";
      ECHO_PDFTEX =   @echo "  PDFTEX   $@";
      ECHO_TEXI2DVI = @echo "  TEXI2DVI $@";
      ECHO_MAKEHTML = @echo "  MAKEHTML $@";
      ECHO_TEXI2POD = @echo "  TEXI2POD $@";
      ECHO_TEXI2MAN = @echo "  TEXI2MAN $@";
      ECHO_MAKEINFO = @echo "  MAKEINFO $@";
    
    Then I've made use of these new silent rules and added lots of uses of
    SILENT to reduce additional clutter.
    
    As the man page generation is done in two phases, first the creation
    of a .pod file, then the creation of the final man page file, I've
    restructured the man page rules.  Previously we had one rule for each
    of the 5 man pages.  I now have one general rule that will generate
    all of the 5 .pod files, then I have two rules that convert the .pod
    files into the final man pages.
    
    I needed two rules for the man page generation as some man pages match
    %.1 and some match %.5.  I could combine these by using the GNU Make
    .SECONDARYEXPANSION extension, but I think having two rules like this
    is probably clearer, and the duplication is minimal.
    
    Cleaning up the temporary .pod files is now moved into the
    'mostlyclean' target rather than being done as soon as the man page is
    created.
    
    I've added a new SILENT_Q_FLAG to silent-rules.mk, this is like
    SILENT_FLAG, but is set to '-q' when in silent mode, this can be used
    with the 'dvips' and 'texi2dvi' commands, both of which use '-q' to
    mean: only report errors.
    
    As with the rest of the GDB makefiles, I've only converted the
    "generation" rules to use silent-rules.mk, the install / uninstall
    rules are left unchanged.
    
    When looking at the 'diststuff' target, which generates the info and
    man pages, I noticed the recipe for this rule just deleted a temporary
    file.  As that temporary file is already cleaned up as part of the
    'clean' rule I've removed the deletion from the 'diststuff' target.
    
    There are still a few "generation" targets that produce output, there
    seems to be no flag to silence the 'tex' and 'pdftex' commands which
    some recipes use, I've not worried about these for now, e.g. the
    refcard.dvi and refcard.pdf targets still produce some output.
    
    Luckily, when doing a 'make all' in the gdb/ directory, we only build
    the info docs by default, and those rules are now nice and silent, so
    a complete GDB build is now looking nice and quiet by default.
    
    While working on this patch I noticed that 'make -j all-doc' doesn't
    work (reliably), this is a preexisting bug in the way that dvi/pdf
    targets are generated.  For example gdb.dvi and gdb.pdf both use the
    texi2dvi tool, which relies on temporary files to hold state.  If both
    these rules run in parallel then one (or both) of the recipes will
    fail.
    
    Luckily, the default docs target (all), which is what gets run when we
    do 'make all' in the gdb/ directory, doesn't build the dvi and pdf
    targets, so we're OK in that case.
    
    I've not tried to fix this problem in this commit as it already
    existed, and I don't want to do too much in one commit.  I mention it
    only because I ran into this issue while testing this commit.

diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
index 8007f6373d4..28d829fdfee 100644
--- a/gdb/doc/Makefile.in
+++ b/gdb/doc/Makefile.in
@@ -33,6 +33,8 @@ man5dir = $(mandir)/man5
 
 transform = @program_transform_name@
 
+include $(srcdir)/../silent-rules.mk
+
 SHELL = @SHELL@
 
 LN_S = @LN_S@
@@ -186,6 +188,11 @@ MAN1S = gdb.1 gdbserver.1 gcore.1 gdb-add-index.1
 MAN5S = gdbinit.5
 MANS = $(MAN1S) $(MAN5S)
 
+# The pod files that are generated as a side effect of creating the
+# man pages.
+POD_FILE_TMPS = $(patsubst %.1,%.pod,$MAN1S) \
+		$(patsubst %.5,%.pod,$MAN1S)
+
 HAVE_NATIVE_GCORE_TARGET = @HAVE_NATIVE_GCORE_TARGET@
 HAVE_NATIVE_GCORE_HOST = @HAVE_NATIVE_GCORE_HOST@
 
@@ -238,7 +245,6 @@ Doxyfile-gdbserver:	$(srcdir)/Doxyfile-gdbserver.in
 
 all-doc: info dvi ps pdf
 diststuff: info man
-	rm -f gdb-cfg.texi
 
 install-info: $(INFO_DEPS)
 	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(infodir)
@@ -406,55 +412,56 @@ de-stage3: force
 
 # GDB QUICK REFERENCE (dvi output)
 refcard.dvi : refcard.tex $(REFEDITS)
-	echo > tmp.sed
-	for f in x $(REFEDITS) ; do \
+	$(SILENCE) echo > tmp.sed
+	$(SILENCE) 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) $(TEX) sedref.tex
-	mv sedref.dvi refcard.dvi
-	rm -f sedref.log sedref.tex tmp.sed
+	$(SILENCE) sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex
+	$(ECHO_TEX) $(SET_TEXINPUTS) $(TEX) sedref.tex
+	$(SILENCE) mv sedref.dvi refcard.dvi
+	$(SILENCE) rm -f sedref.log sedref.tex tmp.sed
 
 refcard.ps : refcard.dvi
-	$(DVIPS) -t landscape -o $@ $?
+	$(ECHO_DVIPS) $(DVIPS) $(SILENT_Q_FLAG) -t landscape -o $@ $?
 
 refcard.pdf : refcard.tex $(REFEDITS)
-	echo > tmp.sed
-	for f in x $(REFEDITS) ; do \
+	$(SILENCE) echo > tmp.sed
+	$(SILENCE) 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
+	$(SILENCE) sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex
+	$(ECHO_PDFTEX) $(SET_TEXINPUTS) $(PDFTEX) sedref.tex
+	$(SILENCE) mv sedref.pdf refcard.pdf
+	$(SILENCE) rm -f sedref.log sedref.tex tmp.sed
 
 # File to record current GDB version number.
 GDBvn.texi : version.subst
-	echo "@set GDBVN `sed q version.subst`" > ./GDBvn.new
-	if [ -n "$(PKGVERSION)" ]; then \
+	$(ECHO_GEN)
+	$(SILENCE) echo "@set GDBVN `sed q version.subst`" > ./GDBvn.new
+	$(SILENCE) 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 \
+	$(SILENCE) echo "@set BUGURL $(BUGURL_TEXI)" >> ./GDBvn.new
+	$(SILENCE) 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 \
+	$(SILENCE) if test -z "$(READLINE_TEXI_INCFLAG)"; then \
 	  echo "@set SYSTEM_READLINE" >> ./GDBvn.new; \
 	fi
-	if [ -n "$(SYSTEM_GDBINIT)" ]; then \
+	$(SILENCE) if [ -n "$(SYSTEM_GDBINIT)" ]; then \
 	  escaped_system_gdbinit=`echo $(SYSTEM_GDBINIT) | sed 's/@/@@/g'`; \
 	  echo "@set SYSTEM_GDBINIT $$escaped_system_gdbinit" >> ./GDBvn.new; \
 	fi
-	if [ -n "$(SYSTEM_GDBINIT_DIR)" ]; then \
+	$(SILENCE) if [ -n "$(SYSTEM_GDBINIT_DIR)" ]; then \
 	  escaped_system_gdbinit_dir=`echo $(SYSTEM_GDBINIT_DIR) | sed 's/@/@@/g'`; \
 	  echo "@set SYSTEM_GDBINIT_DIR $$escaped_system_gdbinit_dir" >> ./GDBvn.new; \
 	fi
-	mv GDBvn.new GDBvn.texi
+	$(SILENCE) mv GDBvn.new GDBvn.texi
 
 version.subst: $(gdbdir)/version.in $(gdbdir)/../bfd/version.h
-	date=`sed -n -e 's/^.* BFD_VERSION_DATE \(.*\)$$/\1/p' $(gdbdir)/../bfd/version.h`; \
+	$(ECHO_GEN) date=`sed -n -e 's/^.* BFD_VERSION_DATE \(.*\)$$/\1/p' $(gdbdir)/../bfd/version.h`; \
 	sed -e "s/DATE/$$date/" < $(gdbdir)/version.in > version.subst
 
 # Updated atomically
@@ -465,7 +472,7 @@ version.subst: $(gdbdir)/version.in $(gdbdir)/../bfd/version.h
 # not one for their binary config---which may not be specifically
 # defined anyways).
 gdb-cfg.texi: ${srcdir}/${DOC_CONFIG}-cfg.texi
-	(test "$(LN_S)" = "ln -s" && \
+	$(ECHO_GEN) (test "$(LN_S)" = "ln -s" && \
 	  ln -s ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi) || \
 	ln ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi || \
 	cp ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi
@@ -487,29 +494,30 @@ GDB_TEX_TMPS = gdb.aux gdb.cp* gdb.fn* gdb.ky* gdb.log gdb.pg* gdb.toc \
 
 # GDB MANUAL: TeX dvi file
 gdb.dvi: ${GDB_DOC_FILES}
-	if [ ! -f ./GDBvn.texi ]; then \
+	$(SILENCE) if [ ! -f ./GDBvn.texi ]; then \
 		(test "$(LN_S)" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \
 		ln $(srcdir)/GDBvn.texi . || \
 		cp $(srcdir)/GDBvn.texi . ; else true; fi
-	rm -f $(GDB_TEX_TMPS)
-	$(TEXI2DVI) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
-		$(srcdir)/gdb.texinfo
+	$(SILENCE) rm -f $(GDB_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) $(READLINE_TEXI_INCFLAG) \
+		-I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo
 
 gdb.ps: gdb.dvi
-	$(DVIPS) -o $@ $?
+	$(ECHO_DVIPS) $(DVIPS) $(SILENT_Q_FLAG) -o $@ $?
 
 gdb.pdf: ${GDB_DOC_FILES}
-	if [ ! -f ./GDBvn.texi ]; then \
+	$(SILENCE) if [ ! -f ./GDBvn.texi ]; then \
 		(test "$(LN_S)" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \
 		ln $(srcdir)/GDBvn.texi . || \
 		cp $(srcdir)/GDBvn.texi . ; else true; fi
-	rm -f $(GDB_TEX_TMPS)
-	$(TEXI2DVI) --pdf $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
+	$(SILENCE) rm -f $(GDB_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) --pdf \
+		$(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
 		$(srcdir)/gdb.texinfo
 
 # GDB MANUAL: info file
 gdb.info: ${GDB_DOC_FILES}
-	$(MAKEINFO_CMD) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
+	$(ECHO_MAKEINFO) $(MAKEINFO_CMD) $(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
 		-o gdb.info $(srcdir)/gdb.texinfo
 
 # GDB MANUAL: roff translations
@@ -527,16 +535,16 @@ gdb.info: ${GDB_DOC_FILES}
 # it out for gdb manual's include files---but only if not configured
 # in main sourcedir.
 links2roff: $(GDB_DOC_SOURCE_INCLUDES)
-	if [ ! -f gdb.texinfo ]; then \
+	$(ECHO_GEN) if [ ! -f gdb.texinfo ]; then \
 		(test "$(LN_S)" = "ln -s" && ln -s $(GDB_DOC_SOURCE_INCLUDES) .) || \
 		ln $(GDB_DOC_SOURCE_INCLUDES)    . || \
 		cp $(GDB_DOC_SOURCE_INCLUDES)    . ; \
 	fi
-	touch links2roff
+	$(SILENCE) touch links2roff
 
 # gdb manual suitable for [gtn]roff -me
 gdb.me: $(GDB_DOC_FILES) links2roff
-	sed -e '/\\input texinfo/d' \
+	$(ECHO_GEN) sed -e '/\\input texinfo/d' \
 		-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
 		-e '/^@ifinfo/,/^@end ifinfo/d' \
 		-e '/^@c /d' \
@@ -551,7 +559,7 @@ gdb.me: $(GDB_DOC_FILES) links2roff
 
 # gdb manual suitable for [gtn]roff -ms
 gdb.ms: $(GDB_DOC_FILES) links2roff
-	sed -e '/\\input texinfo/d' \
+	$(ECHO_GEN) sed -e '/\\input texinfo/d' \
 		-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
 		-e '/^@ifinfo/,/^@end ifinfo/d' \
 		-e '/^@c /d' \
@@ -568,7 +576,7 @@ gdb.ms: $(GDB_DOC_FILES) links2roff
 # '@noindent's removed due to texi2roff-2 mm bug; if yours is newer, 
 #   try leaving them in
 gdb.mm: $(GDB_DOC_FILES) links2roff
-	sed -e '/\\input texinfo/d' \
+	$(ECHO_GEN) sed -e '/\\input texinfo/d' \
 		-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
 		-e '/^@ifinfo/,/^@end ifinfo/d' \
 		-e '/^@c /d' \
@@ -585,18 +593,18 @@ gdb.mm: $(GDB_DOC_FILES) links2roff
 # GDB MANUAL: HTML file
 
 gdb/index.html: ${GDB_DOC_FILES}
-	$(MAKEHTML) $(MAKEHTMLFLAGS) \
+	$(ECHO_GEN) $(MAKEHTML) $(MAKEHTMLFLAGS) \
 		-o gdb \
 		$(READLINE_TEXI_INCFLAG) -I ${GDBMI_DIR} -I $(srcdir) \
 		$(srcdir)/gdb.texinfo
 
 stabs.info: $(STABS_DOC_FILES)
-	$(MAKEINFO_CMD) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo
+	$(ECHO_MAKEINFO) $(MAKEINFO_CMD) -I $(srcdir) -o stabs.info $(srcdir)/stabs.texinfo
 
 # STABS DOCUMENTATION: HTML file
 
 stabs/index.html: $(STABS_DOC_FILES)
-	$(MAKEHTML) $(MAKEHTMLFLAGS) \
+	$(ECHO_GEN) $(MAKEHTML) $(MAKEHTMLFLAGS) \
 		-o stabs \
 		-I $(srcdir) \
 		$(srcdir)/stabs.texinfo
@@ -609,15 +617,17 @@ STABS_TEX_TMPS = stabs.aux stabs.cp* stabs.fn* stabs.ky* \
 
 # STABS DOCUMENTATION: TeX dvi file
 stabs.dvi : $(STABS_DOC_FILES)
-	rm -f $(STABS_TEX_TMPS)
-	$(TEXI2DVI) -I $(srcdir) $(srcdir)/stabs.texinfo
+	$(SILENCE) rm -f $(STABS_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) -I $(srcdir) \
+		$(srcdir)/stabs.texinfo
 
 stabs.ps: stabs.dvi
-	$(DVIPS) -o $@ $?
+	$(ECHO_DVIPS) $(DVIPS) $(SILENT_Q_FLAG) -o $@ $?
 
 stabs.pdf: $(STABS_DOC_FILES)
-	rm -f $(STABS_TEX_TMPS)
-	$(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/stabs.texinfo
+	$(SILENCE) rm -f $(STABS_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) --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
@@ -627,65 +637,45 @@ ANNOTATE_TEX_TMPS = annotate.aux annotate.cp* annotate.fn* annotate.ky* \
 
 # ANNOTATE DOCUMENTATION: TeX dvi file
 annotate.dvi : $(ANNOTATE_DOC_FILES)
-	rm -f $(ANNOTATE_TEX_TMPS)
-	$(TEXI2DVI) -I $(srcdir) $(srcdir)/annotate.texinfo
+	$(SILENCE) rm -f $(ANNOTATE_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) -I $(srcdir) \
+		$(srcdir)/annotate.texinfo
 
 annotate.ps: annotate.dvi
-	$(DVIPS) -o $@ $?
+	$(ECHO_DVIPS) $(DVIPS) $(SILENT_Q_FLAG) -o $@ $?
 
 annotate.pdf: $(ANNOTATE_DOC_FILES)
-	rm -f $(ANNOTATE_TEX_TMPS)
-	$(TEXI2DVI) --pdf -I $(srcdir) $(srcdir)/annotate.texinfo
+	$(SILENCE) rm -f $(ANNOTATE_TEX_TMPS)
+	$(ECHO_TEXI2DVI) $(TEXI2DVI) $(SILENT_Q_FLAG) --pdf -I $(srcdir) \
+		$(srcdir)/annotate.texinfo
 
 annotate.info: $(ANNOTATE_DOC_FILES)
-	$(MAKEINFO_CMD) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo
+	$(ECHO_MAKEINFO) $(MAKEINFO_CMD) -I $(srcdir) -o annotate.info $(srcdir)/annotate.texinfo
 
 annotate/index.html: $(ANNOTATE_DOC_FILES)
-	$(MAKEHTML) $(MAKEHTMLFLAGS) \
+	$(ECHO_MAKEHTML) $(MAKEHTML) $(MAKEHTMLFLAGS) \
 		-o annotate \
 		-I $(srcdir) \
 		$(srcdir)/annotate.texinfo
 
 # Man pages
-gdb.1: $(GDB_DOC_FILES)
-	touch $@
-	-$(TEXI2POD) $(MANCONF) -Dgdb < $(srcdir)/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 < $(srcdir)/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
-
-gcore.1: $(GDB_DOC_FILES)
-	touch $@
-	-$(TEXI2POD) $(MANCONF) -Dgcore < $(srcdir)/gdb.texinfo > gcore.pod
-	-($(POD2MAN1) gcore.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
-		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
-	rm -f gcore.pod
+%.pod : gdb.texinfo $(GDB_DOC_FILES)
+	$(ECHO_TEXI2POD) $(TEXI2POD) $(MANCONF) -D$* < $(srcdir)/gdb.texinfo > $@
 
-gdb-add-index.1: $(GDB_DOC_FILES)
-	touch $@
-	-$(TEXI2POD) $(MANCONF) -Dgdb-add-index < $(srcdir)/gdb.texinfo > gdb-add-index.pod
-	-($(POD2MAN1) gdb-add-index.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+$(MAN1S) : %.1 : %.pod $(GDB_DOC_FILES)
+	$(ECHO_TEXI2MAN) ($(POD2MAN1) $*.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
-	rm -f gdb-add-index.pod
+	$(SILENCE) rm -f $*.pod
 
-gdbinit.5: $(GDB_DOC_FILES)
-	touch $@
-	-$(TEXI2POD) $(MANCONF) -Dgdbinit < $(srcdir)/gdb.texinfo > gdbinit.pod
-	-($(POD2MAN5) gdbinit.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+$(MAN5S) : %.5 : %.pod $(GDB_DOC_FILES)
+	$(ECHO_TEXI2MAN) ($(POD2MAN1) $*.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
-	rm -f gdbinit.pod
+	$(SILENCE) rm -f $*.pod
 
 force:
 
 Makefile: Makefile.in $(host_makefile_frag) ../config.status
-	cd .. && $(SHELL) ./config.status doc/Makefile
+	$(ECHO_GEN) cd .. && $(SHELL) ./config.status $(SILENT_FLAG) doc/Makefile
 
 
 # The "least clean" level of cleaning.  Get rid of files which are
@@ -696,7 +686,8 @@ mostlyclean:
 	rm -f $(GDB_TEX_TMPS)
 	rm -f $(STABS_TEX_TMPS)
 	rm -f $(ANNOTATE_TEX_TMPS)
-	rm -f sedref.dvi sedref.tex tmp.sed
+	rm -f sedref.dvi sedref.tex tmp.sed sedref.log
+	rm -f $(POD_FILE_TMPS)
 
 clean: mostlyclean
 	rm -f gdb-cfg.texi
diff --git a/gdb/silent-rules.mk b/gdb/silent-rules.mk
index 43dc2bf3aca..d0983a514ff 100644
--- a/gdb/silent-rules.mk
+++ b/gdb/silent-rules.mk
@@ -17,9 +17,23 @@ ECHO_YACC =   @echo "  YACC   $@";
 ECHO_LEX  =   @echo "  LEX    $@";
 ECHO_AR =     @echo "  AR     $@";
 ECHO_RANLIB = @echo "  RANLIB $@";
+ECHO_DVIPS =  @echo "  DVIPS    $@";
+ECHO_TEX =    @echo "  TEX      $@";
+ECHO_PDFTEX = @echo "  PDFTEX   $@";
+ECHO_TEXI2DVI = \
+              @echo "  TEXI2DVI $@";
+ECHO_MAKEHTML = \
+              @echo "  MAKEHTML $@";
+ECHO_TEXI2POD = \
+              @echo "  TEXI2POD $@";
+ECHO_TEXI2MAN = \
+              @echo "  TEXI2MAN $@";
+ECHO_MAKEINFO = \
+              @echo "  MAKEINFO $@";
 SILENCE = @
 # Silence libtool.
 SILENT_FLAG = --silent
+SILENT_Q_FLAG = -q
 # Used in shell snippets instead of 'echo'.
 SILENT_ECHO = true
 else


  reply	other threads:[~2024-04-17 21:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-12 17:00 Andrew Burgess
2024-04-12 18:31 ` Eli Zaretskii
2024-04-12 22:32   ` Andrew Burgess
2024-04-13  7:02     ` Eli Zaretskii
2024-04-15 13:55       ` Andrew Burgess
2024-04-15 14:18         ` Simon Marchi
2024-04-16  7:48           ` Andrew Burgess
2024-04-16  8:47             ` Andrew Burgess
2024-04-16 15:01               ` Simon Marchi
2024-04-17 21:00                 ` Andrew Burgess [this message]
2024-05-08 17:46                   ` Andrew Burgess
2024-05-26 18:20                     ` Joel Brobecker
2024-05-26 22:02                       ` Andrew Burgess
2024-05-26 22:58                         ` Andrew Burgess
2024-05-28 15:25                           ` Tom Tromey
2024-04-15 14:37         ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87jzkvhfh3.fsf@redhat.com \
    --to=aburgess@redhat.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=simark@simark.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).