jhuber6 added a comment. In D150013#4330452 <https://reviews.llvm.org/D150013#4330452>, @MaskRay wrote:
> So it seems that there are configurations that we need -L (cross > compilation?). If we forward -L in some configurations, I think it'd be > better to do this consistently. > > The `LIBRARY_PATH` options seems not useful and the conditional `if (not > cross compiling) add LIBRARY_PATH` is more unfortunate. I wish that we don't > add more cases that we do something with `LIBRARY_PATH`. > (IMO the `LIBRARY_PATH` users can just fix their build system or use > `CCC_OVERRIDE_OPTIONS`) > > We definitely want to avoid more uses of `TC.isCrossCompiling()`. The comment itself `// LIBRARY_PATH are included before user inputs and only supported on native toolchains.` suggests that something like this might be valid. // LIBRARY_PATH are included before user inputs and only supported on native // toolchains. if (!TC.isCrossCompiling()) addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH"); else Args.AddAllArgs(CmdArgs, options::OPT_L); ================ Comment at: clang/lib/Driver/ToolChains/AMDGPU.cpp:546 addLinkerCompressDebugSectionsOption(getToolChain(), Args, CmdArgs); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); + Args.AddAllArgs(CmdArgs, options::OPT_L); ---------------- jhuber6 wrote: > MaskRay wrote: > > jhuber6 wrote: > > > yaxunl wrote: > > > > jhuber6 wrote: > > > > > yaxunl wrote: > > > > > > AddLinkerInputs has code doing that, and it handles env var > > > > > > LIBRARY_PATH. However that code is disabled for AMDGPU because > > > > > > AMDGPU returns true for isCrossCompiling. > > > > > > > > > > > > https://github.com/llvm/llvm-project/blob/main/clang/lib/Driver/ToolChains/CommonArgs.cpp#L236 > > > > > > > > > > > > It seems isCrossCompiling is solely for controlling whether to > > > > > > consume `-L`. If we want amdgpu toolchain to accept `-L`, we can > > > > > > simply let isCrossCompiling return false. > > > > > Good catch, we could maybe set `isCrossCompiling` to false if > > > > > targeted directly by the user, e.g. `--target=amdgcn-amd-amdhsa` vs > > > > > `--offload-arch`. > > > > That would be better. Thanks. > > > It still is technically cross compiling, since we are building for a > > > target that does not match the system's architecture. The original code > > > that prevents passing `-L` was contributed by @MaskRay. I understand that > > > we may not want to pass `LIBRARY_PATH` defines, but what's the rationale > > > for not passing any `-L` options manually specified by the user? > > The `LIBRARY_PATH` code had been there when I moved it in 2019. It'd be > > best not to rely on `LIBRARY_PATH`. I think that forwarding `-L` seems > > reasonable but I am not familiar with the amdgpu ecosystem.. > The linker is just `lld` so it should be the same conceptually. I'm just > figuring that even if the user is cross compiling we should respect `-L` > passed on the command line. Should I change this patch to make that change? For offloading I think the problem might be that we don't want to forward `-L` arguments from the host. In that case, we might be able to apply ` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150013/new/ https://reviews.llvm.org/D150013 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits