[PATCH] D79241: [cmake] Ensure that LINK_LIBS are dependencies for object library targets

Stephen Neuendorffer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 1 17:14:09 PDT 2020


stephenneuendorffer created this revision.
Herald added subscribers: llvm-commits, rriddle, mgorny.
Herald added a project: LLVM.
stephenneuendorffer added a child revision: D79242: [MLIR] add dependencies for all tablegen targets on 'mlir-headers'.
stephenneuendorffer added reviewers: mehdi_amini, tstellar.
stephenneuendorffer added a reviewer: vchuravy.
stephenneuendorffer edited the summary of this revision.
stephenneuendorffer updated this revision to Diff 261502.
stephenneuendorffer updated this revision to Diff 261540.

In MLIR, it is common for automatically generated headers to be included
in many places.  To avoid tracking these dependencies explicitly in
cmake, they are treated as part of a library which 'owns' the generated
header.  Users of the generated header link against the owning library.
However, object libraries don't actually 'link', so this dependence gets
lost.  This patch adds an explicit dependence for these generated headers
when creating object library targets to ensure that generated headers
are appropriately generated


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79241

Files:
  llvm/cmake/modules/AddLLVM.cmake


Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -467,6 +467,16 @@
     if(ARG_DEPENDS)
       add_dependencies(${obj_name} ${ARG_DEPENDS})
     endif()
+    # Treat link libraries like PUBLIC dependencies.  LINK_LIBS might
+    # result in generating header files.  Add a dependendency so that
+    # the generated header is created before this object library.
+    if(ARG_LINK_LIBS)
+      foreach(link_lib ${ARG_LINK_LIBS})
+        if(TARGET ${link_lib})
+          add_dependencies(${obj_name} ${link_lib})
+        endif()
+      endforeach()
+    endif()
   endif()
 
   if(ARG_SHARED AND ARG_STATIC)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79241.261540.patch
Type: text/x-patch
Size: 744 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200502/9ddbcd70/attachment-0001.bin>


More information about the llvm-commits mailing list