blob: d4ab16684cc960fce64ba9351e9a50e8eedcc0d2 [file] [log] [blame]
#!/usr/bin/perl -w
# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
# its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# A script to download the extra libraries needed to build WebKit on Windows.
use strict;
use FindBin;
use lib $FindBin::Bin;
use webkitdirs;
use Win32API::Registry 0.21 qw( :ALL );
checkRequiredSystemConfig();
chdirWebKit();
my $webkitDir = `pwd`;
chomp $webkitDir;
chdir "WebKitLibraries";
if (! -e "icu-3.4-win32-msvc7.1.zip") {
print "Downloading icu-3.4-win32-msvc7.1.zip...\n\n";
`rm -rf icu*`;
`curl -O ftp://ftp.software.ibm.com/software/globalization/icu/3.4/icu-3.4-Win32-msvc7.1.zip`;
print "\nInstalling icu-3.4-win32-msvc7.1.zip...\n";
`unzip icu-3.4-win32-msvc7.1.zip`;
`rm -rf ../icu`;
`cp -rp icu ..`;
}
`chmod 755 ../icu/bin/*.dll`;
if (! -e "iconv-1.9.1.win32.zip") {
print "Downloading iconv-1.9.1.win32.zip...\n\n";
`rm -rf iconv*`;
`curl -O ftp://fr.rpmfind.net/pub/libxml/win32/iconv-1.9.1.win32.zip`;
print "\nInstalling iconv-1.9.1.win32.zip...\n";
`unzip iconv-1.9.1.win32.zip`;
`rm -rf ../iconv`;
`cp -rp iconv-1.9.1.win32 ../iconv`;
}
`chmod 755 ../iconv/bin/*.dll`;
if (! -e "libxml2-2.6.23.win32.zip") {
print "Downloading libxml2-2.6.23.win32.zip...\n\n";
`rm -rf libxml*`;
`curl -O ftp://fr.rpmfind.net/pub/libxml/win32/libxml2-2.6.23.win32.zip`;
print "\nInstalling libxml2-2.6.23.win32.zip...\n";
`unzip libxml2-2.6.23.win32.zip`;
`rm -rf ../libxml`;
`cp -rp libxml2-2.6.23.win32 ../libxml`;
}
`chmod 755 ../libxml/bin/*.dll`;
if (! -e "libxslt-1.1.15.win32.zip") {
print "Downloading libxmslt-1.1.15.win32.zip...\n";
`rm -rf libxslt*`;
`curl -O ftp://fr.rpmfind.net/pub/libxml/win32/libxslt-1.1.15.win32.zip`;
print "Installing libxmslt-1.1.15.win32.zip...\n";
`unzip libxslt-1.1.15.win32.zip`;
`rm -rf ../libxslt`;
`cp -rp libxslt-1.1.15.win32 ../libxslt`;
}
`chmod 755 ../libxslt/bin/*.dll`;
if (! -e "zlib-1.2.3.win32.zip") {
print "Downloading zlib-1.2.3.win32.zip...\n\n";
`rm -rf zlib*`;
`curl -O ftp://fr.rpmfind.net/pub/libxml/win32/zlib-1.2.3.win32.zip`;
print "\nInstalling zlib-1.2.3.win32.zip...\n";
`unzip zlib-1.2.3.win32.zip`;
`rm -rf ../zlib`;
`cp -rp zlib-1.2.3.win32 ../zlib`;
}
`chmod 755 ../zlib/bin/*.dll`;
my $PROGRAMFILES = $ENV{"PROGRAMFILES"};
my $unixProgramFiles = `cygpath -u "$PROGRAMFILES"`;
chomp $unixProgramFiles;
my $setx = "$unixProgramFiles/Resource\ Kit/setx.exe";
if (! -x "$setx") {
unlink("setx_setup.exe");
print "Downloading setx_setup.exe...\n\n";
`curl -O http://download.microsoft.com/download/win2000platform/setx/1.00.0.1/nt5/en-us/setx_setup.exe`;
print "Installing setx_setup.exe, please install in the default location...\n";
`chmod +x ./setx_setup.exe`;
`./setx_setup.exe`;
`chmod +x "$setx"`;
print "$setx WebKitOutputDir 'c:\\WebKitBuild'\n";
system "$setx", "WebKitOutputDir", 'c:\\WebKitBuild';
my $PATH = $ENV{"PATH"};
my $WINPATH = `cygpath -p -w "$PATH"`;
chomp $WINPATH;
my $winScripts = `cygpath -w "$webkitDir/WebKitTools/Scripts"`;
chomp $winScripts;
if (! ($WINPATH =~ /WebKitTools/)) {
$WINPATH = "$winScripts;$WINPATH";
}
if (! ($WINPATH =~ /Resource Kit/)) {
$WINPATH = "c:\\Program Files\\Resource Kit;$WINPATH";
}
if (! ($WINPATH =~ /cygwin\\bin/)) {
$WINPATH = "c:\\cygwin\\bin;$WINPATH";
}
print "$setx Path \"$WINPATH\" -m\n";
system "$setx", "Path", "$WINPATH", "-m";
}
# Disable error reporting UI
my $key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug", 0, KEY_WRITE, $key);
RegSetValueEx($key, "Auto", 0, REG_SZ, "1" );
RegSetValueEx($key, "Debugger", 0, REG_SZ, "drwtsn32 -p %ld -e %ld -g");
RegCloseKey($key );
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\PCHealth\\ErrorReporting", 0, KEY_WRITE, $key);
RegSetValueEx($key, "DoReport", 0, REG_DWORD, "\0\0\0\0");
RegSetValueEx($key, "ShowUI", 0, REG_DWORD, "\0\0\0\0");
RegCloseKey($key );