| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index d618e83..0e76525 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -293,6 +293,18 @@ remove_flags(-DNDEBUG -UNDEBUG -D_DEBUG |
| # so they don't get transformed into -Wno and -errors respectivly. |
| remove_flags(-Wno-pedantic -pedantic-errors -pedantic) |
| |
| +# FIXME: this is cribbed from HandleLLVMOptions.cmake. |
| +if(LIBCXX_STANDALONE_BUILD) |
| + # 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 OR CYGWIN OR |
| + ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR |
| + ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") AND |
| + NOT LLVM_USE_SANITIZER) |
| + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs") |
| + endif() |
| +endif() |
| + |
| # Required flags ============================================================== |
| add_compile_flags_if_supported(-std=c++11) |
| if (NOT MSVC AND NOT LIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG) |