[PATCH] D14847: Support CMake's clang_rt.profile library naming scheme

Justin Bogner via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 19 16:12:11 PST 2015


Chris Bieneman <beanz at apple.com> writes:
> beanz created this revision.
> beanz added a reviewer: bogner.
> beanz added a subscriber: cfe-commits.
>
> This code is a bit undesirable, but it gets clang to work with the
> autoconf and cmake-built libclang_rt.profile libraries.

Yeah, this is a bit awkward, but it makes sense for the transition
period. LGTM with a couple of nits.

> http://reviews.llvm.org/D14847
>
> Files:
>   lib/Driver/ToolChains.cpp
>
> Index: lib/Driver/ToolChains.cpp
> ===================================================================
> --- lib/Driver/ToolChains.cpp
> +++ lib/Driver/ToolChains.cpp
> @@ -323,21 +323,35 @@
>                                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");
> +  auto library = "libclang_rt.profile_osx.a";

Did you just use auto for a 'const char *'? I don't think its worth the
saved keystrokes. Also, the variable should be named "Library".

> +
>    // 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;
>  }
>  
>
>


More information about the cfe-commits mailing list