[Win] build-jsc and run-javascriptcore-tests do not work
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Oct 2015 17:05:58 +0000 (17:05 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Oct 2015 17:05:58 +0000 (17:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150700

Reviewed by Mark Lam.

Correct our build system so that it expects Windows to be using CMake,
and to build the correct sub-projects for our JSC helper scripts.

* Scripts/build-jsc: Make sure to build the testapi harness when
  building for Windows.
* Scripts/build-webkit:
  (1) Use the existing 'cmakeBasedPortName()'
  (2) Use File::Spec rather than hard-coding path delimeters.
  (3) Refer to Visual Studio 14.0, rather than the unsupported 12.0.
method rather than hard-coding the name based on conditional.
* Scripts/copy-webkitlibraries-to-product-directory: Don't try to grab
  LLVM libraries on Apple Windows build.
* Scripts/run-javascriptcore-tests:
(testapiPath): Use File::Spec rather than hard-coding path delimeters.
* Scripts/run-jsc: Ditto.
* Scripts/webkitdirs.pm:
(cmakeBasedPortName): Update to return the right value for the Apple
Windows port and the WinCairo port.
(isCMakeBuild): Expect CMake build for all Windows ports.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191793 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/build-jsc
Tools/Scripts/build-webkit
Tools/Scripts/copy-webkitlibraries-to-product-directory
Tools/Scripts/run-javascriptcore-tests
Tools/Scripts/run-jsc
Tools/Scripts/webkitdirs.pm

index 2bc7acf7300f88c8293e507679cc938c07cc225c..cf0e7f156604217bcab0181d7267254bba44da59 100644 (file)
@@ -1,3 +1,30 @@
+2015-10-30  Brent Fulgham  <bfulgham@apple.com>
+
+        [Win] build-jsc and run-javascriptcore-tests do not work
+        https://bugs.webkit.org/show_bug.cgi?id=150700
+
+        Reviewed by Mark Lam.
+        
+        Correct our build system so that it expects Windows to be using CMake,
+        and to build the correct sub-projects for our JSC helper scripts.
+
+        * Scripts/build-jsc: Make sure to build the testapi harness when
+          building for Windows.
+        * Scripts/build-webkit:
+          (1) Use the existing 'cmakeBasedPortName()'
+          (2) Use File::Spec rather than hard-coding path delimeters.
+          (3) Refer to Visual Studio 14.0, rather than the unsupported 12.0.
+        method rather than hard-coding the name based on conditional.
+        * Scripts/copy-webkitlibraries-to-product-directory: Don't try to grab
+          LLVM libraries on Apple Windows build.
+        * Scripts/run-javascriptcore-tests:
+        (testapiPath): Use File::Spec rather than hard-coding path delimeters.
+        * Scripts/run-jsc: Ditto.
+        * Scripts/webkitdirs.pm:
+        (cmakeBasedPortName): Update to return the right value for the Apple
+        Windows port and the WinCairo port.
+        (isCMakeBuild): Expect CMake build for all Windows ports.
+
 2015-10-30  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [JHBuild] Do not try to update the dependencies if jhbuild configuration hasn't changed
index f0bccb1261041c6573e8c4c5dc2a3d0ab8fd0c6b..f476b70c34a831a6decedadb573ecf170b3c9126 100755 (executable)
@@ -82,6 +82,10 @@ if ($showHelp) {
    exit 1;
 }
 
+if (isAppleWinWebKit()) {
+    $ftlJIT = 0;
+}
+
 checkRequiredSystemConfig();
 setConfiguration();
 chdirWebKit();
@@ -97,11 +101,18 @@ if ($forceCLoop) {
 if (isCMakeBuild()) {
     $cmakeArgs .= $forceCLoop ? " -DENABLE_JIT=OFF" : " -DENABLE_JIT=ON";
     $cmakeArgs .= $ftlJIT ? " -DENABLE_FTL_JIT=ON" : " -DENABLE_FTL_JIT=OFF";
-    # By default we build using all of the available CPUs
-    $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
+
+    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 $makeArgs";
+    } elsif (canUseNinja()) {
+        $buildTarget .= "jsc testapi";
+    }
 
     # This call only returns if nothing wrong happened
-    buildCMakeProjectOrExit(0, cmakeBasedPortName(), undef, "jsc $makeArgs", (cmakeBasedPortArguments(), $cmakeArgs));
+    buildCMakeProjectOrExit(0, cmakeBasedPortName(), undef, $buildTarget, (cmakeBasedPortArguments(), $cmakeArgs));
     writeCongrats();
     exit exitStatus(0);
 }
index eca5ca1efdb52b8c8d6eae57dbc677cdba0f4c3b..eb36b79165211832883df93b4276f37e7651a0a7 100755 (executable)
@@ -234,7 +234,7 @@ if (isInspectorFrontend()) {
     @projects = ("Source/WebInspectorUI");
 }
 
-if (isCMakeBuild()) {
+if (isCMakeBuild() && !isAnyWindows()) {
 
     # By default we build using all of the available CPUs.
     $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
@@ -252,15 +252,15 @@ if (isCMakeBuild()) {
 my $baseProductDir = baseProductDir();
 if (isAppleWinWebKit() || isWinCairo()) {
     chdirWebKit();
-    if (exitStatus(generateBuildSystemFromCMakeProject(isWinCairo() ? "WinCairo" : "AppleWin"))) {
-        die "Run \"C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/vcvarsall.bat\" before build-webkit when using ninja";
+    if (exitStatus(generateBuildSystemFromCMakeProject(cmakeBasedPortName()))) {
+        die "Run \"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat\" before build-webkit when using ninja";
     }
     chdirWebKit();
     if (canUseNinja()) {
-        chdir "WebKitBuild/" . configuration();
+        chdir File::Spec->catdir("WebKitBuild", configuration());
         $result = system("ninja");
     } else {
-        $result = buildVisualStudioProject("WebKitBuild/" . configuration() . "/WebKit.sln", $clean);
+        $result = buildVisualStudioProject(File::Spec->catfile("WebKitBuild", configuration(), "WebKit.sln"), $clean);
     }
     if (exitStatus($result)) {
         my $scriptDir = relativeScriptsDir();
index 44a290fa2af713667b55389be549f0373293dcaf..89d535e199acbe23f47d96c02edfc71400edce0b 100755 (executable)
@@ -93,7 +93,7 @@ if ($productDir) {
     $productDir = $ENV{BUILT_PRODUCTS_DIR} || productDir();
 }
 
-if (!isIOSWebKit() && !$osxVersion) {
+if (!isIOSWebKit() && !$osxVersion &&!isAnyWindows()) {
     $osxVersion = `sw_vers -productVersion | cut -d. -f-2`;
     chomp($osxVersion);
 }
index b87418b66ebece5390cc30b03eb2bd933c09bf64..4ba3ad1abd4934c92a6ae25934b3e1aaf41cb44d 100755 (executable)
@@ -145,7 +145,7 @@ if (!defined($root) && $buildJSC) {
     push(@buildArgs, argumentsForConfiguration());
 
     print "Running: build-jsc " . join(" ", @buildArgs) . "\n";
-    my $buildResult = system "perl", "Tools/Scripts/build-jsc", @buildArgs;
+    my $buildResult = system "perl", File::Spec->catfile("Tools", "Scripts", "build-jsc"), @buildArgs;
     if ($buildResult) {
         print STDERR "Compiling jsc failed!\n";
         exit exitStatus($buildResult);
@@ -171,7 +171,7 @@ sub testapiPath($)
     my ($productDir) = @_;
     my $jscName = "testapi";
     $jscName .= "_debug" if configuration() eq "Debug_All";
-    return "$productDir/$jscName";
+    return File::Spec->catfile($productDir, $jscName);
 }
 
 #run api tests
index 15050bb4a5da0bdb04dce468105caedbe99a38f5..8441a296b1f49df028ef28fb9edad96859d74fc5 100755 (executable)
@@ -44,7 +44,7 @@ GetOptions("count|c=i" => \$count);
 
 setConfiguration();
 
-my $jsc = jscProductDir() . "/jsc @ARGV";
+my $jsc = File::Spec->catfile(jscProductDir(), "jsc ") . "@ARGV";
 
 my $dyld = jscProductDir();
 
index 4639926f9bc0e5f83379ec8ed24b5deba3e5b09e..b61de8cc75ae14eb919c31be81bd24213f195fb5 100755 (executable)
@@ -253,7 +253,7 @@ sub determineBaseProductDir
     }
 
     if (!defined($baseProductDir)) { # Port-specific checks failed, use default
-        $baseProductDir = "$sourceDir/WebKitBuild";
+        $baseProductDir = File::Spec->catdir($sourceDir, "WebKitBuild");
     }
 
     if (isGit() && isGitBranchBuild()) {
@@ -277,7 +277,7 @@ sub determineBaseProductDir
         $ENV{"WEBKIT_OUTPUTDIR"} = $dosBuildPath;
         my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`;
         chomp $unixBuildPath;
-        $baseProductDir = $unixBuildPath;
+        $baseProductDir = $dosBuildPath;
     }
 }
 
@@ -1994,7 +1994,6 @@ sub buildCMakeGeneratedProject($)
     # parsed for shell metacharacters. In particular, $makeArgs may contain such metacharacters.
     my $wrapper = join(" ", wrapperPrefixIfNeeded()) . " ";
     return system($wrapper . "$command @args");
-
 }
 
 sub cleanCMakeGeneratedProject()
@@ -2040,6 +2039,8 @@ sub cmakeBasedPortName()
     return "Efl" if isEfl();
     return "GTK" if isGtk();
     return "Mac" if isAppleMacWebKit();
+    return "WinCairo" if isWinCairo();
+    return "AppleWin" if isAppleWinWebKit();
     return "";
 }
 
@@ -2051,7 +2052,7 @@ sub determineIsCMakeBuild()
 
 sub isCMakeBuild()
 {
-    if (isEfl() || isGtk()) {
+    if (isEfl() || isGtk() || isAnyWindows()) {
         return 1;
     }
     determineIsCMakeBuild();