Support MacCatalyst in run-webkit-app
https://bugs.webkit.org/show_bug.cgi?id=199690

Reviewed by Tim Horton.

Add a --maccatalyst option to run-webkit-app that
can launch MacCatalyst applications with a built WebKit.

* Scripts/webkitdirs.pm:
(argumentsForConfiguration):
(determineXcodeSDK):
(xcodeSDKPlatformName):
(determineConfigurationProductDir):
(determinePortName):
(isCatalystWebKit):
(isAppleCocoaWebKit):
(willUseCatalystSDK):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@247336 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index bba971f..7f92677 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,23 @@
+2019-07-10  Dean Jackson  <dino@apple.com>
+
+        Support MacCatalyst in run-webkit-app
+        https://bugs.webkit.org/show_bug.cgi?id=199690
+
+        Reviewed by Tim Horton.
+
+        Add a --maccatalyst option to run-webkit-app that
+        can launch MacCatalyst applications with a built WebKit.
+
+        * Scripts/webkitdirs.pm:
+        (argumentsForConfiguration):
+        (determineXcodeSDK):
+        (xcodeSDKPlatformName):
+        (determineConfigurationProductDir):
+        (determinePortName):
+        (isCatalystWebKit):
+        (isAppleCocoaWebKit):
+        (willUseCatalystSDK):
+
 2019-07-10  Ryan Haddad  <ryanhaddad@apple.com>
 
         [MacOS] Filter VPA info logged to stdout
diff --git a/Tools/Scripts/webkitdirs.pm b/Tools/Scripts/webkitdirs.pm
index b2fafd7..1374b4b 100755
--- a/Tools/Scripts/webkitdirs.pm
+++ b/Tools/Scripts/webkitdirs.pm
@@ -109,6 +109,7 @@
     tvOS        => "tvOS",
     watchOS     => "watchOS",
     Mac         => "Mac",
+    MacCatalyst => "MacCatalyst",
     JSCOnly     => "JSCOnly",
     PlayStation => "PlayStation",
     WinCairo    => "WinCairo",
@@ -489,6 +490,7 @@
     push(@args, '--release') if ($configuration =~ "^Release");
     push(@args, '--ios-device') if (defined $xcodeSDK && $xcodeSDK =~ /^iphoneos/);
     push(@args, '--ios-simulator') if (defined $xcodeSDK && $xcodeSDK =~ /^iphonesimulator/);
+    push(@args, '--maccatalyst') if (defined $xcodeSDK && $xcodeSDK =~ /^maccatalyst/);
     push(@args, '--32-bit') if ($architecture eq "x86" and !isWin64());
     push(@args, '--64-bit') if (isWin64());
     push(@args, '--gtk') if isGtk();
@@ -574,6 +576,9 @@
     if (checkForArgumentAndRemoveFromARGV("--watchos-simulator")) {
         $xcodeSDK ||= "watchsimulator";
     }
+    if (checkForArgumentAndRemoveFromARGV("--maccatalyst")) {
+        $xcodeSDK ||= "maccatalyst";
+    }
     return if !defined $xcodeSDK;
     
     # Prefer the internal version of an sdk, if it exists.
@@ -609,6 +614,7 @@
     return "macosx" if $xcodeSDK =~ /macosx/i;
     return "watchos" if $xcodeSDK =~ /watchos/i;
     return "watchsimulator" if $xcodeSDK =~ /watchsimulator/i;
+    return "maccatalyst" if $xcodeSDK =~ /maccatalyst/i;
     die "Couldn't determine platform name from Xcode SDK";
 }
 
@@ -720,7 +726,7 @@
             $configurationProductDir = "$baseProductDir";
         } else {
             $configurationProductDir = "$baseProductDir/$configuration";
-            $configurationProductDir .= "-" . xcodeSDKPlatformName() if isEmbeddedWebKit();
+            $configurationProductDir .= "-" . xcodeSDKPlatformName() if isEmbeddedWebKit() || isMacCatalystWebKit();
         }
     }
 }
@@ -1187,6 +1193,8 @@
             $portName = tvOS;
         } elsif (willUseWatchDeviceSDK() || willUseWatchSimulatorSDK()) {
             $portName = watchOS;
+        } elsif (willUseMacCatalystSDK()) {
+            $portName = MacCatalyst;
         } else {
             $portName = Mac;
         }
@@ -1416,9 +1424,14 @@
     return portName() eq Mac;
 }
 
+sub isMacCatalystWebKit()
+{
+    return portName() eq MacCatalyst;
+}
+
 sub isAppleCocoaWebKit()
 {
-    return isAppleMacWebKit() || isEmbeddedWebKit();
+    return isAppleMacWebKit() || isEmbeddedWebKit() || isMacCatalystWebKit();
 }
 
 sub isAppleWinWebKit()
@@ -1504,6 +1517,11 @@
     return xcodeSDKPlatformName() eq "watchsimulator";
 }
 
+sub willUseMacCatalystSDK()
+{
+    return xcodeSDKPlatformName() eq "maccatalyst";
+}
+
 sub determineNmPath()
 {
     return if $nmPath;