Reviewed by John.
[WebKit-https.git] / WebKit / copy-webcore-files-to-webkit
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Cwd;
5 use File::Basename;
6
7 my $ProgramName = 'copy-webcore-files-to-webkit';
8
9 my %WebCoreFiles = (
10     'kwq/DOM.h' => 'DOM.subproj/DOM.h',
11     'kwq/DOM-compat.h' => 'DOM.subproj/DOM-compat.h',
12     'kwq/DOMCSS.h' => 'DOM.subproj/DOMCSS.h',
13     'kwq/DOMCore.h' => 'DOM.subproj/DOMCore.h',
14     'kwq/DOMEvents.h' => 'DOM.subproj/DOMEvents.h',
15     'kwq/DOMExtensions.h' => 'DOM.subproj/DOMExtensions.h',
16     'kwq/DOMHTML.h' => 'DOM.subproj/DOMHTML.h',
17     'kwq/DOMPrivate.h' => 'DOM.subproj/DOMPrivate.h',
18     'kwq/DOMRange.h' => 'DOM.subproj/DOMRange.h',
19     'kwq/DOMStylesheets.h' => 'DOM.subproj/DOMStylesheets.h',
20     'kwq/DOMTraversal.h' => 'DOM.subproj/DOMTraversal.h',
21     'kwq/DOMViews.h' => 'DOM.subproj/DOMViews.h',
22 );
23
24 my %JavaScriptCoreFiles = (
25     'bindings/npruntime.h' => 'Plugins.subproj/npruntime.h',
26     'bindings/npapi.h' => 'Plugins.subproj/npapi.h',
27     'bindings/npsap.h' => 'Plugins.subproj/npsap.h',
28     'bindings/objc/WebScriptObject.h' => 'Plugins.subproj/WebScriptObject.h',
29 );
30
31 my $JavaScriptCorePath = '';
32 my $WebCorePath = '';
33 my $WebKitPath = '';
34
35 CheckInWebKit();
36 CheckWebCoreFound();
37 CheckJavaScriptCoreFound();
38 CopyFilesIfNeeded();
39
40 #=======================================================================================
41 # subroutines
42
43 sub Fail {
44     my ($say) = @_;
45     Say("*** $ProgramName: $say");
46     exit(-1);
47 }
48
49 sub Say {
50     my ($say) = @_;
51     print STDERR $say, "\n";
52 }
53
54 sub CheckInWebKit {
55     if (cwd() =~ /WebKit$/) {
56         # ok...we're in WebCore
57         $WebKitPath = cwd();
58     }
59     else {
60         Say("*** $ProgramName: not being run from WebKit directory. Cannot copy, exiting...");
61         exit(0);
62     }
63 }
64
65 sub CheckWebCoreFound {
66     my $path = cwd();
67     $path = dirname($path) . '/WebCore';
68     if (-d $path) {
69         # ok...WebCore is where we expect it
70         $WebCorePath = $path;
71     }
72     else {
73         Say("*** $ProgramName: WebCore is not a sibling directory to WebKit. Cannot copy, exiting...");
74         exit(0);
75     }
76 }
77
78 sub CheckJavaScriptCoreFound {
79     my $path = cwd();
80     $path = dirname($path) . '/JavaScriptCore';
81     if (-d $path) {
82         # ok...WebCore is where we expect it
83         $JavaScriptCorePath = $path;
84     }
85     else {
86         Say("*** $ProgramName: JavaScriptCore is not a sibling directory to WebKit. Cannot copy, exiting...");
87         exit(0);
88     }
89 }
90
91 sub CopyFilesIfNeeded {
92     # Only copy files if the dest file does not exist
93     # or the source file is different than the dest file
94     my $blab = 0;
95     
96     for my $file (keys(%WebCoreFiles)) {
97         my $source = "$WebCorePath/$file";
98         my $dest = "$WebKitPath/$WebCoreFiles{$file}";
99         if (! -f $source) {
100             Fail("$source is not a plain file");    
101         }
102         if (-e $dest && ! -f $dest) {
103             Fail("$dest is not a plain file");    
104         }
105
106         ExecuteCommand("sed -e 's%#import .*<WebCore/\\(.*\\)>%#import <WebKit/\\1>%' -e 's%#import .*<JavaScriptCore/\\(.*\\)>%#import <WebKit/\\1>%' $source > $dest-X");
107         if (! -e $dest || system("cmp $dest $dest-X > /dev/null 2>&1")){
108             ExecuteCommand("cp -f $dest-X $dest");
109        }
110        ExecuteCommand("rm $dest-X");
111
112     }
113
114     for my $file (keys(%JavaScriptCoreFiles)) {
115         my $source = "$JavaScriptCorePath/$file";
116         my $dest = "$WebKitPath/$JavaScriptCoreFiles{$file}";
117         if (! -f $source) {
118             Fail("$source is not a plain file");    
119         }
120         if (-e $dest && ! -f $dest) {
121             Fail("$dest is not a plain file");    
122         }
123         
124         ExecuteCommand("sed -e 's%#import .*<WebCore/\\(.*\\)>%#import <WebKit/\\1>%'  -e 's%#import .*<JavaScriptCore/\\(.*\\)>%#import <WebKit/\\1>%' $source > $dest-X");
125         if (! -e $dest || system("cmp $dest $dest-X > /dev/null 2>&1")){
126             ExecuteCommand("cp -f $dest-X $dest");
127        }
128        ExecuteCommand("rm $dest-X");
129     }
130 }
131
132 sub ExecuteCommand {
133     my ($cmd) = @_;
134     my $result = system($cmd);
135     if ($result != 0) {
136         Say($cmd);
137         Fail("error: $result");
138         exit($result);
139     }
140 }