[cmake] Update creation of object library dependencies for LINK_LIBS PUBLIC
authorStephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Wed, 13 May 2020 03:43:50 +0000 (20:43 -0700)
committerStephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Wed, 13 May 2020 05:36:52 +0000 (22:36 -0700)
We need to avoid declaring dependencies on strings which are valid
LINK_LIBS and not valid targets.  Previously, we used if(TARGET) to
check this condition.  However, if(TARGET) checks whether a target has
been created (in the cmake subdirectory traversal order) and not
whether it *will* be created.  This results in annoying directory
ordering problems.

This patch changes the check to more explicitly eliminate problematic
libraries (namely -lpthread) using a REGEX.

Differential Revision: https://reviews.llvm.org/D79837

llvm/cmake/modules/AddLLVM.cmake

index 6b10e2c..cf8f299 100644 (file)
@@ -483,7 +483,8 @@ function(llvm_add_library name)
         "PUBLIC;PRIVATE"
         ${ARG_LINK_LIBS})
       foreach(link_lib ${LINK_LIBS_ARG_PUBLIC})
-        if(TARGET ${link_lib})
+        # Can't specify a dependence on -lpthread
+        if(NOT ${link_lib} MATCHES "-.*")
           add_dependencies(${obj_name} ${link_lib})
         endif()
       endforeach()