[llvm] r273302 - [build] Make sure to link main executable with pthreads
Artem Belevich via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 21 16:18:36 PDT 2016
OCaml bindings should be fixed in r273333.
--Artem
On Tue, Jun 21, 2016 at 2:37 PM, Artem Belevich <tra at google.com> wrote:
> Looks like we have another place that didn't expect -l in PTHREAD_LIB.
> I'll fix it ASAP.
>
> --Artem
>
> On Tue, Jun 21, 2016 at 2:28 PM, Rafael EspĂndola <
> rafael.espindola at gmail.com> wrote:
>
>> Looks like this broke the ocaml binding:
>>
>>
>> http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/37461/steps/test/logs/stdio
>>
>> On 21 June 2016 at 15:34, Artem Belevich via llvm-commits
>> <llvm-commits at lists.llvm.org> wrote:
>> > Author: tra
>> > Date: Tue Jun 21 14:34:40 2016
>> > New Revision: 273302
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=273302&view=rev
>> > Log:
>> > [build] Make sure to link main executable with pthreads
>> >
>> > Otherwise it gets linked in by one of the dependencies of shared
>> > libraries which may be too late and we end up with weird crashes in
>> > std::call_once().
>> >
>> > Differential Revision: http://reviews.llvm.org/D21478
>> >
>> > Modified:
>> > llvm/trunk/cmake/config-ix.cmake
>> > llvm/trunk/cmake/modules/AddLLVM.cmake
>> > llvm/trunk/tools/llvm-config/CMakeLists.txt
>> >
>> > Modified: llvm/trunk/cmake/config-ix.cmake
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=273302&r1=273301&r2=273302&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/cmake/config-ix.cmake (original)
>> > +++ llvm/trunk/cmake/config-ix.cmake Tue Jun 21 14:34:40 2016
>> > @@ -110,7 +110,13 @@ if( NOT PURE_WINDOWS )
>> > endif()
>> >
>> > if(HAVE_LIBPTHREAD)
>> > - set(PTHREAD_LIB pthread)
>> > + # We want to find pthreads library and at the moment we do want to
>> > + # have it reported as '-l<lib>' instead of '-pthread'.
>> > + # TODO: switch to -pthread once the rest of the build system can
>> deal with it.
>> > + set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
>> > + set(THREADS_HAVE_PTHREAD_ARG Off)
>> > + find_package(Threads REQUIRED)
>> > + set(PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
>> > endif()
>> >
>> > # Don't look for these libraries on Windows. Also don't look for them
>> if we're
>> >
>> > Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=273302&r1=273301&r2=273302&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
>> > +++ llvm/trunk/cmake/modules/AddLLVM.cmake Tue Jun 21 14:34:40 2016
>> > @@ -670,6 +670,12 @@ macro(add_llvm_executable name)
>> > if(NOT ARG_IGNORE_EXTERNALIZE_DEBUGINFO)
>> > llvm_externalize_debuginfo(${name})
>> > endif()
>> > + if (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})
>> > + endif()
>> > endmacro(add_llvm_executable name)
>> >
>> > function(export_executable_symbols target)
>> > @@ -953,7 +959,10 @@ function(add_unittest test_suite test_na
>> > 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_main gtest)
>> > + # 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})
>> >
>> > add_dependencies(${test_suite} ${test_name})
>> > get_target_property(test_suite_folder ${test_suite} FOLDER)
>> >
>> > Modified: llvm/trunk/tools/llvm-config/CMakeLists.txt
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=273302&r1=273301&r2=273302&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/tools/llvm-config/CMakeLists.txt (original)
>> > +++ llvm/trunk/tools/llvm-config/CMakeLists.txt Tue Jun 21 14:34:40 2016
>> > @@ -14,7 +14,13 @@ foreach(l ${LLVM_SYSTEM_LIBS_LIST})
>> > if(MSVC)
>> > set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}.lib")
>> > else()
>> > - set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")
>> > + if (l MATCHES "^-")
>> > + # If it's an option, pass it without changes.
>> > + set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}")
>> > + else()
>> > + # Otherwise assume it's a library name we need to link with.
>> > + set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")
>> > + endif()
>> > endif()
>> > endforeach()
>> > string(REPLACE ";" " " SYSTEM_LIBS "${SYSTEM_LIBS}")
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
>
> --
> --Artem Belevich
>
--
--Artem Belevich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160621/35489bf5/attachment.html>
More information about the llvm-commits
mailing list