1#!/usr/bin/perl -w 2 3# Copyright (C) 2005 Apple Computer, Inc. All rights reserved. 4# Copyright (C) 2007 Eric Seidel <eric@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 31use strict; 32use FindBin; 33use Getopt::Long qw(:config pass_through); 34use lib $FindBin::Bin; 35use webkitdirs; 36use POSIX; 37 38my $coverageSupport = 0; 39my $showHelp = 0; 40 41my $programName = basename($0); 42my $usage = <<EOF; 43Usage: $programName [options] [options to pass to build system] 44 --help Show this help message 45 --[no-]coverage Toggle code coverage support (default: $coverageSupport) 46EOF 47 48GetOptions( 49 'coverage!' => \$coverageSupport, 50 'help' => \$showHelp 51); 52 53if ($showHelp) { 54 print STDERR $usage; 55 exit 1; 56} 57 58checkRequiredSystemConfig(); 59setConfiguration(); 60chdirWebKit(); 61my @options = XcodeOptions(); 62my @coverageSupportOptions = ($coverageSupport) ? XcodeCoverageSupportOptions() : (); 63 64chdir "Source/JavaScriptCore" or die "Can't find JavaScriptCore directory to build from"; 65my $result; 66if (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 (isGtk()) { 71 $result = buildGtkProject("JavaScriptCore"); 72} elsif (isQt()) { 73 # Remove duplicated --qt options to avoid passing them to qmake 74 checkForArgumentAndRemoveFromARGV("--qt"); 75 $result = buildQMakeProject("JavaScriptCore", 0, @ARGV); 76} elsif (isWx()) { 77 # Builds everything in one-shot. No need to build anything here. 78 $result = 0; 79} else { 80 die "Building not defined for this platform!\n"; 81} 82exit exitStatus($result); 83