Skip to content

Commit

Permalink
Statically link llvm-cfi-verify's libraries.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
vlad902 committed Oct 18, 2017
1 parent 3038c6b commit 4dc1c97
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 6 additions & 3 deletions llvm/tools/llvm-cfi-verify/lib/CMakeLists.txt
@@ -1,9 +1,12 @@
add_llvm_library(LLVMCFIVerify
add_library(LLVMCFIVerify
STATIC
FileAnalysis.cpp
FileAnalysis.h
FileAnalysis.h)

LINK_COMPONENTS
llvm_update_compile_flags(LLVMCFIVerify)
llvm_map_components_to_libnames(libs
MC
MCParser
Object
Support)
target_link_libraries(LLVMCFIVerify ${libs})
2 changes: 1 addition & 1 deletion llvm/unittests/tools/llvm-cfi-verify/CMakeLists.txt
Expand Up @@ -4,7 +4,6 @@ set(LLVM_LINK_COMPONENTS
AllTargetsDescs
AllTargetsDisassemblers
AllTargetsInfos
CFIVerify
MC
MCParser
Object
Expand All @@ -15,4 +14,5 @@ list(FIND LLVM_TARGETS_TO_BUILD "X86" x86_idx)
if (NOT x86_idx LESS 0)
add_llvm_unittest(CFIVerifyTests
FileAnalysis.cpp)
target_link_libraries(CFIVerifyTests LLVMCFIVerify)
endif()

0 comments on commit 4dc1c97

Please sign in to comment.