The file must go under cuda_wrappers/bits/, but was copied
directly into cuda_wrappers/ during installation.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | Do we need an install target for ${cuda_wrapper_bits_files} for the cuda-resource-headers component as well? It seems to be the case because this patch is treating ${cuda_wrapper_bits_files} as part of cuda-resource-headers. add_header_target("cuda-resource-headers" "${cuda_files};${cuda_wrapper_files};${cuda_wrapper_bits_files}") |
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | I'm not sure I understand the question. Are you saying that a separate install() for the 'bits' is not necessary and we could just install all headers with a single install above? If that's the case, then, AFAICT, the answer is that we do need a separate install. install(DIRECTORY) would presumably preserve the source directory structure, but we lose per-file granularity. It may work for the files under cuda_wrappers for now, but I think there's some merit in explicitly controlling which headers we ship and where we put them. While we do have 1:1 mapping between the source tree and install tree, it may not always be the case. |
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | Ah sorry for the confusion.
No I am trying to say the opposite. I am suggesting we add the separate install target as a component of clang-resource-headers and as a component of cuda-resource-headers, as shown in the code change suggested in the comment above. I am not suggesting any code form this patch to be removed. The cuda-resource-headers can be used to install the cuda related headers only, in the case when a user do not want to install all the headers (e.g. if a user only want to install support for Intel and Nvidia headers, but not the PowerPC headers, the user can select core-resource-headers, x86_files and cuda-resource-headers during a distribution build/install). I think without the code change suggested above, if a user select to install cuda-resource-headers only without specifying clang-resource-headers, we will miss the file cuda_wrappers/bits/shared_ptr_base.h. |
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | Sorry I made a typo in the previous comment. I meant x86-resource-headers when I said x86_files. |
Verified that install works correctly with
individual component installations:
cmake -DCOMPONENT=cuda-resource-headers -P ./cmake_install.cmake cmake -DCOMPONENT=clang-resource-headers -P ./cmake_install.cmake
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | I think understand now. I've added the install with COMPONENT clang-resource-headers and verified that the bits header is installed during individual component installation. |
clang/lib/Headers/CMakeLists.txt | ||
---|---|---|
519–525 | Thanks for the changes! One thing I realized after seeing the most recent update is that I mixed up the term "install target" with "install rules" in my previous comments. Apologies for the confusion. I think we will need the following new target code only if we intend to specify cuda-resource-bits-headers as a separate installation target (e.g. if we do cmake -DCOMPONENT=cuda-resource-bits-headers -P ./cmake_install.cmake). add_header_target("cuda-resource-bits-headers" "${cuda_wrapper_bits_files}") add_dependencies("clang-resource-headers" ... "cuda-resource-bits-headers" ... add_llvm_install_targets(install-cuda-resource-bits-headers DEPENDS cuda-resource-bits-headers COMPONENT cuda-resource-headers) In other words, we do not need these three code changes above if we do not intend to install cuda-resource-bits-headers as a standalone target. If our intention is to always use it as a component of cuda-resource-headers, adding install rule install( FILES ${cuda_wrapper_bits_files} DESTINATION ${header_install_dir}/cuda_wrappers/bits EXCLUDE_FROM_ALL COMPONENT cuda-resource-headers) should be sufficient when installing cuda-resource-headers by itself. We still need the install rule for clang-resource-headers which was initially added and is still necessary. I tested the installation without the extra targets but with the rule and it seems to work as intended. My suggestion is that we can remove the new targets if we do not intend to install cuda-resource-bits-headers as a standalone component. |
Do we need an install target for ${cuda_wrapper_bits_files} for the cuda-resource-headers component as well? It seems to be the case because this patch is treating ${cuda_wrapper_bits_files} as part of cuda-resource-headers.