Title: [291575] trunk/Tools
Revision
291575
Author
mmaxfi...@apple.com
Date
2022-03-21 12:21:59 -0700 (Mon, 21 Mar 2022)

Log Message

[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):

Modified Paths

Added Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to