Skip to content

Commit

Permalink
[libc][GPU] Fix dependencies for externally installed stub files (#66653
Browse files Browse the repository at this point in the history
)

Summary:
The GPU build has a lot of magic around how we package the output.
Generally, the GPU needs to exist as a secondary fatbinary image for
offloading languages. This is because offloading languages pretend like
offloading to an accelerator is a single file. This then needs to be put
into a single file to make it mesh with the existing build
infrastructure. To work with this, the `libc` makes an installed version
of the library that simply embeds the GPU code into an empty stub file.

This wasn't being updated correctly, which lead to the installed `libc`
static library not being updated correctly when the underlying file was
changed. The previous behaviour only updated when the entrypoint itself
was modified, but not any of its headers. By adding a dependcy on the
actual *object* file we should now capture the regular CMake semantics.
  • Loading branch information
jhuber6 committed Sep 18, 2023
1 parent e2733a6 commit c354ee8
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions libc/cmake/modules/LLVMLibCObjectRules.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ function(_build_gpu_objects fq_target_name internal_target_name)
list(APPEND packager_images
--image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple})
endif()
list(APPEND gpu_target_names ${gpu_target_name})
list(APPEND gpu_target_objects ${input_file})
endforeach()

# After building the target for the desired GPUs we must package the output
Expand All @@ -222,7 +222,7 @@ function(_build_gpu_objects fq_target_name internal_target_name)
add_custom_command(OUTPUT ${packaged_output_name}
COMMAND ${LIBC_CLANG_OFFLOAD_PACKAGER}
${packager_images} -o ${packaged_output_name}
DEPENDS ${gpu_target_names} ${add_gpu_obj_src} ${ADD_GPU_OBJ_HDRS}
DEPENDS ${gpu_target_objects} ${add_gpu_obj_src} ${ADD_GPU_OBJ_HDRS}
COMMENT "Packaging LLVM offloading binary")
add_custom_target(${packaged_target_name} DEPENDS ${packaged_output_name})
list(APPEND packaged_gpu_names ${packaged_target_name})
Expand All @@ -242,7 +242,7 @@ function(_build_gpu_objects fq_target_name internal_target_name)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/stubs/${stub_filename}"
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/stubs/
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/stubs/${stub_filename}
DEPENDS ${gpu_target_names} ${ADD_GPU_OBJ_SRCS} ${ADD_GPU_OBJ_HDRS}
DEPENDS ${gpu_target_objects} ${ADD_GPU_OBJ_SRCS} ${ADD_GPU_OBJ_HDRS}
)
set(stub_target_name ${fq_target_name}.__stub__)
add_custom_target(${stub_target_name} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/stubs/${stub_filename})
Expand Down

0 comments on commit c354ee8

Please sign in to comment.