mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[CMake] Fix pthread handling for out-of-tree builds
LLVM defines `PTHREAD_LIB` which is used by AddLLVM.cmake and various projects to correctly link the threading library when needed. Unfortunately `PTHREAD_LIB` is defined by LLVM's `config-ix.cmake` file which isn't installed and therefore can't be used when configuring out-of-tree builds. This causes such builds to fail since `pthread` isn't being correctly linked. This patch attempts to fix that problem by renaming and exporting `LLVM_PTHREAD_LIB` as part of`LLVMConfig.cmake`. I renamed `PTHREAD_LIB` because It seemed likely to cause collisions with downstream users of `LLVMConfig.cmake`. llvm-svn: 294690
This commit is contained in:
parent
b58308ad4f
commit
db10580e9b
@ -115,7 +115,7 @@ if(HAVE_LIBPTHREAD)
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
set(THREADS_HAVE_PTHREAD_ARG Off)
|
||||
find_package(Threads REQUIRED)
|
||||
set(PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
|
||||
set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
# Don't look for these libraries on Windows. Also don't look for them if we're
|
||||
|
@ -718,11 +718,11 @@ macro(add_llvm_executable name)
|
||||
if(NOT ARG_IGNORE_EXTERNALIZE_DEBUGINFO)
|
||||
llvm_externalize_debuginfo(${name})
|
||||
endif()
|
||||
if (PTHREAD_LIB)
|
||||
if (LLVM_PTHREAD_LIB)
|
||||
# libpthreads overrides some standard library symbols, so main
|
||||
# executable must be linked with it in order to provide consistent
|
||||
# API for all shared libaries loaded by this executable.
|
||||
target_link_libraries(${name} ${PTHREAD_LIB})
|
||||
target_link_libraries(${name} ${LLVM_PTHREAD_LIB})
|
||||
endif()
|
||||
endmacro(add_llvm_executable name)
|
||||
|
||||
@ -1027,7 +1027,7 @@ function(add_unittest test_suite test_name)
|
||||
# libpthreads overrides some standard library symbols, so main
|
||||
# executable must be linked with it in order to provide consistent
|
||||
# API for all shared libaries loaded by this executable.
|
||||
target_link_libraries(${test_name} gtest_main gtest ${PTHREAD_LIB})
|
||||
target_link_libraries(${test_name} gtest_main gtest ${LLVM_PTHREAD_LIB})
|
||||
|
||||
add_dependencies(${test_suite} ${test_name})
|
||||
get_target_property(test_suite_folder ${test_suite} FOLDER)
|
||||
|
@ -45,6 +45,10 @@ set(LLVM_ENABLE_PIC @LLVM_ENABLE_PIC@)
|
||||
|
||||
set(LLVM_BUILD_32_BITS @LLVM_BUILD_32_BITS@)
|
||||
|
||||
if (NOT "@LLVM_PTHREAD_LIB@" STREQUAL "")
|
||||
set(LLVM_PTHREAD_LIB "@LLVM_PTHREAD_LIB@")
|
||||
endif()
|
||||
|
||||
set(LLVM_ENABLE_PLUGINS @LLVM_ENABLE_PLUGINS@)
|
||||
set(LLVM_EXPORT_SYMBOLS_FOR_PLUGINS @LLVM_EXPORT_SYMBOLS_FOR_PLUGINS@)
|
||||
set(LLVM_PLUGIN_EXT @LLVM_PLUGIN_EXT@)
|
||||
|
@ -11,4 +11,4 @@ add_llvm_example(ParallelJIT
|
||||
ParallelJIT.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(ParallelJIT ${PTHREAD_LIB})
|
||||
target_link_libraries(ParallelJIT ${LLVM_PTHREAD_LIB})
|
||||
|
@ -150,7 +150,7 @@ add_llvm_library(LLVMCodeGen
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen/PBQP
|
||||
|
||||
LINK_LIBS ${PTHREAD_LIB}
|
||||
LINK_LIBS ${LLVM_PTHREAD_LIB}
|
||||
|
||||
DEPENDS
|
||||
intrinsics_gen
|
||||
|
@ -4,7 +4,7 @@ if( HAVE_LIBDL )
|
||||
set(LLVM_INTEL_JIT_LIBS ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
set(LLVM_INTEL_JIT_LIBS ${PTHREAD_LIB} ${LLVM_INTEL_JIT_LIBS})
|
||||
set(LLVM_INTEL_JIT_LIBS ${LLVM_PTHREAD_LIB} ${LLVM_INTEL_JIT_LIBS})
|
||||
|
||||
|
||||
add_llvm_library(LLVMIntelJITEvents
|
||||
|
@ -34,12 +34,12 @@ if( LLVM_USE_SANITIZE_COVERAGE )
|
||||
add_library(LLVMFuzzerNoMain STATIC
|
||||
$<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
|
||||
)
|
||||
target_link_libraries(LLVMFuzzerNoMain ${PTHREAD_LIB})
|
||||
target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
|
||||
add_library(LLVMFuzzer STATIC
|
||||
FuzzerMain.cpp
|
||||
$<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
|
||||
)
|
||||
target_link_libraries(LLVMFuzzer ${PTHREAD_LIB})
|
||||
target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
|
||||
|
||||
if( LLVM_INCLUDE_TESTS )
|
||||
add_subdirectory(test)
|
||||
|
@ -17,7 +17,7 @@ elseif( CMAKE_HOST_UNIX )
|
||||
if( LLVM_ENABLE_THREADS AND HAVE_LIBATOMIC )
|
||||
set(system_libs ${system_libs} atomic)
|
||||
endif()
|
||||
set(system_libs ${system_libs} ${PTHREAD_LIB})
|
||||
set(system_libs ${system_libs} ${LLVM_PTHREAD_LIB})
|
||||
if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
|
||||
set(system_libs ${system_libs} z)
|
||||
endif()
|
||||
|
@ -21,4 +21,4 @@ add_llvm_unittest(OrcJITTests
|
||||
RPCUtilsTest.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(OrcJITTests ${PTHREAD_LIB})
|
||||
target_link_libraries(OrcJITTests ${LLVM_PTHREAD_LIB})
|
||||
|
@ -64,4 +64,4 @@ add_llvm_unittest(SupportTests
|
||||
)
|
||||
|
||||
# ManagedStatic.cpp uses <pthread>.
|
||||
target_link_libraries(SupportTests ${PTHREAD_LIB})
|
||||
target_link_libraries(SupportTests ${LLVM_PTHREAD_LIB})
|
||||
|
@ -40,8 +40,8 @@ if (NOT LLVM_ENABLE_THREADS)
|
||||
add_definitions( -DGTEST_HAS_PTHREAD=0 )
|
||||
endif()
|
||||
|
||||
find_library(PTHREAD_LIBRARY_PATH pthread)
|
||||
if (PTHREAD_LIBRARY_PATH)
|
||||
find_library(LLVM_PTHREAD_LIBRARY_PATH pthread)
|
||||
if (LLVM_PTHREAD_LIBRARY_PATH)
|
||||
list(APPEND LIBS pthread)
|
||||
endif()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user