nemanjai added a comment.

According to https://clang.llvm.org/docs/CrossCompilation.html (under 
`Toolchain Options` option 2) it is quite likely that a user that desires to 
cross-compile will have the necessary toolchain installed into a directory that 
will not require the use of `--sysroot`.

So I think that letting `--target` override the default 
`--sysroot/--dyld-prefix/--rpath` is reasonable. What I am suggesting is that 
if `--target` is specified on the command line, it clears any default setting 
of these three options (i.e. clears them unless they were explicitly specified 
on the command line).

Namely, something along the lines of:

  diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
  index 5c726b2..9a85394 100644
  --- a/clang/lib/Driver/Driver.cpp
  +++ b/clang/lib/Driver/Driver.cpp
  @@ -1073,8 +1073,13 @@ Compilation *Driver::BuildCompilation(ArrayRef<const 
char *> ArgList) {
       T.setObjectFormat(llvm::Triple::COFF);
       TargetTriple = T.str();
     }
  -  if (const Arg *A = Args.getLastArg(options::OPT_target))
  +  if (const Arg *A = Args.getLastArg(options::OPT_target)) {
       TargetTriple = A->getValue();
  +    if (!Args.getLastArg(options::OPT__sysroot_EQ))
  +      SysRoot = "";
  +    if (!Args.getLastArg(options::OPT__dyld_prefix_EQ))
  +      DyldPrefix = "";
  +  }

And something similar for `DEFAULT_RPATH`.

Would something like this be satisfactory for everyone here? Or do others think 
this is the "worst of both worlds"? :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80300/new/

https://reviews.llvm.org/D80300



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to