llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Ian Anderson (ian-twilightcoder) <details> <summary>Changes</summary> The search path prefix is really a property of the SDK, and not the target triple. The target is just being used as a proxy for the SDK. That's problemmatic when the SDK being used doesn't match the target assumption, and the prefix should be taken from the SDK rather than hard coded. The prefix is actually per target triple within an SDK, so make a map from target to prefix in DarwinSDKInfo. That requires making Triple support being used as an unordered_map key. From there, have the DarwinClang tool chain get the prefix from its SDKInfo. --- Patch is 22.94 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/171970.diff 20 Files Affected: - (modified) clang/include/clang/Basic/DarwinSDKInfo.h (+13-1) - (modified) clang/lib/Basic/DarwinSDKInfo.cpp (+49-1) - (modified) clang/lib/Driver/ToolChains/Darwin.cpp (+10-6) - (modified) clang/lib/Driver/ToolChains/Darwin.h (+6) - (added) clang/test/Driver/Inputs/DriverKit21.0.1.sdk/SDKSettings.json (+4) - (modified) clang/test/Driver/Inputs/DriverKit23.0.sdk/SDKSettings.json (+4-1) - (modified) clang/test/Driver/Inputs/MacOSX10.15.versioned.sdk/SDKSettings.json (+14) - (modified) clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json (+5-1) - (modified) clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json (+5-1) - (modified) clang/test/Driver/Inputs/WatchOS6.0.sdk/SDKSettings.json (+4-1) - (modified) clang/test/Driver/Inputs/iPhoneOS13.0.sdk/SDKSettings.json (+4-1) - (modified) clang/test/Driver/driverkit-path.c (+4) - (modified) clang/test/InstallAPI/Inputs/MacOSX13.0.sdk/SDKSettings.json (+18-1) - (modified) clang/test/Sema/Inputs/AppleTVOS15.0.sdk/SDKSettings.json (+8) - (modified) clang/test/Sema/Inputs/MacOSX11.0.sdk/SDKSettings.json (+16-1) - (modified) clang/test/Sema/Inputs/WatchOS7.0.sdk/SDKSettings.json (+8) - (modified) clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json (+3) - (modified) clang/unittests/Basic/DarwinSDKInfoTest.cpp (+32) - (modified) llvm/include/llvm/TargetParser/Triple.h (+10) - (modified) llvm/unittests/TargetParser/TripleTest.cpp (+14) ``````````diff diff --git a/clang/include/clang/Basic/DarwinSDKInfo.h b/clang/include/clang/Basic/DarwinSDKInfo.h index bc122c7d21c72..ffe7be0cefb4a 100644 --- a/clang/include/clang/Basic/DarwinSDKInfo.h +++ b/clang/include/clang/Basic/DarwinSDKInfo.h @@ -16,6 +16,7 @@ #include "llvm/Support/VirtualFileSystem.h" #include "llvm/TargetParser/Triple.h" #include <optional> +#include <unordered_map> namespace llvm { namespace json { @@ -144,18 +145,28 @@ class DarwinSDKInfo { DarwinSDKInfo( VersionTuple Version, VersionTuple MaximumDeploymentTarget, llvm::Triple::OSType OS, + std::unordered_map<llvm::Triple, std::string> SystemPrefixes = + std::unordered_map<llvm::Triple, std::string>(), llvm::DenseMap<OSEnvPair::StorageType, std::optional<RelatedTargetVersionMapping>> VersionMappings = llvm::DenseMap<OSEnvPair::StorageType, std::optional<RelatedTargetVersionMapping>>()) : Version(Version), MaximumDeploymentTarget(MaximumDeploymentTarget), - OS(OS), VersionMappings(std::move(VersionMappings)) {} + OS(OS), SystemPrefixes(SystemPrefixes), + VersionMappings(std::move(VersionMappings)) {} const llvm::VersionTuple &getVersion() const { return Version; } const llvm::Triple::OSType &getOS() const { return OS; } + const StringRef getSystemPrefix(llvm::Triple Triple) const { + auto SystemPrefix = SystemPrefixes.find(Triple); + if (SystemPrefix == SystemPrefixes.end()) + return StringRef(); + return SystemPrefix->second; + } + // Returns the optional, target-specific version mapping that maps from one // target to another target. // @@ -181,6 +192,7 @@ class DarwinSDKInfo { VersionTuple Version; VersionTuple MaximumDeploymentTarget; llvm::Triple::OSType OS; + std::unordered_map<llvm::Triple, std::string> SystemPrefixes; // Need to wrap the value in an optional here as the value has to be default // constructible, and std::unique_ptr doesn't like DarwinSDKInfo being // Optional as Optional is trying to copy it in emplace. diff --git a/clang/lib/Basic/DarwinSDKInfo.cpp b/clang/lib/Basic/DarwinSDKInfo.cpp index 6bcfb9d598377..2d2d0115d52c1 100644 --- a/clang/lib/Basic/DarwinSDKInfo.cpp +++ b/clang/lib/Basic/DarwinSDKInfo.cpp @@ -85,6 +85,52 @@ static llvm::Triple::OSType parseOS(const llvm::json::Object &Obj) { .Default(llvm::Triple::UnknownOS); } +static std::unordered_map<llvm::Triple, std::string> +parseSystemPrefixes(const llvm::json::Object &Obj, llvm::Triple::OSType SDKOS, + VersionTuple Version) { + std::unordered_map<llvm::Triple, std::string> SystemPrefixes; + auto SupportedTargets = Obj.getObject("SupportedTargets"); + if (!SupportedTargets) + return SystemPrefixes; + for (auto SupportedTargetPair : *SupportedTargets) { + StringRef PlatformOrVariant = SupportedTargetPair.getFirst(); + if ((PlatformOrVariant == "iosmac") && (Version < VersionTuple(99))) + // iosmac has an invalid SystemPrefix, skip it. + continue; + + llvm::json::Object *SupportedTarget = + SupportedTargetPair.getSecond().getAsObject(); + auto Archs = SupportedTarget->getArray("Archs"); + auto Vendor = SupportedTarget->getString("LLVMTargetTripleVendor"); + auto OS = SupportedTarget->getString("LLVMTargetTripleSys"); + auto SystemPrefix = SupportedTarget->getString("SystemPrefix"); + if (!SystemPrefix) { + // Older SDKs don't have SystemPrefix in SupportedTargets, manually add + // their prefixes. + if ((SDKOS == llvm::Triple::DriverKit) && (Version < VersionTuple(22, 1))) + SystemPrefix = "/System/DriverKit"; + } + if (!Archs || !Vendor || !OS || !SystemPrefix) + continue; + + auto Environment = + SupportedTarget->getString("LLVMTargetTripleEnvironment"); + + for (auto Arch : *Archs) { + auto ArchString = Arch.getAsString(); + if (!ArchString) + continue; + llvm::Triple Triple; + if (Environment) + Triple = llvm::Triple(*ArchString, *Vendor, *OS, *Environment); + else + Triple = llvm::Triple(*ArchString, *Vendor, *OS); + SystemPrefixes[Triple] = *SystemPrefix; + } + } + return SystemPrefixes; +} + static std::optional<VersionTuple> getVersionKey(const llvm::json::Object &Obj, StringRef Key) { auto Value = Obj.getString(Key); @@ -106,6 +152,8 @@ DarwinSDKInfo::parseDarwinSDKSettingsJSON(const llvm::json::Object *Obj) { if (!MaximumDeploymentVersion) return std::nullopt; llvm::Triple::OSType OS = parseOS(*Obj); + std::unordered_map<llvm::Triple, std::string> SystemPrefixes = + parseSystemPrefixes(*Obj, OS, *Version); llvm::DenseMap<OSEnvPair::StorageType, std::optional<RelatedTargetVersionMapping>> VersionMappings; @@ -149,7 +197,7 @@ DarwinSDKInfo::parseDarwinSDKSettingsJSON(const llvm::json::Object *Obj) { return DarwinSDKInfo(std::move(*Version), std::move(*MaximumDeploymentVersion), OS, - std::move(VersionMappings)); + std::move(SystemPrefixes), std::move(VersionMappings)); } Expected<std::optional<DarwinSDKInfo>> diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index fc3cd9030f71d..a6688df6f395e 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -566,8 +566,6 @@ static void renderRemarksOptions(const ArgList &Args, ArgStringList &CmdArgs, } } -static void AppendPlatformPrefix(SmallString<128> &Path, const llvm::Triple &T); - void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, @@ -801,7 +799,7 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (auto *Sysroot = Args.getLastArg(options::OPT_isysroot)) { auto AddSearchPath = [&](StringRef Flag, StringRef SearchPath) { SmallString<128> P(Sysroot->getValue()); - AppendPlatformPrefix(P, Triple); + getMachOToolChain().AppendPlatformPrefix(P, Triple); llvm::sys::path::append(P, SearchPath); if (getToolChain().getVFS().exists(P)) { CmdArgs.push_back(Args.MakeArgString(Flag + P)); @@ -2609,9 +2607,15 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { // For certain platforms/environments almost all resources (e.g., headers) are // located in sub-directories, e.g., for DriverKit they live in // <SYSROOT>/System/DriverKit/usr/include (instead of <SYSROOT>/usr/include). -static void AppendPlatformPrefix(SmallString<128> &Path, - const llvm::Triple &T) { - if (T.isDriverKit()) { +void DarwinClang::AppendPlatformPrefix(SmallString<128> &Path, + const llvm::Triple &T) const { + if (SDKInfo) { + const StringRef SystemPrefix = SDKInfo->getSystemPrefix(T); + if (!SystemPrefix.empty()) + llvm::sys::path::append(Path, SystemPrefix); + } else if (T.isDriverKit()) { + // The first version of DriverKit didn't have SDKSettings.json, manually add + // its prefix. llvm::sys::path::append(Path, "System", "DriverKit"); } } diff --git a/clang/lib/Driver/ToolChains/Darwin.h b/clang/lib/Driver/ToolChains/Darwin.h index d1cfb6f4a5bf7..c4c52c6a6264b 100644 --- a/clang/lib/Driver/ToolChains/Darwin.h +++ b/clang/lib/Driver/ToolChains/Darwin.h @@ -197,6 +197,9 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { llvm::opt::ArgStringList &CmdArgs) const { } + virtual void AppendPlatformPrefix(SmallString<128> &Path, + const llvm::Triple &T) const {} + /// On some iOS platforms, kernel and kernel modules were built statically. Is /// this such a target? virtual bool isKernelStatic() const { return false; } @@ -670,6 +673,9 @@ class LLVM_LIBRARY_VISIBILITY DarwinClang : public Darwin { void AddLinkARCArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override; + void AppendPlatformPrefix(SmallString<128> &Path, + const llvm::Triple &T) const override; + unsigned GetDefaultDwarfVersion() const override; // Until dtrace (via CTF) and LLDB can deal with distributed debug info, // Darwin defaults to standalone/full debug info. diff --git a/clang/test/Driver/Inputs/DriverKit21.0.1.sdk/SDKSettings.json b/clang/test/Driver/Inputs/DriverKit21.0.1.sdk/SDKSettings.json new file mode 100644 index 0000000000000..f1c42c93057a1 --- /dev/null +++ b/clang/test/Driver/Inputs/DriverKit21.0.1.sdk/SDKSettings.json @@ -0,0 +1,4 @@ +{"Version": "21.0.1", "CanonicalName": "driverkit21.0.1", "MaximumDeploymentTarget": "21.0.1.99", + "SupportedTargets": { + "driverkit": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "driverkit", "LLVMTargetTripleEnvironment": ""} +}} diff --git a/clang/test/Driver/Inputs/DriverKit23.0.sdk/SDKSettings.json b/clang/test/Driver/Inputs/DriverKit23.0.sdk/SDKSettings.json index edee441adb474..9ad5266c2a248 100644 --- a/clang/test/Driver/Inputs/DriverKit23.0.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/DriverKit23.0.sdk/SDKSettings.json @@ -1 +1,4 @@ -{"Version":"23.0", "CanonicalName": "driverkit23.0", "MaximumDeploymentTarget": "23.0.99"} +{"Version":"23.0", "CanonicalName": "driverkit23.0", "MaximumDeploymentTarget": "23.0.99", + "SupportedTargets": { + "driverkit": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "driverkit", "LLVMTargetTripleEnvironment": "", "SystemPrefix": "\/System\/DriverKit"} +}} diff --git a/clang/test/Driver/Inputs/MacOSX10.15.versioned.sdk/SDKSettings.json b/clang/test/Driver/Inputs/MacOSX10.15.versioned.sdk/SDKSettings.json index 7325cc45a2808..c3b46502069ba 100644 --- a/clang/test/Driver/Inputs/MacOSX10.15.versioned.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/MacOSX10.15.versioned.sdk/SDKSettings.json @@ -2,6 +2,20 @@ "Version":"10.15", "CanonicalName": "macosx10.15", "MaximumDeploymentTarget": "10.15.99", + "SupportedTargets": { + "macosx": { + "Archs": ["x86_64"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "macosx", + "LLVMTargetTripleEnvironment": "" + }, + "iosmac": { + "Archs": ["x86_64"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "ios", + "LLVMTargetTripleEnvironment": "macabi" + } + }, "VersionMap" : { "macOS_iOSMac" : { "10.15" : "13.1", diff --git a/clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json b/clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json index 81d5ee28a5a05..e7c691dd80307 100644 --- a/clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json @@ -1 +1,5 @@ -{"Version":"15.0", "CanonicalName": "macosx15.0", "MaximumDeploymentTarget": "15.0.99"} +{"Version":"15.0", "CanonicalName": "macosx15.0", "MaximumDeploymentTarget": "15.0.99", + "SupportedTargets": { + "macosx": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "macos", "LLVMTargetTripleEnvironment": "", "SystemPrefix": ""}, + "iosmac": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "ios", "LLVMTargetTripleEnvironment": "macabi", "SystemPrefix": "\/System\/iOSSupport"} +}} diff --git a/clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json b/clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json index 956cbe4041b9a..c42e903255296 100644 --- a/clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json @@ -1 +1,5 @@ -{"Version":"15.1", "CanonicalName": "macosx15.1", "MaximumDeploymentTarget": "15.1.99"} +{"Version":"15.1", "CanonicalName": "macosx15.1", "MaximumDeploymentTarget": "15.1.99", + "SupportedTargets": { + "macosx": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "macos", "LLVMTargetTripleEnvironment": "", "SystemPrefix": ""}, + "iosmac": {"Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "ios", "LLVMTargetTripleEnvironment": "macabi", "SystemPrefix": "\/System\/iOSSupport"} +}} diff --git a/clang/test/Driver/Inputs/WatchOS6.0.sdk/SDKSettings.json b/clang/test/Driver/Inputs/WatchOS6.0.sdk/SDKSettings.json index 314fc22edf7eb..3e2f817ac1406 100644 --- a/clang/test/Driver/Inputs/WatchOS6.0.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/WatchOS6.0.sdk/SDKSettings.json @@ -1 +1,4 @@ -{"Version":"6.0", "CanonicalName": "watchos6.0", "MaximumDeploymentTarget": "6.0.99"} +{"Version":"6.0", "CanonicalName": "watchos6.0", "MaximumDeploymentTarget": "6.0.99", + "SupportedTargets": { + "watchos": {"Archs": ["armv7k", "arm64_32"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "watchos", "LLVMTargetTripleEnvironment": ""} +}} diff --git a/clang/test/Driver/Inputs/iPhoneOS13.0.sdk/SDKSettings.json b/clang/test/Driver/Inputs/iPhoneOS13.0.sdk/SDKSettings.json index c122cf47ce0f7..91cb1fa501b3b 100644 --- a/clang/test/Driver/Inputs/iPhoneOS13.0.sdk/SDKSettings.json +++ b/clang/test/Driver/Inputs/iPhoneOS13.0.sdk/SDKSettings.json @@ -1 +1,4 @@ -{"Version":"13.0", "CanonicalName": "iphoneos13.0", "MaximumDeploymentTarget": "13.0.99"} +{"Version":"13.0", "CanonicalName": "iphoneos13.0", "MaximumDeploymentTarget": "13.0.99", + "SupportedTargets": { + "iphoneos": {"Archs": ["armv7", "armv7s", "arm64"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "ios", "LLVMTargetTripleEnvironment": ""} +}} diff --git a/clang/test/Driver/driverkit-path.c b/clang/test/Driver/driverkit-path.c index 32f0a6721ab77..bc96201753165 100644 --- a/clang/test/Driver/driverkit-path.c +++ b/clang/test/Driver/driverkit-path.c @@ -26,6 +26,10 @@ int main() { return 0; } // RUN: %clang %s -target x86_64-apple-driverkit19.0 -isysroot %S/Inputs/DriverKit19.0.sdk -x c++ -### 2>&1 \ // RUN: | FileCheck %s -DSDKROOT=%S/Inputs/DriverKit19.0.sdk --check-prefix=INC +// RUN: %clang %s -target x86_64-apple-driverkit21.0.1 -isysroot %S/Inputs/DriverKit21.0.1.sdk -x c++ -### 2>&1 \ +// RUN: | FileCheck %s -DSDKROOT=%S/Inputs/DriverKit21.0.1.sdk --check-prefix=INC +// RUN: %clang %s -target x86_64-apple-driverkit23.0 -isysroot %S/Inputs/DriverKit23.0.sdk -x c++ -### 2>&1 \ +// RUN: | FileCheck %s -DSDKROOT=%S/Inputs/DriverKit23.0.sdk --check-prefix=INC // // INC: "-isysroot" "[[SDKROOT]]" // INC: "-internal-isystem" "[[SDKROOT]]/System/DriverKit/usr/local/include" diff --git a/clang/test/InstallAPI/Inputs/MacOSX13.0.sdk/SDKSettings.json b/clang/test/InstallAPI/Inputs/MacOSX13.0.sdk/SDKSettings.json index d08288ed1af10..563d17cfface9 100644 --- a/clang/test/InstallAPI/Inputs/MacOSX13.0.sdk/SDKSettings.json +++ b/clang/test/InstallAPI/Inputs/MacOSX13.0.sdk/SDKSettings.json @@ -3,7 +3,24 @@ "Version": "13.0", "CanonicalName": "macosx13.0", "MaximumDeploymentTarget": "13.0.99", - "PropertyConditionFallbackNames": [], "VersionMap": { + "PropertyConditionFallbackNames": [], + "SupportedTargets": { + "macosx": { + "Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "macos", + "LLVMTargetTripleEnvironment": "", + "SystemPrefix": "" + }, + "iosmac": { + "Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "ios", + "LLVMTargetTripleEnvironment": "macabi", + "SystemPrefix": "\/System\/iOSSupport" + } + }, + "VersionMap": { "iOSMac_macOS": { "16.1": "13.0", "15.0": "12.0", diff --git a/clang/test/Sema/Inputs/AppleTVOS15.0.sdk/SDKSettings.json b/clang/test/Sema/Inputs/AppleTVOS15.0.sdk/SDKSettings.json index 6cd02f33471ed..1c74c27e48b96 100644 --- a/clang/test/Sema/Inputs/AppleTVOS15.0.sdk/SDKSettings.json +++ b/clang/test/Sema/Inputs/AppleTVOS15.0.sdk/SDKSettings.json @@ -4,6 +4,14 @@ "CanonicalName": "appletvos15.0", "MaximumDeploymentTarget": "15.0.99", "PropertyConditionFallbackNames": [], + "SupportedTargets": { + "appletvos": { + "Archs": ["arm64e", "arm64"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "tvos", + "LLVMTargetTripleEnvironment": "" + } + }, "VersionMap": { "iOS_tvOS": { "10.0": "10.0", diff --git a/clang/test/Sema/Inputs/MacOSX11.0.sdk/SDKSettings.json b/clang/test/Sema/Inputs/MacOSX11.0.sdk/SDKSettings.json index e6220abfbe573..fbb8fa69edf5f 100644 --- a/clang/test/Sema/Inputs/MacOSX11.0.sdk/SDKSettings.json +++ b/clang/test/Sema/Inputs/MacOSX11.0.sdk/SDKSettings.json @@ -3,7 +3,22 @@ "Version": "11.0", "CanonicalName": "macosx11.0", "MaximumDeploymentTarget": "11.0.99", - "PropertyConditionFallbackNames": [], "VersionMap": { + "PropertyConditionFallbackNames": [], + "SupportedTargets": { + "macosx": { + "Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "macosx", + "LLVMTargetTripleEnvironment": "" + }, + "iosmac": { + "Archs": ["x86_64", "x86_64h", "arm64", "arm64e"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "ios", + "LLVMTargetTripleEnvironment": "macabi" + } + }, + "VersionMap": { "iOSMac_macOS": { "13.2": "10.15.1", "13.4": "10.15.4", diff --git a/clang/test/Sema/Inputs/WatchOS7.0.sdk/SDKSettings.json b/clang/test/Sema/Inputs/WatchOS7.0.sdk/SDKSettings.json index 84914c105749a..4481ec7ddefd4 100644 --- a/clang/test/Sema/Inputs/WatchOS7.0.sdk/SDKSettings.json +++ b/clang/test/Sema/Inputs/WatchOS7.0.sdk/SDKSettings.json @@ -4,6 +4,14 @@ "CanonicalName": "watchos7.0", "MaximumDeploymentTarget": "7.0.99", "PropertyConditionFallbackNames": [], + "SupportedTargets": { + "watchos": { + "Archs": ["arm64_32", "armv7k"], + "LLVMTargetTripleVendor": "apple", + "LLVMTargetTripleSys": "watchos", + "LLVMTargetTripleEnvironment": "" + } + }, "VersionMap": { "iOS_watchOS": { "10.0": "3.0", diff --git a/clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json b/clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json index a56a7d61431b9..ccae54bcff48c 100644 --- a/clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json +++ b/clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json @@ -3,6 +3,9 @@ "Version": "26.0", "CanonicalName": "xros26.0", "MaximumDeploymentTarget": "26.0.99", + "SupportedTargets": { + "xros": {"Archs": ["arm64e", "arm64"], "LLVMTargetTripleVendor": "apple", "LLVMTargetTripleSys": "xros", "LLVMTargetTripleEnvironment": "", "SystemPrefix": ""} + }, "VersionMap": { "iOS_xrOS":{"15.0":"1.0", "16.0":"2.0", "19.0":"26.0", "26.0":"26.0"} } diff --git a/clang/unittests/Basic/DarwinSDKInfoTest.cpp b/clang/unittests/Basic/DarwinSDKInfoTest.cpp index 7214f3bc8e19f..b30ff042c28fd 100644 --- a/clang/unittests/Basic/DarwinSDKInfoTest.cpp +++ b/clang/unittests/Basic/DarwinSDKInfoTest.cpp @@ -78,6 +78,38 @@ TEST(DarwinSDKInfo, VersionMappingParseError) { .has_value()); } +TEST(DarwinSDKInfo, SystemPrefix) { + llvm::json::Object SDKSettings( + {{"Version", "26.0"}, {"MaximumDeploymentTarget", "26.0.99"}}); + llvm::json::Object SupportedTargets; + llvm::json::Object MacOS({{"Archs", {"x86_64", "arm64"}}, + {"LLVMTargetTripleVendor", "apple"}, + {"LLVMTargetTripleSys", "macos"}, + {"LLVMTargetTripleEnvironment", ""}, + {"SystemPrefix", ""}}); + llvm::json::Object MacCatalyst({{"Archs", {"x86_64", "arm64"}}, + {"LLVMTargetTripleVendor", "apple"}, + {"LLVMTargetTripleSys", "ios"}, + {"LLVMTargetTripleEnvironment", "macabi"}, + ... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/171970 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
