[Clang][OpenMP] Add partial support for Static Device Libraries
authorSaiyedul Islam <Saiyedul.Islam@amd.com>
Fri, 8 Oct 2021 09:19:15 +0000 (09:19 +0000)
committerSaiyedul Islam <Saiyedul.Islam@amd.com>
Fri, 8 Oct 2021 09:37:51 +0000 (09:37 +0000)
commit35ebe4cc24f87397762e35831953c4bfe5f52def
tree5a7cfbac7cd1a67b7e0910e002a1394ff9459370
parentdcb0e687faebb8b8c31f61a0deb8c583125ffc72
[Clang][OpenMP] Add partial support for Static Device Libraries

An archive containing device code object files can be passed to
clang command line for linking. For each given offload target
it creates a device specific archives which is either passed to llvm-link
if the target is amdgpu, or to clang-nvlink-wrapper if the target is
nvptx. -L/-l flags are used to specify these fat archives on the command
line. E.g.
  clang++ -fopenmp -fopenmp-targets=nvptx64 main.cpp -L. -lmylib

It currently doesn't support linking an archive directly, like:
  clang++ -fopenmp -fopenmp-targets=nvptx64 main.cpp libmylib.a

Linking with x86 offload also does not work.

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D105191
clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/lib/Driver/ToolChains/CommonArgs.h
clang/lib/Driver/ToolChains/Cuda.cpp
clang/test/Driver/Inputs/openmp_static_device_link/libFatArchive.a [new file with mode: 0644]
clang/test/Driver/fat_archive_amdgpu.cpp [new file with mode: 0644]
clang/test/Driver/fat_archive_nvptx.cpp [new file with mode: 0644]
clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp