8db57304d85acf33d592c5896b12a1456491c043
[WebKit-https.git] / Tools / Scripts / copy-webkitlibraries-to-product-directory
1 #!/usr/bin/perl -w
2
3 # Copyright (C) 2005, 2008, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 #
9 # 1.  Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer. 
11 # 2.  Redistributions in binary form must reproduce the above copyright
12 #     notice, this list of conditions and the following disclaimer in the
13 #     documentation and/or other materials provided with the distribution. 
14 #
15 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
16 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
19 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
26 use strict;
27 use FindBin;
28 use lib $FindBin::Bin;
29 use webkitdirs;
30
31 my $productDir = shift @ARGV;
32 $productDir = $ENV{BUILT_PRODUCTS_DIR} if !$productDir;
33
34 chdirWebKit();
35
36 my @librariesToCopy = (
37     "libWebKitSystemInterfaceLion.a",
38     "libWebKitSystemInterfaceMountainLion.a",
39     "libWebCoreSQLite3.a",
40 );
41
42 my $ranlib = `xcrun -find ranlib`;
43 chomp $ranlib;
44 foreach my $libName (@librariesToCopy) {
45     my $srcLib = "WebKitLibraries/" . $libName;
46     my $lib = "$productDir/" . $libName;
47     if (!-e $lib || -M $lib > -M $srcLib) {
48         print "Updating $lib\n";
49         system "ditto", $srcLib, $lib;
50         system $ranlib, $lib;
51     }
52 }
53
54 (system("mkdir", "-p", "$productDir/usr/local/include") == 0) or die;
55
56 sub unpackIfNecessary
57 {
58     my ($targetDir, $sampleFile, $package, $hasLibraries) = @_;
59     if (!-e $sampleFile || -M $sampleFile > -M $package) {
60         print "Unpacking $package into $targetDir\n";
61         (system("tar -C $targetDir -xmf $package") == 0) or die;
62         if ($hasLibraries) {
63             foreach my $library (`tar -tf $package`) {
64                 chomp $library;
65                 print "   Ranlib $library\n";
66                 system $ranlib, $targetDir . "/" . $library;
67             }
68         }
69     }
70 }
71
72 sub dittoHeaders
73 {
74     my ($srcHeader, $header) = @_;
75     if (!-e $header || -M $header > -M $srcHeader) {
76         print "Updating $header\n";
77         (system("ditto", $srcHeader, $header) == 0) or die;
78     }
79 }
80
81 dittoHeaders("WebKitLibraries/WebKitSystemInterface.h", "$productDir/usr/local/include/WebKitSystemInterface.h");
82 dittoHeaders("WebKitLibraries/WebCoreSQLite3", "$productDir/WebCoreSQLite3");
83
84
85 if ($ENV{ENABLE_FTL_JIT}) {
86     # Determine where to get LLVM binaries and headers.
87     my $majorDarwinVersion = (split /\./, `uname -r`)[0];
88     my $llvmLibraryPackage;
89     my $llvmIncludePackage;
90     if (defined($ENV{LLVM_LIBRARY_PACKAGE}) && defined($ENV{LLVM_INCLUDE_PACKAGE})) {
91         $llvmLibraryPackage = $ENV{LLVM_LIBRARY_PACKAGE};
92         $llvmIncludePackage = $ENV{LLVM_INCLUDE_PACKAGE};
93     } elsif ($majorDarwinVersion == 11) {
94         $llvmLibraryPackage = "WebKitLibraries/LLVMLibrariesLion.tar.bz2";
95         $llvmIncludePackage = "WebKitLibraries/LLVMIncludesLion.tar.bz2";
96     } elsif ($majorDarwinVersion == 12) {
97         $llvmLibraryPackage = "WebKitLibraries/LLVMLibrariesMountainLion.tar.bz2";
98         $llvmIncludePackage = "WebKitLibraries/LLVMIncludesMountainLion.tar.bz2";
99     } else {
100         print "Don't know where to find LLVM!\n";
101         print "Try defining LLVM_LIBRARY_PACKAGE and LLVM_INCLUDE_PACKAGE.\n";
102         exit 1;
103     }
104
105     unpackIfNecessary("$productDir/usr/local/include", "$productDir/usr/local/include/llvm-c/Core.h", $llvmIncludePackage, 0);
106     unpackIfNecessary($productDir, "$productDir/libLLVMCore.a", $llvmLibraryPackage, 1);
107
108 }