diff -ur llvm-project-apple-stable-20191106/clang/lib/Driver/ToolChains/Darwin.cpp llvm-project-apple-stable-20191106+iOS/clang/lib/Driver/ToolChains/Darwin.cpp --- llvm-project-apple-stable-20191106/clang/lib/Driver/ToolChains/Darwin.cpp 2019-12-03 19:28:47.000000000 -1000 +++ llvm-project-apple-stable-20191106+iOS/clang/lib/Driver/ToolChains/Darwin.cpp 2019-12-05 11:22:40.000000000 -1000 @@ -1655,10 +1655,8 @@ << Triple.getOSName(); break; case llvm::Triple::IOS: - Triple.getiOSVersion(Major, Minor, Micro); - break; case llvm::Triple::TvOS: - Triple.getOSVersion(Major, Minor, Micro); + Triple.getiOSVersion(Major, Minor, Micro); break; case llvm::Triple::WatchOS: Triple.getWatchOSVersion(Major, Minor, Micro); @@ -1682,9 +1680,12 @@ StringRef MachOArchName = Toolchain.getMachOArchName(Args); if (MachOArchName == "armv7" || MachOArchName == "armv7s" || - MachOArchName == "arm64" || MachOArchName == "arm64e") - OSTy = llvm::Triple::IOS; - else if (MachOArchName == "armv7k") + MachOArchName == "arm64" || MachOArchName == "arm64e") { + if (Triple.getOS() == llvm::Triple::TvOS) + OSTy = llvm::Triple::TvOS; + else + OSTy = llvm::Triple::IOS; + } else if (MachOArchName == "armv7k") OSTy = llvm::Triple::WatchOS; else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" && MachOArchName != "armv7em") @@ -1879,6 +1880,27 @@ Environment = Simulator; setTarget(Platform, Environment, Major, Minor, Micro); + if (!Args.getLastArg(options::OPT_isysroot)) { + llvm::Triple DefaultTriple(LLVM_DEFAULT_TARGET_TRIPLE); + switch (Platform) { + case DarwinPlatformKind::MacOS: + if (DefaultTriple.getOS() != llvm::Triple::MacOSX) + Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/MacOSX.sdk")); + break; + case DarwinPlatformKind::IPhoneOS: + if (DefaultTriple.getOS() != llvm::Triple::IOS) + Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/iPhoneOS.sdk")); + break; + case DarwinPlatformKind::TvOS: + if (DefaultTriple.getOS() != llvm::Triple::TvOS) + Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/AppleTVOS.sdk")); + break; + case DarwinPlatformKind::WatchOS: + if (DefaultTriple.getOS() != llvm::Triple::WatchOS) + Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/WatchOS.sdk")); + break; + } + } if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) { StringRef SDK = getSDKName(A->getValue()); @@ -1944,6 +1966,21 @@ SmallString<128> P(Sysroot); llvm::sys::path::append(P, "usr", "include"); addExternCSystemInclude(DriverArgs, CC1Args, P.str()); + if (Sysroot == "/") { + switch (getTriple().getOS()) { + case llvm::Triple::IOS: + addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/iPhoneOS.sdk/usr/include"); + break; + case llvm::Triple::TvOS: + addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/AppleTVOS.sdk/usr/include"); + break; + case llvm::Triple::WatchOS: + addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/WatchOS.sdk/usr/include"); + break; + default: + break; + } + } } } diff -ur llvm-project-apple-stable-20191106/clang/lib/Frontend/InitHeaderSearch.cpp llvm-project-apple-stable-20191106+iOS/clang/lib/Frontend/InitHeaderSearch.cpp --- llvm-project-apple-stable-20191106/clang/lib/Frontend/InitHeaderSearch.cpp 2019-12-03 19:28:47.000000000 -1000 +++ llvm-project-apple-stable-20191106+iOS/clang/lib/Frontend/InitHeaderSearch.cpp 2019-12-05 11:10:22.000000000 -1000 @@ -445,6 +445,24 @@ if (triple.isOSDarwin()) { if (HSOpts.UseStandardSystemIncludes) { // Add the default framework include paths on Darwin. + if (!HasSysroot) { + switch (triple.getOS()) { + case llvm::Triple::IOS: + AddPath("/usr/share/SDKs/iPhoneOS.sdk/System/Library/Frameworks", System, true); + AddPath("/usr/share/SDKs/iPhoneOS.sdk/Library/Frameworks", System, true); + break; + case llvm::Triple::TvOS: + AddPath("/usr/share/SDKs/AppleTVOS.sdk/System/Library/Frameworks", System, true); + AddPath("/usr/share/SDKs/AppleTVOS.sdk/Library/Frameworks", System, true); + break; + case llvm::Triple::WatchOS: + AddPath("/usr/share/SDKs/WatchOS.sdk/System/Library/Frameworks", System, true); + AddPath("/usr/share/SDKs/WatchOS.sdk/Library/Frameworks", System, true); + break; + default: + break; + } + } AddPath("/System/Library/Frameworks", System, true); AddPath("/Library/Frameworks", System, true); }