summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@theqtcompany.com>2015-11-26 17:33:04 +0100
committerJoerg Bornemann <joerg.bornemann@theqtcompany.com>2015-11-27 17:28:39 +0000
commit779d2aa5fcd82c4236c1d86a510adcb88e077775 (patch)
tree8205f930b0f55c09a6f1b479615edb9a1efeba98 /bin
parent1dd1e48e7328db9d17de3e5f1bd6ca257f4ccee2 (diff)
Factor header check out into a separate function
Another step towards the removal of the duplicated loop over header files. Change-Id: I542782627d8742a515a42034264e4569a2355823 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'bin')
-rwxr-xr-xbin/syncqt.pl135
1 files changed, 70 insertions, 65 deletions
diff --git a/bin/syncqt.pl b/bin/syncqt.pl
index 25c129f268..6b8d847a78 100755
--- a/bin/syncqt.pl
+++ b/bin/syncqt.pl
@@ -321,6 +321,75 @@ sub classNames {
return @ret;
}
+sub check_header {
+ my ($lib, $header, $iheader, $public_header, $private_header) = @_;
+ my $header_skip_qt_begin_namespace_test = 0;
+
+ if ($public_header) {
+ return if ($ignore_for_include_check{$header});
+ $header_skip_qt_begin_namespace_test = 1 if ($ignore_for_qt_begin_namespace_check{$header});
+ }
+
+ open(F, "<$iheader") or return;
+ my $qt_begin_namespace_found = 0;
+ my $qt_end_namespace_found = 0;
+ my $qt_namespace_suffix = "";
+ my $line;
+ my $stop_processing = 0;
+ my $we_mean_it = 0;
+ while ($line = <F>) {
+ chomp $line;
+ my $output_line = 1;
+ if ($line =~ /^ *\# *pragma (qt_no_included_check|qt_sync_stop_processing)/) {
+ $stop_processing = 1;
+ last;
+ }
+ if ($line =~ /^ *\# *include/) {
+ my $include = $line;
+ if ($line =~ /<.*>/) {
+ $include =~ s,.*<(.*)>.*,$1,;
+ } elsif ($line =~ /".*"/) {
+ $include =~ s,.*"(.*)".*,$1,;
+ } else {
+ $include = 0;
+ }
+ if ($include && $public_header) {
+ print STDERR "$lib: ERROR: $iheader includes private header $include\n" if ($include =~ /_p.h$/);
+ for my $trylib (keys(%modules)) {
+ if (-e "$out_basedir/include/$trylib/$include") {
+ print "$lib: WARNING: $iheader includes $include when it should include $trylib/$include\n";
+ }
+ }
+ }
+ } elsif (!$private_header) {
+ if ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_BEGIN_NAMESPACE(_[A-Z_]+)?\s*$/) {
+ $qt_namespace_suffix = defined($1) ? $1 : "";
+ $qt_begin_namespace_found = 1;
+ } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE$qt_namespace_suffix\s*$/) {
+ $qt_end_namespace_found = 1;
+ }
+ } elsif ($line =~ "^// We mean it.") {
+ ++$we_mean_it;
+ }
+ }
+
+ if ($public_header) {
+ if ($header_skip_qt_begin_namespace_test == 0 and $stop_processing == 0) {
+ if ($qt_begin_namespace_found == 0) {
+ print "$lib: WARNING: $iheader does not include QT_BEGIN_NAMESPACE\n";
+ }
+
+ if ($qt_begin_namespace_found && $qt_end_namespace_found == 0) {
+ print "$lib: WARNING: $iheader has QT_BEGIN_NAMESPACE$qt_namespace_suffix but no QT_END_NAMESPACE$qt_namespace_suffix\n";
+ }
+ }
+ } elsif ($private_header) {
+ print "$lib: WARNING: $iheader does not have the \"We mean it.\" warning\n" if (!$we_mean_it);
+ }
+
+ close(F);
+}
+
sub make_path {
my ($dir, $lib, $be_verbose) = @_;
unless(-e $dir) {
@@ -1141,7 +1210,6 @@ if($check_includes) {
foreach my $subdir (@subdirs) {
my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
foreach my $header (@headers) {
- my $header_skip_qt_begin_namespace_test = 0;
$header = 0 if($header =~ /^ui_.*.h/);
$header = 0 if ($header eq lc($lib)."version.h");
foreach (@ignore_headers) {
@@ -1160,73 +1228,10 @@ if($check_includes) {
foreach (@ignore_for_master_contents) {
$public_header = 0 if($header eq $_);
}
- if($public_header) {
- $public_header = 0 if ($ignore_for_include_check{$header});
- $header_skip_qt_begin_namespace_test = 1 if ($ignore_for_qt_begin_namespace_check{$header});
- }
}
my $iheader = $subdir . "/" . $header;
- if (open(F, "<$iheader")) {
- my $qt_begin_namespace_found = 0;
- my $qt_end_namespace_found = 0;
- my $qt_namespace_suffix = "";
- my $line;
- my $stop_processing = 0;
- my $we_mean_it = 0;
- while ($line = <F>) {
- chomp $line;
- my $output_line = 1;
- if ($line =~ /^ *\# *pragma (qt_no_included_check|qt_sync_stop_processing)/) {
- $stop_processing = 1;
- last;
- } elsif ($line =~ /^ *\# *include/) {
- my $include = $line;
- if ($line =~ /<.*>/) {
- $include =~ s,.*<(.*)>.*,$1,;
- } elsif ($line =~ /".*"/) {
- $include =~ s,.*"(.*)".*,$1,;
- } else {
- $include = 0;
- }
- if ($include) {
- if ($public_header) {
- print STDERR "$lib: ERROR: $iheader includes private header $include\n" if ($include =~ /_p.h$/);
- for my $trylib (keys(%modules)) {
- if(-e "$out_basedir/include/$trylib/$include") {
- print "$lib: WARNING: $iheader includes $include when it should include $trylib/$include\n";
- }
- }
- }
- }
- } elsif (!$private_header) {
- if ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_BEGIN_NAMESPACE(_[A-Z_]+)?\s*$/) {
- $qt_namespace_suffix = defined($1) ? $1 : "";
- $qt_begin_namespace_found = 1;
- } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE$qt_namespace_suffix\s*$/) {
- $qt_end_namespace_found = 1;
- }
- } elsif ($line =~ "^// We mean it.") {
- ++$we_mean_it;
- }
- }
-
- if ($public_header) {
- if ($header_skip_qt_begin_namespace_test == 0 and $stop_processing == 0) {
- if ($qt_begin_namespace_found == 0) {
- print "$lib: WARNING: $iheader does not include QT_BEGIN_NAMESPACE\n";
- }
-
- if ($qt_begin_namespace_found && $qt_end_namespace_found == 0) {
- print "$lib: WARNING: $iheader has QT_BEGIN_NAMESPACE$qt_namespace_suffix but no QT_END_NAMESPACE$qt_namespace_suffix\n";
- }
- }
- } elsif ($private_header) {
- print "$lib: WARNING: $iheader does not have the \"We mean it.\" warning\n" if (!$we_mean_it);
- }
-
- close(F);
- }
+ check_header($lib, $header, $iheader, $public_header, $private_header);
}
}
}