Skip to content

Commit

Permalink
Merging r260641:
Browse files Browse the repository at this point in the history
------------------------------------------------------------------------
r260641 | axw | 2016-02-11 17:42:43 -0800 (Thu, 11 Feb 2016) | 10 lines

Avoid linking LLVM component libraries with libLLVM

Patch by Jack Howarth.

When linking to libLLVM, don't also link to the component
libraries that constitute libLLVM.

Differential Revision: http://reviews.llvm.org/D16945


------------------------------------------------------------------------

llvm-svn: 260693
  • Loading branch information
zmodem committed Feb 12, 2016
1 parent f2263c5 commit a51bb0f
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 24 deletions.
36 changes: 18 additions & 18 deletions llvm/cmake/modules/AddLLVM.cmake
Expand Up @@ -468,20 +468,23 @@ function(llvm_add_library name)
endif()
endif()

# Add the explicit dependency information for this library.
#
# It would be nice to verify that we have the dependencies for this library
# name, but using get_property(... SET) doesn't suffice to determine if a
# property has been set to an empty value.
get_property(lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${name})

if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_STATIC AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
set(llvm_libs LLVM)
if (DEFINED LLVM_LINK_COMPONENTS OR DEFINED ARG_LINK_COMPONENTS)
if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
set(llvm_libs LLVM)
else()
llvm_map_components_to_libnames(llvm_libs
${ARG_LINK_COMPONENTS}
${LLVM_LINK_COMPONENTS}
)
endif()
else()
llvm_map_components_to_libnames(llvm_libs
${ARG_LINK_COMPONENTS}
${LLVM_LINK_COMPONENTS}
)
# Components have not been defined explicitly in CMake, so add the
# dependency information for this library as defined by LLVMBuild.
#
# It would be nice to verify that we have the dependencies for this library
# name, but using get_property(... SET) doesn't suffice to determine if a
# property has been set to an empty value.
get_property(lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${name})
endif()

if(CMAKE_VERSION VERSION_LESS 2.8.12)
Expand Down Expand Up @@ -882,14 +885,11 @@ function(add_unittest test_suite test_name)

set(LLVM_REQUIRES_RTTI OFF)

list(APPEND LLVM_LINK_COMPONENTS Support) # gtest needs it for raw_ostream
add_llvm_executable(${test_name} IGNORE_EXTERNALIZE_DEBUGINFO ${ARGN})
set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
set_output_directory(${test_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir})
target_link_libraries(${test_name}
gtest
gtest_main
LLVMSupport # gtest needs it for raw_ostream.
)
target_link_libraries(${test_name} gtest_main gtest)

add_dependencies(${test_suite} ${test_name})
get_target_property(test_suite_folder ${test_suite} FOLDER)
Expand Down
11 changes: 10 additions & 1 deletion llvm/cmake/modules/LLVM-Config.cmake
Expand Up @@ -40,10 +40,19 @@ macro(llvm_config executable)
# done in case libLLVM does not contain all of the components
# the target requires.
#
# TODO strip LLVM_DYLIB_COMPONENTS out of link_components.
# Strip LLVM_DYLIB_COMPONENTS out of link_components.
# To do this, we need special handling for "all", since that
# may imply linking to libraries that are not included in
# libLLVM.

if (DEFINED link_components AND DEFINED LLVM_DYLIB_COMPONENTS)
if("${LLVM_DYLIB_COMPONENTS}" STREQUAL "all")
set(link_components "")
else()
list(REMOVE_ITEM link_components ${LLVM_DYLIB_COMPONENTS})
endif()
endif()

target_link_libraries(${executable} LLVM)
endif()

Expand Down
7 changes: 3 additions & 4 deletions llvm/utils/unittest/CMakeLists.txt
Expand Up @@ -32,10 +32,6 @@ if (NOT LLVM_ENABLE_THREADS)
add_definitions( -DGTEST_HAS_PTHREAD=0 )
endif()

set(LIBS
LLVMSupport # Depends on llvm::raw_ostream
)

find_library(PTHREAD_LIBRARY_PATH pthread)
if (PTHREAD_LIBRARY_PATH)
list(APPEND LIBS pthread)
Expand All @@ -46,6 +42,9 @@ add_llvm_library(gtest

LINK_LIBS
${LIBS}

LINK_COMPONENTS
Support # Depends on llvm::raw_ostream
)

add_subdirectory(UnitTestMain)
4 changes: 3 additions & 1 deletion llvm/utils/unittest/UnitTestMain/CMakeLists.txt
Expand Up @@ -3,5 +3,7 @@ add_llvm_library(gtest_main

LINK_LIBS
gtest
LLVMSupport # Depends on llvm::cl

LINK_COMPONENTS
Support # Depends on llvm::cl
)

0 comments on commit a51bb0f

Please sign in to comment.