From: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
To: Sam Ravnborg <sam@ravnborg.org>,
Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH v4] check headers for complete includes, etc.
Date: Thu, 2 Oct 2003 10:37:28 +0200 [thread overview]
Message-ID: <20031002083728.GA10382@wohnheim.fh-wedel.de> (raw)
In-Reply-To: <20031001210926.GA1011@mars.ravnborg.org>
On Wed, 1 October 2003 23:09:26 +0200, Sam Ravnborg wrote:
> On Wed, Oct 01, 2003 at 08:01:14PM +0200, Jörn Engel wrote:
> >
> > Doesn't work in include/, there is no include/Makefile. But lib/ is a
> > hack, I agree.
>
> Sigh, OK.
Things can be so simple: touch include/Makefile :)
> > > So we need something like the following here: (untested)
> > > >
> > > > +headercheck: prepare-all
> > > > + $(PERL) scripts/checkheader.pl $(if $(KBUILD_VERBOSE),-verbose)
> > > > +
>
> Forgot that KBUILD_VERBOSE is always defined.
> Try:
> $(if $(KBUILD_VERBOSE:0=),--verbose)
Works, except for one oddity/bug. Not defining V=something on the
command line sets KBUILD_VERBOSE = "0 ". Note the space behind the 0.
Suggestions?
> prepare-all exist in BK-latest.
> The purpose is to create the asm-$(ARCH) -> asm symlink.
> Add an dependency on include/asm, that should do it.
Too lazy to move to BK-Latest for now. Dependency on include/asm it
is. :)
One more thing: Since the Makefile target is *check, not check*, I've
renamed the script to headercheck.pl. This is inconsistent with the
existing scripts, but makes more sense to me. Hope you don't mind.
Jörn
--
Time? What's that? Time is only worth what you do with it.
-- Theo de Raadt
--- /dev/null 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.0-test5/scripts/headercheck.pl 2003-10-02 10:27:54.000000000 +0200
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+use strict;
+use Getopt::Long;
+
+Getopt::Long::Configure("no_auto_abbrev"); # Could cause unexpected things
+Getopt::Long::Configure("bundling"); # We want -sA to work
+Getopt::Long::Configure("no_ignore_case"); # We don't want -a == -A
+
+my $verbose = 0;
+
+GetOptions('v|verbose' => \$verbose) || die("bad options");
+
+
+sub prune($)
+{
+ my $h = shift;
+ chomp($h);
+ open(HDR, "include/$h")
+ or return;
+ while (<HDR>) {
+ if ($_ =~ /^#\s*define\s+PRAGMA_INDIRECT_HEADER\s/) {
+ return;
+ }
+ }
+ close(HDR);
+ return $h;
+}
+
+my @headers = sort(map({prune($_);} `(cd include/ &&
+ [ -d linux/ ] && find linux/ -name "*.h" &&
+ [ -d asm/ ] && find asm/ -name "*.h")`)); # XXX this is fragile
+my $basename = "include/headercheck";
+system("touch", "include/Makefile");
+
+foreach my $h (@headers) {
+ close(STDERR);
+ open(STDERR, ">", "$basename.err");
+
+ open(HC, '>', "$basename.c");
+ print(HC "#include <$h>\n");
+ close(HC);
+
+ # tests
+ if (system("make", "$basename.o") != 0) {
+ print("WARNING: header doesn't build standalone: $h\n");
+ if ($verbose) {
+ system("cat", "$basename.err");
+ }
+ next;
+ }
+
+ my $symbols = `nm $basename.o`;
+ if ($symbols !~ /^$/) {
+ print("WARNING: Symbols may be declared: $h:\n");
+ if ($verbose) {
+ print("$symbols");
+ }
+ }
+} continue {
+ # cleanup
+ unlink("$basename.c");
+ unlink("$basename.err");
+ unlink("$basename.o");
+}
+unlink("system/Makefile");
--- linux-2.6.0-test5/Makefile~headercheck 2003-10-02 10:27:19.000000000 +0200
+++ linux-2.6.0-test5/Makefile 2003-10-02 10:35:27.000000000 +0200
@@ -833,6 +833,9 @@
-name '*.[hcS]' -type f -print | sort \
| xargs $(PERL) -w scripts/checkconfig.pl
+headercheck: include/asm
+ $(PERL) scripts/headercheck.pl $(if $(KBUILD_VERBOSE:0=),--verbose)
+
includecheck:
find * $(RCS_FIND_IGNORE) \
-name '*.[hcS]' -type f -print | sort \
next prev parent reply other threads:[~2003-10-02 8:37 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-28 10:14 Linux 2.6.0-test6 Geert Uytterhoeven
2003-09-28 12:50 ` Russell King
2003-09-28 13:54 ` Bernardo Innocenti
2003-09-28 17:37 ` Linus Torvalds
2003-09-28 18:46 ` Sam Ravnborg
2003-09-28 18:52 ` Linus Torvalds
2003-09-28 19:44 ` Jamie Lokier
2003-09-28 19:16 ` Jörn Engel
2003-09-28 19:31 ` Sam Ravnborg
2003-09-28 19:44 ` Jörn Engel
2003-09-29 13:36 ` [PATCH] check headers for complete includes, etc Jörn Engel
2003-09-29 13:40 ` Jörn Engel
2003-09-29 14:50 ` Sam Ravnborg
2003-09-29 15:00 ` Jörn Engel
2003-09-29 17:10 ` Dominik Kubla
2003-10-01 9:48 ` [PATCH v2] " Jörn Engel
2003-10-01 16:39 ` Sam Ravnborg
2003-10-01 17:00 ` Jörn Engel
2003-10-01 18:01 ` [PATCH v3] " Jörn Engel
2003-10-01 21:09 ` Sam Ravnborg
2003-10-02 8:37 ` Jörn Engel [this message]
2003-09-28 19:42 ` Linux 2.6.0-test6 Russell King
2003-09-28 20:00 ` Jörn Engel
2003-09-28 21:43 ` Tim Schmielau
2003-09-28 21:54 ` Arnaldo Carvalho de Melo
2003-10-02 16:16 ` [PATCH] remove unnecessary #includes from <linux/fs.h> Jörn Engel
2003-10-02 17:22 ` Sam Ravnborg
2003-10-02 17:26 ` Jörn Engel
2003-10-03 15:03 ` Tim Schmielau
2003-09-29 15:08 ` Linux 2.6.0-test6 Chris Friesen
2003-09-29 15:14 ` Geert Uytterhoeven
2003-09-28 19:28 ` Russell King
2003-09-29 8:52 ` Geert Uytterhoeven
2003-09-29 19:19 ` bill davidsen
2003-09-30 10:42 ` Jörn Engel
2003-09-30 15:17 ` Bill Davidsen
2003-10-01 9:08 ` Jörn Engel
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=20031002083728.GA10382@wohnheim.fh-wedel.de \
--to=joern@wohnheim.fh-wedel.de \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.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;
as well as URLs for NNTP newsgroup(s).