diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Scripts/generate-forwarding-headers.pl | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebKit2/Scripts/generate-forwarding-headers.pl')
-rwxr-xr-x | Source/WebKit2/Scripts/generate-forwarding-headers.pl | 69 |
1 files changed, 42 insertions, 27 deletions
diff --git a/Source/WebKit2/Scripts/generate-forwarding-headers.pl b/Source/WebKit2/Scripts/generate-forwarding-headers.pl index 73675b359..b61db7877 100755 --- a/Source/WebKit2/Scripts/generate-forwarding-headers.pl +++ b/Source/WebKit2/Scripts/generate-forwarding-headers.pl @@ -32,39 +32,49 @@ use File::Find; use File::Basename; use File::Path qw(mkpath); use File::Spec::Functions; +use Getopt::Long; my $srcRoot = realpath(File::Spec->catfile(dirname(abs_path($0)), "../..")); -my $incFromRoot = abs_path($ARGV[0]); -my @platformPrefixes = ("cf", "Cocoa", "CoordinatedGraphics", "curl", "efl", "gtk", "mac", "soup", "win"); -my @frameworks = ("JavaScriptCore", "WebCore", "WebKit2"); +my @platformPrefixes = ("ca", "cf", "cocoa", "Cocoa", "CoordinatedGraphics", "curl", "efl", "gtk", "ios", "mac", "soup", "win"); +my @frameworks = ("JavaScriptCore", "WebCore", "WebKit"); my @skippedPrefixes; my @frameworkHeaders; my $framework; +my $frameworkDirectoryName; my %neededHeaders; +my $verbose = 0; # enable it for debugging purpose -shift; -my $outputDirectory = $ARGV[0]; -shift; -my $platform = $ARGV[0]; +my @incFromRoot; +my $outputDirectory; +my @platform; + +my %options = ( + 'include-path=s' => \@incFromRoot, + 'output=s' => \$outputDirectory, + 'platform=s' => \@platform +); + +GetOptions(%options); foreach my $prefix (@platformPrefixes) { - push(@skippedPrefixes, $prefix) unless ($prefix =~ $platform); + push(@skippedPrefixes, $prefix) if grep($_ =~ "$prefix", @platform) == 0; } foreach (@frameworks) { $framework = $_; + $frameworkDirectoryName = ($framework eq "WebKit") ? "WebKit2" : $framework; @frameworkHeaders = (); %neededHeaders = (); - find(\&collectNeededHeaders, $incFromRoot); - find(\&collectFameworkHeaderPaths, File::Spec->catfile($srcRoot, $framework)); + foreach (@incFromRoot) { find(\&collectNeededHeaders, abs_path($_) ); }; + find(\&collectFrameworkHeaderPaths, File::Spec->catfile($srcRoot, $frameworkDirectoryName)); createForwardingHeadersForFramework(); } sub collectNeededHeaders { my $filePath = $File::Find::name; my $file = $_; - if ($filePath =~ '\.h$|\.cpp$|\.c$|\.mm$') { + if ($filePath =~ '\.h$|\.cpp$|\.c$') { open(FILE, "<$file") or die "Could not open $filePath.\n"; while (<FILE>) { if (m/^#.*<$framework\/(.*\.h)/) { @@ -75,11 +85,11 @@ sub collectNeededHeaders { } } -sub collectFameworkHeaderPaths { +sub collectFrameworkHeaderPaths { my $filePath = $File::Find::name; my $file = $_; if ($filePath =~ '\.h$' && $filePath !~ "ForwardingHeaders" && grep{$file eq $_} keys %neededHeaders) { - my $headerPath = substr($filePath, length(File::Spec->catfile($srcRoot, $framework)) + 1 ); + my $headerPath = substr($filePath, length(File::Spec->catfile($srcRoot, $frameworkDirectoryName)) + 1 ); push(@frameworkHeaders, $headerPath) unless (grep($headerPath =~ "$_/", @skippedPrefixes) || $headerPath =~ "config.h"); } } @@ -90,23 +100,28 @@ sub createForwardingHeadersForFramework { foreach my $header (@frameworkHeaders) { my $headerName = basename($header); - # If we found more headers with the same name, only generate a forwarding header for the current platform - if(grep($_ =~ "/$headerName\$", @frameworkHeaders) == 1 || $header =~ "/$platform/" ) { - my $forwardingHeaderPath = File::Spec->catfile($targetDirectory, $headerName); - my $expectedIncludeStatement = "#include \"$framework/$header\""; - my $foundIncludeStatement = 0; + # If we found more headers with the same name, exit immediately. + my @headers = grep($_ =~ "/$headerName\$", @frameworkHeaders); + if (@headers != 1) { + print("ERROR: Can't create $headerName forwarding header, because there are more headers with the same name:\n"); + foreach (@headers) { print " - $_\n" }; + die(); + } - $foundIncludeStatement = <EXISTING_HEADER> if open(EXISTING_HEADER, "<$forwardingHeaderPath"); - chomp($foundIncludeStatement); + my $forwardingHeaderPath = File::Spec->catfile($targetDirectory, $headerName); + my $expectedIncludeStatement = "#include \"$frameworkDirectoryName/$header\""; + my $foundIncludeStatement = 0; - if (! $foundIncludeStatement || $foundIncludeStatement ne $expectedIncludeStatement) { - print "[Creating forwarding header for $framework/$header]\n"; - open(FORWARDING_HEADER, ">$forwardingHeaderPath") or die "Could not open $forwardingHeaderPath."; - print FORWARDING_HEADER "$expectedIncludeStatement\n"; - close(FORWARDING_HEADER); - } + $foundIncludeStatement = <EXISTING_HEADER> if open(EXISTING_HEADER, "<$forwardingHeaderPath"); + chomp($foundIncludeStatement); - close(EXISTING_HEADER); + if (! $foundIncludeStatement || $foundIncludeStatement ne $expectedIncludeStatement) { + print "[Creating forwarding header for $framework/$header]\n" if $verbose; + open(FORWARDING_HEADER, ">$forwardingHeaderPath") or die "Could not open $forwardingHeaderPath."; + print FORWARDING_HEADER "$expectedIncludeStatement\n"; + close(FORWARDING_HEADER); } + + close(EXISTING_HEADER); } } |