Diff
Modified: trunk/Tools/ChangeLog (291574 => 291575)
--- trunk/Tools/ChangeLog 2022-03-21 19:16:37 UTC (rev 291574)
+++ trunk/Tools/ChangeLog 2022-03-21 19:21:59 UTC (rev 291575)
@@ -1,3 +1,23 @@
+2022-03-21 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [WebGPU] Add a build-webgpu script
+ https://bugs.webkit.org/show_bug.cgi?id=238040
+
+ Reviewed by Saam Barati.
+
+ This patch adds a build-webgpu script by sharing code with the build-jsc script.
+ It moves almost all of the contents of the build-jsc script to a shared Perl module,
+ webkitperl/BuildSubproject.pm, and then has build-jsc and build-webgpu both call
+ into it to build the relevant projects.
+
+ * Scripts/build-jsc:
+ (buildMyProject): Deleted.
+ (writeCongrats): Deleted.
+ * Scripts/build-webgpu: Added.
+ * Scripts/webkitperl/BuildSubproject.pm: Copied from Tools/Scripts/build-jsc.
+ (buildMyProject):
+ (writeCongrats):
+
2022-03-18 Jonathan Bedard <jbed...@apple.com>
[Merge-Queue] Support multiple reviewers names
Modified: trunk/Tools/Scripts/build-jsc (291574 => 291575)
--- trunk/Tools/Scripts/build-jsc 2022-03-21 19:16:37 UTC (rev 291574)
+++ trunk/Tools/Scripts/build-jsc 2022-03-21 19:21:59 UTC (rev 291575)
@@ -1,6 +1,6 @@
#!/usr/bin/env perl
-# Copyright (C) 2005, 2013 Apple Inc. All rights reserved.
+# Copyright (C) 2005-2022 Apple Inc. All rights reserved.
# Copyright (C) 2007 Eric Seidel <e...@webkit.org>
#
# Redistribution and use in source and binary forms, with or without
@@ -27,246 +27,14 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use warnings;
use FindBin;
-use Getopt::Long qw(:config pass_through);
use lib $FindBin::Bin;
-use webkitdirs;
use webkitperl::FeatureList qw(getFeatureOptionList);
-use POSIX;
-use Text::ParseWords;
+use webkitperl::BuildSubproject;
-sub writeCongrats();
-
-prohibitUnknownPort();
-
-if (shouldUseFlatpak()) {
- print "Building flatpak based environment\n";
- my @command = (File::Spec->catfile(sourceDir(), "Tools", "Scripts", "build-jsc"));
- runInFlatpak(@command);
-}
-
-
-my $shouldRunStaticAnalyzer = 0;
-my $minimal = 0;
-my $coverageSupport = 0;
-my $showHelp = 0;
-my $ftlJIT = int(isAppleCocoaWebKit() && !willUseIOSSimulatorSDK() || ((isARM64() || isX86_64()) && (isGtk() || isJSCOnly())));
-my $forceCLoop = 0;
-my $makeArgs = "";
-my @cmakeArgs;
-my $buildDir = "";
-my $startTime = time();
-my $useCCache = -1;
-my $exportCompileCommands = 0;
-
-my @features = getFeatureOptionList();
-
-# Initialize values from defaults
-foreach (@ARGV) {
- if ($_ eq '--minimal') {
- $minimal = 1;
- }
-}
-
-# Initialize values from defaults
-foreach (@features) {
- ${$_->{value}} = ($minimal ? 0 : $_->{default});
-}
-
-# Additional environment parameters
-push @ARGV, parse_line('\s+', 0, $ENV{'BUILD_JSC_ARGS'}) if ($ENV{'BUILD_JSC_ARGS'});
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --[no-]analyze Toggle code static analysis (default: $shouldRunStaticAnalyzer)
- --[no-]coverage Toggle code coverage support (default: $coverageSupport)
- --[no-]ftl-jit Toggle FTL JIT support (default: $ftlJIT)
- --cloop Use C Loop interpreter (default: $forceCLoop)
- --makeargs=<arguments> Optional Makefile flags
- --cmakeargs=<arguments> One or more optional CMake flags (e.g. --cmakeargs="-DFOO=bar -DCMAKE_PREFIX_PATH=/usr/local")
- --build-dir=<path> Build out of tree in directory at <path>
-
- --[no-]use-ccache Enable (or disable) CCache, if available
- --export-compile-commands Generate compile_commands.json (Apple platforms only)
-EOF
-
-my %options = (
- 'analyze!' => \$shouldRunStaticAnalyzer,
- 'coverage!' => \$coverageSupport,
- 'help' => \$showHelp,
- 'ftl-jit!' => \$ftlJIT,
- 'cloop!' => \$forceCLoop,
- 'makeargs=s' => \$makeArgs,
- 'cmakeargs=s' => \@cmakeArgs,
- 'build-dir=s' => \$buildDir,
- 'use-ccache!' => \$useCCache,
- 'export-compile-commands' => \$exportCompileCommands
-);
-
-foreach (@features) {
- if ($_->{_javascript_}) {
- my $opt = sprintf("%-35s", " --[no-]$_->{option}");
- $usage .= "$opt $_->{desc} (default: $_->{default})\n";
- $options{"$_->{option}!"} = $_->{value};
- }
-}
-
-GetOptions(%options);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-if (isAnyWindows()) {
- $ftlJIT = 0;
-}
-
-if ($buildDir && !isCMakeBuild()) {
- print STDERR "--build-dir is currently only supported for cmake builds";
- exit 1;
-}
-
-if (isWinCairo() || (isJSCOnly() && isWindows())) {
- (system("python Tools/Scripts/update-webkit-wincairo-libs.py") == 0) or die;
-}
-
-if ($useCCache == 1) {
- $ENV{'WK_USE_CCACHE'} = "YES";
-} elsif ($useCCache == 0) {
- $ENV{'WK_USE_CCACHE'} = "NO";
-}
-
-$ENV{'EXPORT_COMPILE_COMMANDS'} = "YES" if $exportCompileCommands;
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-my @options = XcodeOptions();
-my @additionalSupportOptions = ();
-push @additionalSupportOptions, XcodeCoverageSupportOptions() if $coverageSupport;
-push @additionalSupportOptions, XcodeStaticAnalyzerOption() if $shouldRunStaticAnalyzer;
-
-if ($forceCLoop) {
- $ftlJIT = 0;
-}
-
-if (isCMakeBuild()) {
- if (scalar(@ARGV) > 0) {
- foreach (@ARGV) {
- my $arg = $_;
- if ($arg =~ /^-.*/) {
- print STDERR "Unrecognized option `$arg'\n";
- } else {
- print STDERR "Stray anonymous argument `$arg'\n";
- }
- }
- exit 2;
- }
- if ($forceCLoop) {
- push @cmakeArgs, " -DENABLE_JIT=OFF";
- push @cmakeArgs, " -DENABLE_C_LOOP=ON";
- }
- push @cmakeArgs, $ftlJIT ? " -DENABLE_FTL_JIT=ON" : " -DENABLE_FTL_JIT=OFF";
- if ($buildDir) {
- push @cmakeArgs, " " . sourceDir();
- setBaseProductDir($buildDir);
- }
-
- my @featureArgs = cmakeArgsFromFeatures(@features);
-
- my $buildTarget = "";
- unless (isAnyWindows()) {
- # By default we build using all of the available CPUs
- $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
- $buildTarget = "jsc testb3 testair testapi testmasm testdfg $makeArgs";
- } elsif (canUseNinja()) {
- $buildTarget .= "jsc testapi testmasm";
- }
-
- # This call only returns if nothing wrong happened
- buildCMakeProjectOrExit(0, undef, $buildTarget, @featureArgs, @cmakeArgs);
- writeCongrats();
- exit exitStatus(0);
-}
-
-if (isAppleCocoaWebKit()) {
- push @options, ($forceCLoop ? "ENABLE_JIT=ENABLE_JIT=0" : "ENABLE_JIT=ENABLE_JIT");
- push @options, ($forceCLoop ? "ENABLE_C_LOOP=ENABLE_C_LOOP" : "ENABLE_C_LOOP=ENABLE_C_LOOP=0");
- push @options, ($ftlJIT ? "ENABLE_FTL_JIT=ENABLE_FTL_JIT" : "ENABLE_FTL_JIT=ENABLE_FTL_JIT=0");
-
- sub option($$$)
- {
- my ($feature, $isEnabled, $defaultValue) = @_;
- return "" if $defaultValue == $isEnabled;
- return $feature . "=" . ($isEnabled ? $feature : "");
- }
-
- foreach (@features) {
- if ($_->{_javascript_}) {
- my $option = option($_->{define}, ${$_->{value}}, $_->{default});
- push @options, $option unless $option eq "";
- }
- }
-}
-
-sub buildMyProject
-{
- my ($projectDirectory, $projectName) = @_;
- my $result;
- chdir $projectDirectory or die "Can't find $projectName directory to build from";
- if (isAppleCocoaWebKit()) {
- my $compilerFlags = 'GCC_PREPROCESSOR_ADDITIONS="';
- if ($forceCLoop) {
- $compilerFlags .= "ENABLE_JIT=0 ENABLE_C_LOOP=1";
- }
- $compilerFlags .= '"';
-
- my $extraCommands = "";
- foreach (@ARGV) {
- # Ensure that if somebody passes in a flag like `ARCHS="i386 x86_64"` we
- # maintain the quotes around "i386 x86_64".
- my $arg = $_;
- if ($arg =~ m/=/) {
- $arg =~ s/=/="/;
- $arg = $arg . "\"";
- }
- $extraCommands .= " " . $arg;
- }
-
- my $command = "make " . (lc configuration()) . " " . $compilerFlags . " " . $extraCommands;
-
- print "\n";
- print "building ", $projectName, "\n";
- print "running build command '", $command, "' in ", $projectDirectory, "\n\n";
-
- $result = system $command;
- } else {
- die "Building not defined for this platform!\n";
- }
- exit exitStatus($result) if exitStatus($result);
- chdirWebKit();
-}
-
-sub writeCongrats()
-{
- my $endTime = time();
- my $buildTime = formatBuildTime($endTime - $startTime);
-
- print "\n";
- print "====================================================================\n";
- print " _javascript_Core is now built ($buildTime). \n";
- print "====================================================================\n";
-}
-
buildMyProject("Source/bmalloc", "bmalloc");
buildMyProject("Source/WTF", "WTF");
buildMyProject("Source/_javascript_Core", "_javascript_Core");
if (isAppleCocoaWebKit()) {
- writeCongrats();
+ writeCongrats("_javascript_Core");
}
Added: trunk/Tools/Scripts/build-webgpu (0 => 291575)
--- trunk/Tools/Scripts/build-webgpu (rev 0)
+++ trunk/Tools/Scripts/build-webgpu 2022-03-21 19:21:59 UTC (rev 291575)
@@ -0,0 +1,39 @@
+#!/usr/bin/env perl
+
+# Copyright (C) 2005-2022 Apple Inc. All rights reserved.
+# Copyright (C) 2007 Eric Seidel <e...@webkit.org>
+#
+# 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 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.
+
+use FindBin;
+use lib $FindBin::Bin;
+use webkitperl::FeatureList qw(getFeatureOptionList);
+use webkitperl::BuildSubproject;
+
+buildMyProject("Source/bmalloc", "bmalloc");
+buildMyProject("Source/WTF", "WTF");
+buildMyProject("Source/_javascript_Core", "_javascript_Core");
+buildMyProject("Source/WebGPU", "WebGPU");
+writeCongrats("WebGPU");
Property changes on: trunk/Tools/Scripts/build-webgpu
___________________________________________________________________
Added: svn:executable
+*
\ No newline at end of property
Copied: trunk/Tools/Scripts/webkitperl/BuildSubproject.pm (from rev 291574, trunk/Tools/Scripts/build-jsc) (0 => 291575)
--- trunk/Tools/Scripts/webkitperl/BuildSubproject.pm (rev 0)
+++ trunk/Tools/Scripts/webkitperl/BuildSubproject.pm 2022-03-21 19:21:59 UTC (rev 291575)
@@ -0,0 +1,267 @@
+#!/usr/bin/env perl
+
+# Copyright (C) 2005-2022 Apple Inc. All rights reserved.
+# Copyright (C) 2007 Eric Seidel <e...@webkit.org>
+#
+# 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 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.
+
+use strict;
+use warnings;
+use FindBin;
+use Getopt::Long qw(:config pass_through);
+use lib $FindBin::Bin;
+use webkitdirs;
+use webkitperl::FeatureList qw(getFeatureOptionList);
+use POSIX;
+use Text::ParseWords;
+
+sub writeCongrats();
+
+prohibitUnknownPort();
+
+if (shouldUseFlatpak()) {
+ print "Building flatpak based environment\n";
+ my @command = (File::Spec->catfile(sourceDir(), "Tools", "Scripts", "build-jsc"));
+ runInFlatpak(@command);
+}
+
+
+my $shouldRunStaticAnalyzer = 0;
+my $minimal = 0;
+my $coverageSupport = 0;
+my $showHelp = 0;
+my $ftlJIT = int(isAppleCocoaWebKit() && !willUseIOSSimulatorSDK() || ((isARM64() || isX86_64()) && (isGtk() || isJSCOnly())));
+my $forceCLoop = 0;
+my $makeArgs = "";
+my @cmakeArgs;
+my $buildDir = "";
+my $startTime = time();
+my $useCCache = -1;
+my $exportCompileCommands = 0;
+
+my @features = getFeatureOptionList();
+
+# Initialize values from defaults
+foreach (@ARGV) {
+ if ($_ eq '--minimal') {
+ $minimal = 1;
+ }
+}
+
+# Initialize values from defaults
+foreach (@features) {
+ ${$_->{value}} = ($minimal ? 0 : $_->{default});
+}
+
+# Additional environment parameters
+push @ARGV, parse_line('\s+', 0, $ENV{'BUILD_JSC_ARGS'}) if ($ENV{'BUILD_JSC_ARGS'});
+
+my $programName = basename($0);
+my $usage = <<EOF;
+Usage: $programName [options] [options to pass to build system]
+ --help Show this help message
+ --[no-]analyze Toggle code static analysis (default: $shouldRunStaticAnalyzer)
+ --[no-]coverage Toggle code coverage support (default: $coverageSupport)
+ --[no-]ftl-jit Toggle FTL JIT support (default: $ftlJIT)
+ --cloop Use C Loop interpreter (default: $forceCLoop)
+ --makeargs=<arguments> Optional Makefile flags
+ --cmakeargs=<arguments> One or more optional CMake flags (e.g. --cmakeargs="-DFOO=bar -DCMAKE_PREFIX_PATH=/usr/local")
+ --build-dir=<path> Build out of tree in directory at <path>
+
+ --[no-]use-ccache Enable (or disable) CCache, if available
+ --export-compile-commands Generate compile_commands.json (Apple platforms only)
+EOF
+
+my %options = (
+ 'analyze!' => \$shouldRunStaticAnalyzer,
+ 'coverage!' => \$coverageSupport,
+ 'help' => \$showHelp,
+ 'ftl-jit!' => \$ftlJIT,
+ 'cloop!' => \$forceCLoop,
+ 'makeargs=s' => \$makeArgs,
+ 'cmakeargs=s' => \@cmakeArgs,
+ 'build-dir=s' => \$buildDir,
+ 'use-ccache!' => \$useCCache,
+ 'export-compile-commands' => \$exportCompileCommands
+);
+
+foreach (@features) {
+ if ($_->{_javascript_}) {
+ my $opt = sprintf("%-35s", " --[no-]$_->{option}");
+ $usage .= "$opt $_->{desc} (default: $_->{default})\n";
+ $options{"$_->{option}!"} = $_->{value};
+ }
+}
+
+GetOptions(%options);
+
+if ($showHelp) {
+ print STDERR $usage;
+ exit 1;
+}
+
+if (isAnyWindows()) {
+ $ftlJIT = 0;
+}
+
+if ($buildDir && !isCMakeBuild()) {
+ print STDERR "--build-dir is currently only supported for cmake builds";
+ exit 1;
+}
+
+if (isWinCairo() || (isJSCOnly() && isWindows())) {
+ (system("python Tools/Scripts/update-webkit-wincairo-libs.py") == 0) or die;
+}
+
+if ($useCCache == 1) {
+ $ENV{'WK_USE_CCACHE'} = "YES";
+} elsif ($useCCache == 0) {
+ $ENV{'WK_USE_CCACHE'} = "NO";
+}
+
+$ENV{'EXPORT_COMPILE_COMMANDS'} = "YES" if $exportCompileCommands;
+
+checkRequiredSystemConfig();
+setConfiguration();
+chdirWebKit();
+my @options = XcodeOptions();
+my @additionalSupportOptions = ();
+push @additionalSupportOptions, XcodeCoverageSupportOptions() if $coverageSupport;
+push @additionalSupportOptions, XcodeStaticAnalyzerOption() if $shouldRunStaticAnalyzer;
+
+if ($forceCLoop) {
+ $ftlJIT = 0;
+}
+
+if (isCMakeBuild()) {
+ if (scalar(@ARGV) > 0) {
+ foreach (@ARGV) {
+ my $arg = $_;
+ if ($arg =~ /^-.*/) {
+ print STDERR "Unrecognized option `$arg'\n";
+ } else {
+ print STDERR "Stray anonymous argument `$arg'\n";
+ }
+ }
+ exit 2;
+ }
+ if ($forceCLoop) {
+ push @cmakeArgs, " -DENABLE_JIT=OFF";
+ push @cmakeArgs, " -DENABLE_C_LOOP=ON";
+ }
+ push @cmakeArgs, $ftlJIT ? " -DENABLE_FTL_JIT=ON" : " -DENABLE_FTL_JIT=OFF";
+ if ($buildDir) {
+ push @cmakeArgs, " " . sourceDir();
+ setBaseProductDir($buildDir);
+ }
+
+ my @featureArgs = cmakeArgsFromFeatures(@features);
+
+ my $buildTarget = "";
+ unless (isAnyWindows()) {
+ # By default we build using all of the available CPUs
+ $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
+ $buildTarget = "jsc testb3 testair testapi testmasm testdfg $makeArgs";
+ } elsif (canUseNinja()) {
+ $buildTarget .= "jsc testapi testmasm";
+ }
+
+ # This call only returns if nothing wrong happened
+ buildCMakeProjectOrExit(0, undef, $buildTarget, @featureArgs, @cmakeArgs);
+ writeCongrats();
+ exit exitStatus(0);
+}
+
+if (isAppleCocoaWebKit()) {
+ push @options, ($forceCLoop ? "ENABLE_JIT=ENABLE_JIT=0" : "ENABLE_JIT=ENABLE_JIT");
+ push @options, ($forceCLoop ? "ENABLE_C_LOOP=ENABLE_C_LOOP" : "ENABLE_C_LOOP=ENABLE_C_LOOP=0");
+ push @options, ($ftlJIT ? "ENABLE_FTL_JIT=ENABLE_FTL_JIT" : "ENABLE_FTL_JIT=ENABLE_FTL_JIT=0");
+
+ sub option($$$)
+ {
+ my ($feature, $isEnabled, $defaultValue) = @_;
+ return "" if $defaultValue == $isEnabled;
+ return $feature . "=" . ($isEnabled ? $feature : "");
+ }
+
+ foreach (@features) {
+ if ($_->{_javascript_}) {
+ my $option = option($_->{define}, ${$_->{value}}, $_->{default});
+ push @options, $option unless $option eq "";
+ }
+ }
+}
+
+sub buildMyProject
+{
+ my ($projectDirectory, $projectName) = @_;
+ my $result;
+ chdir $projectDirectory or die "Can't find $projectName directory to build from";
+ if (isAppleCocoaWebKit()) {
+ my $compilerFlags = 'GCC_PREPROCESSOR_ADDITIONS="';
+ if ($forceCLoop) {
+ $compilerFlags .= "ENABLE_JIT=0 ENABLE_C_LOOP=1";
+ }
+ $compilerFlags .= '"';
+
+ my $extraCommands = "";
+ foreach (@ARGV) {
+ # Ensure that if somebody passes in a flag like `ARCHS="i386 x86_64"` we
+ # maintain the quotes around "i386 x86_64".
+ my $arg = $_;
+ if ($arg =~ m/=/) {
+ $arg =~ s/=/="/;
+ $arg = $arg . "\"";
+ }
+ $extraCommands .= " " . $arg;
+ }
+
+ my $command = "make " . (lc configuration()) . " " . $compilerFlags . " " . $extraCommands;
+
+ print "\n";
+ print "building ", $projectName, "\n";
+ print "running build command '", $command, "' in ", $projectDirectory, "\n\n";
+
+ $result = system $command;
+ } else {
+ die "Building not defined for this platform!\n";
+ }
+ exit exitStatus($result) if exitStatus($result);
+ chdirWebKit();
+}
+
+sub writeCongrats
+{
+ my ($projectName) = @_;
+ my $endTime = time();
+ my $buildTime = formatBuildTime($endTime - $startTime);
+
+ print "\n";
+ print "====================================================================\n";
+ print " " . $projectName . " is now built ($buildTime). \n";
+ print "====================================================================\n";
+}
+
+1;