Title: [103659] trunk/Tools
Revision
103659
Author
[email protected]
Date
2011-12-24 11:30:08 -0800 (Sat, 24 Dec 2011)

Log Message

Make build-webkit aware of additional Xcode build location defaults.

Reviewed by Anders Carlsson.

* Scripts/webkitdirs.pm:
(determineXcodeVersion): Added. This was previously in determineBaseProductDir().
(readXcodeUserDefault): Added. Factored out from determineBaseProductDir().
(determineBaseProductDir): Changed to check for a custom build location
style specified as an absolute location.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (103658 => 103659)


--- trunk/Tools/ChangeLog	2011-12-24 19:26:09 UTC (rev 103658)
+++ trunk/Tools/ChangeLog	2011-12-24 19:30:08 UTC (rev 103659)
@@ -1,3 +1,15 @@
+2011-12-24  Dan Bernstein  <[email protected]>
+
+        Make build-webkit aware of additional Xcode build location defaults.
+
+        Reviewed by Anders Carlsson.
+
+        * Scripts/webkitdirs.pm:
+        (determineXcodeVersion): Added. This was previously in determineBaseProductDir().
+        (readXcodeUserDefault): Added. Factored out from determineBaseProductDir().
+        (determineBaseProductDir): Changed to check for a custom build location
+        style specified as an absolute location.
+
 2011-12-24  Ryosuke Niwa  <[email protected]>
 
         Unreviewed, rolling out r103619.

Modified: trunk/Tools/Scripts/webkitdirs.pm (103658 => 103659)


--- trunk/Tools/Scripts/webkitdirs.pm	2011-12-24 19:26:09 UTC (rev 103658)
+++ trunk/Tools/Scripts/webkitdirs.pm	2011-12-24 19:30:08 UTC (rev 103659)
@@ -98,6 +98,7 @@
 my $forceChromiumUpdate;
 my $isInspectorFrontend;
 my $isWK2;
+my $xcodeVersion;
 
 # Variables for Win32 support
 my $vcBuildPath;
@@ -146,6 +147,30 @@
     ($sourceDir) = @_;
 }
 
+sub determineXcodeVersion
+{
+    return if defined $xcodeVersion;
+    my $xcodebuildVersionOutput = `xcodebuild -version`;
+    $xcodeVersion = ($xcodebuildVersionOutput =~ /Xcode ([0-9](\.[0-9]+)*)/) ? $1 : "3.0";
+}
+
+sub readXcodeUserDefault($)
+{
+    my ($unprefixedKey) = @_;
+
+    determineXcodeVersion();
+
+    my $xcodeDefaultsDomain = (eval "v$xcodeVersion" lt v4) ? "com.apple.Xcode" : "com.apple.dt.Xcode";
+    my $xcodeDefaultsPrefix = (eval "v$xcodeVersion" lt v4) ? "PBX" : "IDE";
+    my $devnull = File::Spec->devnull();
+
+    my $value = `defaults read $xcodeDefaultsDomain ${xcodeDefaultsPrefix}${unprefixedKey} 2> ${devnull}`;
+    return if $?;
+
+    chomp $value;
+    return $value;
+}
+
 sub determineBaseProductDir
 {
     return if defined $baseProductDir;
@@ -164,16 +189,21 @@
             unlink($personalPlistFile) || die "Could not delete $personalPlistFile: $!";
         }
 
-        my $xcodebuildVersionOutput = `xcodebuild -version`;
-        my $xcodeVersion = ($xcodebuildVersionOutput =~ /Xcode ([0-9](\.[0-9]+)*)/) ? $1 : "3.0";
-        my $xcodeDefaultsDomain = (eval "v$xcodeVersion" lt v4) ? "com.apple.Xcode" : "com.apple.dt.Xcode";
-        my $xcodeDefaultsPrefix = (eval "v$xcodeVersion" lt v4) ? "PBX" : "IDE";
+        determineXcodeVersion();
 
-        open PRODUCT, "defaults read $xcodeDefaultsDomain ${xcodeDefaultsPrefix}ApplicationwideBuildSettings 2> " . File::Spec->devnull() . " |" or die;
-        $baseProductDir = join '', <PRODUCT>;
-        close PRODUCT;
+        if (eval "v$xcodeVersion" ge v4) {
+            my $buildLocationStyle = join '', readXcodeUserDefault("BuildLocationStyle");
+            if ($buildLocationStyle eq "Custom") {
+                my $buildLocationType = join '', readXcodeUserDefault("CustomBuildLocationType");
+                $baseProductDir = readXcodeUserDefault("CustomBuildProductsPath") if $buildLocationType eq "Absolute";
+            }
+        }
 
-        $baseProductDir = $1 if $baseProductDir =~ /SYMROOT\s*=\s*\"(.*?)\";/s;
+        if (!defined($baseProductDir)) {
+            $baseProductDir = join '', readXcodeUserDefault("ApplicationwideBuildSettings");
+            $baseProductDir = $1 if $baseProductDir =~ /SYMROOT\s*=\s*\"(.*?)\";/s;
+        }
+
         undef $baseProductDir unless $baseProductDir =~ /^\//;
     } elsif (isChromium()) {
         if (isLinux() || isChromiumAndroid() || isChromiumMacMake()) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to