1 #!/usr/bin/perl -w 2 3 # Copyright (C) 2005 Apple Computer, Inc. All rights reserved. 4 # Copyright (C) 2007 Eric Seidel <eric (at] webkit.org> 5 # 6 # Redistribution and use in source and binary forms, with or without 7 # modification, are permitted provided that the following conditions 8 # are met: 9 # 10 # 1. Redistributions of source code must retain the above copyright 11 # notice, this list of conditions and the following disclaimer. 12 # 2. Redistributions in binary form must reproduce the above copyright 13 # notice, this list of conditions and the following disclaimer in the 14 # documentation and/or other materials provided with the distribution. 15 # 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 16 # its contributors may be used to endorse or promote products derived 17 # from this software without specific prior written permission. 18 # 19 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 20 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 23 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30 31 use strict; 32 use FindBin; 33 use Getopt::Long qw(:config pass_through); 34 use lib $FindBin::Bin; 35 use webkitdirs; 36 use POSIX; 37 38 my $coverageSupport = 0; 39 my $showHelp = 0; 40 41 my $programName = basename($0); 42 my $usage = <<EOF; 43 Usage: $programName [options] [options to pass to build system] 44 --help Show this help message 45 --[no-]coverage Toggle code coverage support (default: $coverageSupport) 46 EOF 47 48 GetOptions( 49 'coverage!' => \$coverageSupport, 50 'help' => \$showHelp 51 ); 52 53 if ($showHelp) { 54 print STDERR $usage; 55 exit 1; 56 } 57 58 checkRequiredSystemConfig(); 59 setConfiguration(); 60 chdirWebKit(); 61 my @options = XcodeOptions(); 62 my @coverageSupportOptions = ($coverageSupport) ? XcodeCoverageSupportOptions() : (); 63 64 chdir "JavaScriptCore" or die "Can't find JavaScriptCore directory to build from"; 65 my $result; 66 if (isAppleMacWebKit()) { 67 $result = system "sh", "-c", 'xcodebuild -project JavaScriptCore.xcodeproj "$@" | grep -v setenv && exit ${PIPESTATUS[0]}', "xcodebuild", @options, @ARGV, @coverageSupportOptions; 68 } elsif (isAppleWinWebKit()) { 69 $result = buildVisualStudioProject("JavaScriptCore.vcproj/JavaScriptCore.sln"); 70 } elsif (isQt() or isGtk() or isWx()) { 71 # Qt and Gtk build everything in one-shot. No need to build anything here. 72 $result = 0; 73 } else { 74 die "Building not defined for this platform!\n"; 75 } 76 exit exitStatus($result); 77