[libc] Fix GPU fatbinary dependencies for multi-source object libraries
authorJoseph Huber <jhuber6@vols.utk.edu>
Tue, 14 Mar 2023 19:59:27 +0000 (14:59 -0500)
committerJoseph Huber <jhuber6@vols.utk.edu>
Tue, 14 Mar 2023 20:04:37 +0000 (15:04 -0500)
Summary:
Multi-source object libraries require some additional handling, this
logic wasn't correctly settending the dependency on each filename
individually and was instead using the last one. This meant that only
the last file was built for multi-object libraries.

libc/cmake/modules/LLVMLibCObjectRules.cmake

index eac480e..0630cf5 100644 (file)
@@ -139,7 +139,8 @@ function(_build_gpu_objects fq_target_name internal_target_name)
                                ${packager_images} -o ${packaged_output_name}
                        DEPENDS ${gpu_target_names} ${add_gpu_obj_src} ${ADD_GPU_OBJ_HDRS}
                        COMMENT "Packaging LLVM offloading binary")
-    add_custom_target(${packaged_target_name} DEPENDS ${packaged_output_name} ${gpu_target_name})
+    add_custom_target(${packaged_target_name} DEPENDS ${packaged_output_name})
+    list(APPEND packaged_gpu_names ${packaged_target_name})
     list(APPEND packaged_gpu_binaries ${packaged_output_name})
   endforeach()
 
@@ -177,7 +178,7 @@ function(_build_gpu_objects fq_target_name internal_target_name)
   endforeach()
   target_include_directories(${fq_target_name} PRIVATE ${include_dirs})
   add_dependencies(${fq_target_name}
-                   ${full_deps_list} ${packaged_target_name} ${stub_target_name})
+                   ${full_deps_list} ${packaged_gpu_names} ${stub_target_name})
 
   # We only build the internal target for a single supported architecture.
   if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU OR