Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: gdb-patches@sourceware.org
Subject: [PATCH] New "make check-headers" rule. (was: Re: [RFA/commit 1/3] language.h: Add "symtab.h" #include)
Date: Wed, 13 Nov 2013 19:34:00 -0000	[thread overview]
Message-ID: <5283CD04.3080501@redhat.com> (raw)
In-Reply-To: <1384151855-12926-1-git-send-email-brobecker@adacore.com>

On 11/11/2013 06:37 AM, Joel Brobecker wrote:
> Hello,
> 
> I noticed this when I tried to #include "language.h" from mi-parse.c,
> when I got compilation errors from missing type declarations:
> 
> In addition to the fact that language.h depends on a number of struct
> types declared in symtab.h, language.h also depends on an enumerated
> type (domain_enum). So language.h should #include "symtab.h".
> 
> gdb/ChangeLog:
> 
>         * language.h: Add "symtab.h" #include.
> 
> Tested on x86_64-linux.  I think this patch should go in on its own.

Agreed.

I wonder what people think of something like the patch below.

$ make check-headers CHECK_HEADERS="language.h"
Checking headers.
for i in language.h ; do \
        gcc -g3 -O0   -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber  -I../../src/gdb/gnulib/import -Ibuild-gnulib/import   -DTUI=1  -I/usr/include/python2.7 -I/usr/include/python2.7 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type -Wold-style-declaration -Wold-style-definition -Wformat-nonliteral -Werror -c -o check-headers -Wno-error -fno-strict-aliasing -DNDEBUG -fwrapv -include defs.h \
                ../../src/gdb/$i -o /dev/null ; \
done
../../src/gdb/language.h:200:17: warning: ‘struct symbol’ declared inside parameter list [enabled by default]
../../src/gdb/language.h:200:17: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
../../src/gdb/language.h:242:13: warning: ‘struct symbol’ declared inside parameter list [enabled by default]
../../src/gdb/language.h:263:14: warning: type defaults to ‘int’ in declaration of ‘domain_enum’ [-Wimplicit-int]
../../src/gdb/language.h:263:8: warning: ‘struct block’ declared inside parameter list [enabled by default]
../../src/gdb/language.h:294:5: error: expected specifier-qualifier-list before ‘VEC’
make: *** [check-headers] Error 1

After your patch, the above comes out clean.

-------------
New "make check-headers" rule.

Tries to compile each header in isolation, thus ensuring headers are
self-contained.

Defaults to checking all $HFILES_NO_SRCDIR headers.

Do:

  make check-headers CHECK_HEADERS="header.h list.h"

to check specific headers.

gdb/
2013-11-13  Pedro Alves  <palves@redhat.com>

        * Makefile.in (COMPILE.pre): Rename to ...
        (NODEPS_COMPILE.pre): ... this.
        (COMPILE.post): Rename to ...
        (NODEPS_COMPILE.post): ... this.
        (COMPILE): Rename to ...
        (NODEPS_COMPILE): ... this.
        (COMPILE.pre, COMPILE.post, COMPILE): Reimplement as wrappers
        around the NODEPS variants.
        (CHECK_HEADERS): New.
        (check-headers:): New rule.
---

 gdb/Makefile.in |   32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 975edbf..d39b5b4 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -86,11 +86,15 @@ DEPMODE = @CCDEPMODE@
 DEPDIR = @DEPDIR@
 depcomp = $(SHELL) $(srcdir)/../depcomp
 
+NODEPS_COMPILE.pre = $(CC)
+NODEPS_COMPILE.post = -c -o $@
+NODEPS_COMPILE = $(NODEPS_COMPILE.pre) $(INTERNAL_CFLAGS) $(NODEPS_COMPILE.post)
+
 # Note that these are overridden by GNU make-specific code below if
 # GNU make is used.  The overrides implement dependency tracking.
-COMPILE.pre = $(CC)
-COMPILE.post = -c -o $@
-COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
+COMPILE.pre = $(NODEPS_COMPILE.pre)
+COMPILE.post = $(NODEPS_COMPILE.post)
+COMPILE = $(NODEPS_COMPILE)
 POSTCOMPILE = @true
 
 # Directory containing source files.
@@ -1050,6 +1054,28 @@ check//%: force
 	    "$$target"; \
 	else true; fi
 
+# The set of headers checked by 'check-headers' by default.
+CHECK_HEADERS = $(HFILES_NO_SRCDIR)
+
+# Try to compile each header in isolation, thus ensuring headers are
+# self-contained.
+#
+# Defaults to checking all $HFILES_NO_SRCDIR headers.
+#
+# Do:
+#
+#    make check-headers CHECK_HEADERS="header.h list.h"
+#
+# to check specific headers.
+#
+check-headers:
+	@echo Checking headers.
+	for i in $(CHECK_HEADERS) ; do \
+		$(NODEPS_COMPILE) -Wno-error $(PYTHON_CFLAGS) -include defs.h \
+			$(srcdir)/$$i -o /dev/null ; \
+	done
+.PHONY: check-headers
+
 info install-info clean-info dvi pdf install-pdf html install-html: force
 	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
 


  parent reply	other threads:[~2013-11-13 19:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-11  6:38 [RFA/commit 1/3] language.h: Add "symtab.h" #include Joel Brobecker
2013-11-11  6:39 ` [RFA 2/3] New function cli-utils.c:extract_arg_const Joel Brobecker
2013-11-13 19:35   ` Pedro Alves
2013-11-14 10:55     ` pushed: " Joel Brobecker
2013-11-11  6:55 ` [RFC 3/3] GDB/MI: Add new "--language LANG" command option Joel Brobecker
2013-11-11  7:02   ` Joel Brobecker
2013-11-11 17:20     ` Eli Zaretskii
2013-11-11 16:29   ` Eli Zaretskii
2013-11-13 19:49   ` Pedro Alves
2013-11-14 11:17     ` Joel Brobecker
2013-11-13 19:34 ` Pedro Alves [this message]
2013-11-14 10:00   ` [PATCH] New "make check-headers" rule. (was: Re: [RFA/commit 1/3] language.h: Add "symtab.h" #include) Joel Brobecker
2013-11-14 21:32   ` [PATCH] New "make check-headers" rule Tom Tromey
2014-01-13 19:42     ` Pedro Alves
2013-11-14 10:55 ` pushed: [RFA/commit 1/3] language.h: Add "symtab.h" #include Joel Brobecker

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=5283CD04.3080501@redhat.com \
    --to=palves@redhat.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    /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