#!/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 );