llvm-cfi-verify (D38379) introduced a potential build failure when compiling with -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON. Specific versions of cmake seem to treat the add_subdirectory() rule differently. It seems as if old versions of cmake BFS these rules, adding them to the fringe for expansion later. Newer versions of cmake seem to immediately execute CMakeFiles that are present in this subdirectory.
If the subdirectory is expanded through the fringe, the globbing resultant from llvm_add_implicit_projects() from cmake/modules/AddLLVM.cmake:1012 means that tools/llvm-shlib/CMakeFile.txt gets executed before tools/llvm-cfi-verify/lib/CMakeFile.txt. As the latter CMakeFile adds a new library, this expansion order means that the library files required the unit tests in unittests/tools/llvm-cfi-verify/ are not present in the dynamic library. This causes unit tests to fail as the required functions can't be found.
This change now ensures that the libraries created by llvm-cfi-verify are statically linked into the unit tests. As tools/llvm-cfi-verify/lib no longer adds anything to llvm-shlib, there should be no concern about the order-of-compilation.