summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Driver/ToolChains/Darwin.cpp19
-rw-r--r--clang/lib/Driver/ToolChains/Darwin.h6
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a0
-rw-r--r--clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a0
-rw-r--r--clang/test/Driver/darwin-ld.c69
11 files changed, 37 insertions, 57 deletions
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp
index 6c8bba57644..5971a0ae447 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -916,8 +916,10 @@ void MachO::AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs,
DarwinLibName += Component;
if (!(Opts & RLO_IsEmbedded))
DarwinLibName += "_";
- }
- DarwinLibName += getOSLibraryNameSuffix();
+ DarwinLibName += getOSLibraryNameSuffix();
+ } else
+ DarwinLibName += getOSLibraryNameSuffix(true);
+
DarwinLibName += IsShared ? "_dynamic.dylib" : ".a";
SmallString<128> Dir(getDriver().ResourceDir);
llvm::sys::path::append(
@@ -983,16 +985,19 @@ StringRef Darwin::getSDKName(StringRef isysroot) {
return "";
}
-StringRef Darwin::getOSLibraryNameSuffix() const {
- switch(TargetPlatform) {
+StringRef Darwin::getOSLibraryNameSuffix(bool IgnoreSim) const {
+ switch (TargetPlatform) {
case DarwinPlatformKind::MacOS:
return "osx";
case DarwinPlatformKind::IPhoneOS:
- return TargetEnvironment == NativeEnvironment ? "ios" : "iossim";
+ return TargetEnvironment == NativeEnvironment || IgnoreSim ? "ios"
+ : "iossim";
case DarwinPlatformKind::TvOS:
- return TargetEnvironment == NativeEnvironment ? "tvos" : "tvossim";
+ return TargetEnvironment == NativeEnvironment || IgnoreSim ? "tvos"
+ : "tvossim";
case DarwinPlatformKind::WatchOS:
- return TargetEnvironment == NativeEnvironment ? "watchos" : "watchossim";
+ return TargetEnvironment == NativeEnvironment || IgnoreSim ? "watchos"
+ : "watchossim";
}
llvm_unreachable("Unsupported platform");
}
diff --git a/clang/lib/Driver/ToolChains/Darwin.h b/clang/lib/Driver/ToolChains/Darwin.h
index 98ad7431919..73c4ac6aeca 100644
--- a/clang/lib/Driver/ToolChains/Darwin.h
+++ b/clang/lib/Driver/ToolChains/Darwin.h
@@ -252,7 +252,9 @@ public:
return llvm::ExceptionHandling::None;
}
- virtual StringRef getOSLibraryNameSuffix() const { return ""; }
+ virtual StringRef getOSLibraryNameSuffix(bool IgnoreSim = false) const {
+ return "";
+ }
/// }
};
@@ -420,7 +422,7 @@ protected:
Action::OffloadKind DeviceOffloadKind) const override;
StringRef getPlatformFamily() const;
- StringRef getOSLibraryNameSuffix() const override;
+ StringRef getOSLibraryNameSuffix(bool IgnoreSim = false) const override;
public:
static StringRef getSDKName(StringRef isysroot);
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_tvos.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.cc_kext_watchos.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.ios.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.osx.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_tvos.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.profile_watchos.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.tvos.a
diff --git a/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Driver/Inputs/resource_dir/lib/darwin/libclang_rt.watchos.a
diff --git a/clang/test/Driver/darwin-ld.c b/clang/test/Driver/darwin-ld.c
index c98d1abcab2..3c339a117d7 100644
--- a/clang/test/Driver/darwin-ld.c
+++ b/clang/test/Driver/darwin-ld.c
@@ -152,78 +152,51 @@
// RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_CRT1 %s < %t.log
// LINK_NO_IOS_ARM64_CRT1-NOT: crt
-// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_IOSSIM_PROFILE %s < %t.log
// LINK_IOSSIM_PROFILE: {{ld(.exe)?"}}
// LINK_IOSSIM_PROFILE: libclang_rt.profile_iossim.a
+// LINK_IOSSIM_PROFILE: libclang_rt.ios.a
-// FIXME: Currently the builtin library is only added to the command line if it,
-// so we can't check for it here
-// FIXME_LINK_IOSSIM_PROFILE: libclang_rt.ios.a
-
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o 2> %t.log
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log
// LINK_TVOS_ARM64: {{ld(.exe)?"}}
// LINK_TVOS_ARM64: -tvos_version_min
// LINK_TVOS_ARM64-NOT: crt
// LINK_TVOS_ARM64-NOT: lgcc_s.1
-// FIXME: This library does not get built unless the tvOS SDK is
-// installed, and the driver will not try to link it if it does not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_ARM64: libclang_rt.tvos.a
+// LINK_TVOS_ARM64: libclang_rt.tvos.a
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log
// LINK_TVOS_PROFILE: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the tvOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
-// FIXME_LINK_TVOS_PROFILE: libclang_rt.tvos.a
-
-// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o -lcc_kext 2> %t.log
+// LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
+// LINK_TVOS_PROFILE: libclang_rt.tvos.a
+
+// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
// RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log
// LINK_TVOS_KEXT: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the tvOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the tvOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
-// FIXME_LINK_TVOS_KEXT: libclang_rt.tvos.a
-
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o 2> %t.log
+// LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
+// LINK_TVOS_KEXT: libclang_rt.tvos.a
+
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log
// LINK_WATCHOS_ARM: {{ld(.exe)?"}}
// LINK_WATCHOS_ARM: -watchos_version_min
// LINK_WATCHOS_ARM-NOT: crt
// LINK_WATCHOS_ARM-NOT: lgcc_s.1
-// FIXME: This library does not get built unless the watchOS SDK is
-// installed, and the driver will not try to link it if it does not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_ARM: libclang_rt.watchos.a
+// LINK_WATCHOS_ARM: libclang_rt.watchos.a
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -fprofile-instr-generate -### %t.o 2> %t.log
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -fprofile-instr-generate -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log
// LINK_WATCHOS_PROFILE: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the watchOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
-// FIXME_LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
-
-// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o -lcc_kext 2> %t.log
+// LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
+// LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
+
+// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
// RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log
// LINK_WATCHOS_KEXT: {{ld(.exe)?"}}
-// FIXME: These libraries do not get built unless the watchOS SDK is
-// installed, and the driver will not try to link them if they do not exist.
-// This should be reenabled when the watchOS SDK becomes a standard part
-// of Xcode.
-// FIXME_LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
-// FIXME_LINK_WATCHOS_KEXT: libclang_rt.watchos.a
+// LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
+// LINK_WATCHOS_KEXT: libclang_rt.watchos.a
// RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
// RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
OpenPOWER on IntegriCloud