[Windows] Identify proper run environment for scripts.
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 May 2013 00:15:30 +0000 (00:15 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 May 2013 00:15:30 +0000 (00:15 +0000)
https://bugs.webkit.org/show_bug.cgi?id=116114

Reviewed by David Kilzer.

Determine (based on Visual Studio version) which path to use for
executables (bin versus bin32).

* Scripts/webkitdirs.pm:
(determineVisualStudioInstallDir): Added.
(determineVisualStudioVersion): Added.
(determineConfigurationProductDir): Modified to choose proper bin
or bin32 directory.
(visualStudioVersion): Added
(setupCygwinEnv): Modified to use new determineVisualStudioInstallDir

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

Tools/ChangeLog
Tools/Scripts/webkitdirs.pm

index e6c6841..fdb4034 100644 (file)
@@ -1,3 +1,21 @@
+2013-05-14  Brent Fulgham  <bfulgham@apple.com>
+
+        [Windows] Identify proper run environment for scripts.
+        https://bugs.webkit.org/show_bug.cgi?id=116114
+
+        Reviewed by David Kilzer.
+
+        Determine (based on Visual Studio version) which path to use for
+        executables (bin versus bin32).
+
+        * Scripts/webkitdirs.pm:
+        (determineVisualStudioInstallDir): Added.
+        (determineVisualStudioVersion): Added.
+        (determineConfigurationProductDir): Modified to choose proper bin
+        or bin32 directory.
+        (visualStudioVersion): Added
+        (setupCygwinEnv): Modified to use new determineVisualStudioInstallDir
+
 2013-05-14  Alexey Proskuryakov  <ap@apple.com>
 
         [Mac] Add tests for secure event input
index a616f28..23d3eab 100755 (executable)
@@ -104,7 +104,10 @@ my $shouldUseGuardMalloc;
 my $xcodeVersion;
 
 # Variables for Win32 support
+my $programFilesPath;
 my $vcBuildPath;
+my $vsInstallDir;
+my $vsVersion;
 my $windowsSourceDir;
 my $winVersion;
 my $willUseVCExpressWhenBuilding = 0;
@@ -411,6 +414,41 @@ sub xcodeSDK
     return $xcodeSDK;
 }
 
+sub programFilesPath
+{
+    return $programFilesPath if defined $programFilesPath;
+
+    $programFilesPath = $ENV{'PROGRAMFILES(X86)'} || $ENV{'PROGRAMFILES'} || "C:\\Program Files";
+
+    return $programFilesPath;
+}
+
+sub visualStudioInstallDir
+{
+    return $vsInstallDir if defined $vsInstallDir;
+
+    if ($ENV{'VSINSTALLDIR'}) {
+        $vsInstallDir = $ENV{'VSINSTALLDIR'};
+        $vsInstallDir =~ s|[\\/]$||;
+    } else {
+        $vsInstallDir = File::Spec->catdir(programFilesPath(), "Microsoft Visual Studio 8");
+    }
+    chomp($vsInstallDir = `cygpath "$vsInstallDir"`) if isCygwin();
+
+    return $vsInstallDir;
+}
+
+sub visualStudioVersion
+{
+    return $vsVersion if defined $vsVersion;
+
+    my $installDir = visualStudioInstallDir();
+
+    $vsVersion = ($installDir =~ /Microsoft Visual Studio ([0-9]+\.[0-9]*)/) ? $1 : "8";
+
+    return $vsVersion;
+}
+
 sub determineConfigurationForVisualStudio
 {
     return if defined $configurationForVisualStudio;
@@ -434,7 +472,8 @@ sub determineConfigurationProductDir
     determineBaseProductDir();
     determineConfiguration();
     if (isAppleWinWebKit()) {
-        $configurationProductDir = File::Spec->catdir($baseProductDir, configurationForVisualStudio(), "bin");
+        my $binDir = (visualStudioVersion() eq "8") ? "bin" : "bin32";
+        $configurationProductDir = File::Spec->catdir($baseProductDir, configurationForVisualStudio(), $binDir);
     } else {
         if (usesPerConfigurationBuildDirectory()) {
             $configurationProductDir = "$baseProductDir";
@@ -1591,22 +1630,15 @@ sub setupCygwinEnv()
     return if !isCygwin() && !isWindows();
     return if $vcBuildPath;
 
-    my $vsInstallDir;
-    my $programFilesPath = $ENV{'PROGRAMFILES(X86)'} || $ENV{'PROGRAMFILES'} || "C:\\Program Files";
-    if ($ENV{'VSINSTALLDIR'}) {
-        $vsInstallDir = $ENV{'VSINSTALLDIR'};
-    } else {
-        $vsInstallDir = File::Spec->catdir($programFilesPath, "Microsoft Visual Studio 8");
-    }
-    chomp($vsInstallDir = `cygpath "$vsInstallDir"`) if isCygwin();
-    $vcBuildPath = File::Spec->catfile($vsInstallDir, qw(Common7 IDE devenv.com));
+    my $programFilesPath = programFilesPath();
+    $vcBuildPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.com));
     if (-e $vcBuildPath) {
         # Visual Studio is installed; we can use pdevenv to build.
         # FIXME: Make pdevenv work with non-Cygwin Perl.
         $vcBuildPath = File::Spec->catfile(sourceDir(), qw(Tools Scripts pdevenv)) if isCygwin();
     } else {
         # Visual Studio not found, try VC++ Express
-        $vcBuildPath = File::Spec->catfile($vsInstallDir, qw(Common7 IDE VCExpress.exe));
+        $vcBuildPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE VCExpress.exe));
         if (! -e $vcBuildPath) {
             print "*************************************************************\n";
             print "Cannot find '$vcBuildPath'\n";