Skip to content
  • Vlad Tsyrklevich's avatar
    Statically link llvm-cfi-verify's libraries. · 4dc1c973
    Vlad Tsyrklevich authored
    Summary:
    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.
    
    Reviewers: skatkov, pcc
    
    Reviewed By: skatkov, pcc
    
    Subscribers: llvm-commits, kcc, pcc, aheejin, vlad.tsyrklevich, mgorny
    
    Differential Revision: https://reviews.llvm.org/D39020
    
    llvm-svn: 316059
    4dc1c973
Loading