Support CMake's clang_rt.profile library naming scheme

Summary: This code is a bit undesirable, but it gets clang to work with the autoconf and cmake-built libclang_rt.profile libraries.

Reviewers: bogner

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D14847

llvm-svn: 253625
This commit is contained in:
Chris Bieneman 2015-11-20 00:19:21 +00:00
parent 49c9a6e802
commit 586d24bbf2
1 changed files with 25 additions and 11 deletions

View File

@ -323,21 +323,35 @@ void Darwin::addProfileRTLibs(const ArgList &Args,
ArgStringList &CmdArgs) const {
if (!needsProfileRT(Args)) return;
// TODO: Clean this up once autoconf is gone
SmallString<128> P(getDriver().ResourceDir);
llvm::sys::path::append(P, "lib", "darwin");
const char *Library = "libclang_rt.profile_osx.a";
// Select the appropriate runtime library for the target.
if (isTargetWatchOSBased()) {
AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_watchos.a",
/*AlwaysLink*/ true);
} else if (isTargetTvOSBased()) {
AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_tvos.a",
/*AlwaysLink*/ true);
} else if (isTargetIOSBased()) {
AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_ios.a",
/*AlwaysLink*/ true);
if (isTargetWatchOS()) {
Library = "libclang_rt.profile_watchos.a";
} else if (isTargetWatchOSSimulator()) {
llvm::sys::path::append(P, "libclang_rt.profile_watchossim.a");
Library = getVFS().exists(P) ? "libclang_rt.profile_watchossim.a"
: "libclang_rt.profile_watchos.a";
} else if (isTargetTvOS()) {
Library = "libclang_rt.profile_tvos.a";
} else if (isTargetTvOSSimulator()) {
llvm::sys::path::append(P, "libclang_rt.profile_tvossim.a");
Library = getVFS().exists(P) ? "libclang_rt.profile_tvossim.a"
: "libclang_rt.profile_tvos.a";
} else if (isTargetIPhoneOS()) {
Library = "libclang_rt.profile_ios.a";
} else if (isTargetIOSSimulator()) {
llvm::sys::path::append(P, "libclang_rt.profile_iossim.a");
Library = getVFS().exists(P) ? "libclang_rt.profile_iossim.a"
: "libclang_rt.profile_ios.a";
} else {
assert(isTargetMacOS() && "unexpected non MacOS platform");
AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_osx.a",
/*AlwaysLink*/ true);
}
AddLinkRuntimeLib(Args, CmdArgs, Library,
/*AlwaysLink*/ true);
return;
}