mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Use -Wl,defs when linking.
ELF linkers by default allow shared libraries to contain undefined references and it is up to the dynamic linker to look for them. On COFF and MachO, that is not the case. This creates a situation where a .so might build on an ELF system, but the build of the corresponding .dylib or .dll will fail. This patch changes the cmake build to use -Wl,-z,defs when linking and updates the dependencies so that -DBUILD_SHARED_LIBS=ON build still works. llvm-svn: 226611
This commit is contained in:
parent
9c1758f197
commit
0a6e715d56
@ -104,6 +104,13 @@ if(APPLE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_namespace -Wl,-undefined -Wl,suppress")
|
||||
endif()
|
||||
|
||||
# Pass -Wl,-z,defs. This makes sure all symbols are defined. Otherwise a DSO
|
||||
# build might work on ELF but fail on MachO/COFF.
|
||||
if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR WIN32))
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs")
|
||||
endif()
|
||||
|
||||
|
||||
function(append value)
|
||||
foreach(variable ${ARGN})
|
||||
set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
|
||||
|
@ -38,11 +38,20 @@ if(MSVC AND MSVC_VERSION EQUAL 1700)
|
||||
add_definitions(-D_VARIADIC_MAX=10)
|
||||
endif ()
|
||||
|
||||
set(LIBS
|
||||
LLVMSupport # Depends on llvm::raw_ostream
|
||||
)
|
||||
|
||||
find_library(PTHREAD_LIBRARY_PATH pthread)
|
||||
if (PTHREAD_LIBRARY_PATH)
|
||||
list(APPEND LIBS pthread)
|
||||
endif()
|
||||
|
||||
add_llvm_library(gtest
|
||||
googletest/src/gtest-all.cc
|
||||
|
||||
LINK_LIBS
|
||||
LLVMSupport # Depends on llvm::raw_ostream
|
||||
)
|
||||
${LIBS}
|
||||
)
|
||||
|
||||
add_subdirectory(UnitTestMain)
|
||||
|
Loading…
Reference in New Issue
Block a user