WebCore:
[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 %Files = (
10     'kwq/DOM.h' => 'DOM.subproj/DOM.h',
11     'kwq/DOMCore.h' => 'DOM.subproj/DOMCore.h',
12     'kwq/DOMViews.h' => 'DOM.subproj/DOMViews.h',
13     'kwq/DOMEvents.h' => 'DOM.subproj/DOMEvents.h',
14     'kwq/DOMStylesheets.h' => 'DOM.subproj/DOMStylesheets.h',
15     'kwq/DOMCSS.h' => 'DOM.subproj/DOMCSS.h',
16     'kwq/DOMTraversal.h' => 'DOM.subproj/DOMTraversal.h',
17     'kwq/DOMRange.h' => 'DOM.subproj/DOMRange.h',
18     'kwq/DOMHTML.h' => 'DOM.subproj/DOMHTML.h',
19     'kwq/DOM-compat.h' => 'DOM.subproj/DOM-compat.h',
20 );
21
22 my $WebCorePath = '';
23 my $WebKitPath = '';
24
25 CheckInWebKit();
26 CheckWebCoreFound();
27 CopyFilesIfNeeded();
28
29 #=======================================================================================
30 # subroutines
31
32 sub Fail {
33     my ($say) = @_;
34     Say("*** $ProgramName: $say");
35     exit(-1);
36 }
37
38 sub Say {
39     my ($say) = @_;
40     print STDERR $say, "\n";
41 }
42
43 sub CheckInWebKit {
44         if (cwd() =~ /WebKit$/) {
45                 # ok...we're in WebCore
46                 $WebKitPath = cwd();
47         }
48         else {
49                 Say("*** $ProgramName: not being run from WebKit directory. Cannot copy, exiting...");
50         exit(0);
51         }
52 }
53
54 sub CheckWebCoreFound {
55         my $path = cwd();
56         $path = dirname($path) . '/WebCore';
57         if (-d $path) {
58                 # ok...WebCore is where we expect it
59                 $WebCorePath = $path;
60         }
61         else {
62                 Say("*** $ProgramName: WebCore is not a sibling directory to WebKit. Cannot copy, exiting...");
63         exit(0);
64         }
65 }
66
67 sub CopyFilesIfNeeded {
68         # Only copy files if the dest file does not exist
69         # or the source file is different than the dest file
70         my $blab = 0;
71         
72         for my $file (keys(%Files)) {
73                 my $source = "$WebCorePath/$file";
74                 my $dest = "$WebKitPath/$Files{$file}";
75                 if (! -f $source) {
76                         Fail("$source is not a plain file");    
77                 }
78                 if (-e $dest && ! -f $dest) {
79                         Fail("$dest is not a plain file");      
80                 }
81                 if (! -e $dest || system("cmp $source $dest > /dev/null 2>&1")) {
82                         Say("$ProgramName: copying files...") if $blab == 0;
83                         $blab = 1;
84                         ExecuteCommand("cp -f $source $dest");
85                 }
86         }
87 }
88
89 sub ExecuteCommand {
90     my ($cmd) = @_;
91     Say($cmd);
92     my $result = system($cmd);
93     if ($result != 0) {
94         Fail("error: $result");
95         exit($result);
96     }
97 }