<div dir="ltr">Looks like we have another place that didn't expect -l in PTHREAD_LIB. <div>I'll fix it ASAP.</div><div><br></div><div>--Artem</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 21, 2016 at 2:28 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Looks like this broke the ocaml binding:<br>
<br>
<a href="http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/37461/steps/test/logs/stdio" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/37461/steps/test/logs/stdio</a><br>
<br>
On 21 June 2016 at 15:34, Artem Belevich via llvm-commits<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: tra<br>
> Date: Tue Jun 21 14:34:40 2016<br>
> New Revision: 273302<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=273302&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=273302&view=rev</a><br>
> Log:<br>
> [build] Make sure to link main executable with pthreads<br>
><br>
> Otherwise it gets linked in by one of the dependencies of shared<br>
> libraries which may be too late and we end up with weird crashes in<br>
> std::call_once().<br>
><br>
> Differential Revision: <a href="http://reviews.llvm.org/D21478" rel="noreferrer" target="_blank">http://reviews.llvm.org/D21478</a><br>
><br>
> Modified:<br>
>     llvm/trunk/cmake/config-ix.cmake<br>
>     llvm/trunk/cmake/modules/AddLLVM.cmake<br>
>     llvm/trunk/tools/llvm-config/CMakeLists.txt<br>
><br>
> Modified: llvm/trunk/cmake/config-ix.cmake<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=273302&r1=273301&r2=273302&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=273302&r1=273301&r2=273302&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/cmake/config-ix.cmake (original)<br>
> +++ llvm/trunk/cmake/config-ix.cmake Tue Jun 21 14:34:40 2016<br>
> @@ -110,7 +110,13 @@ if( NOT PURE_WINDOWS )<br>
>  endif()<br>
><br>
>  if(HAVE_LIBPTHREAD)<br>
> -  set(PTHREAD_LIB pthread)<br>
> +  # We want to find pthreads library and at the moment we do want to<br>
> +  # have it reported as '-l<lib>' instead of '-pthread'.<br>
> +  # TODO: switch to -pthread once the rest of the build system can deal with it.<br>
> +  set(CMAKE_THREAD_PREFER_PTHREAD TRUE)<br>
> +  set(THREADS_HAVE_PTHREAD_ARG Off)<br>
> +  find_package(Threads REQUIRED)<br>
> +  set(PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})<br>
>  endif()<br>
><br>
>  # Don't look for these libraries on Windows. Also don't look for them if we're<br>
><br>
> Modified: llvm/trunk/cmake/modules/AddLLVM.cmake<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=273302&r1=273301&r2=273302&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=273302&r1=273301&r2=273302&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/cmake/modules/AddLLVM.cmake (original)<br>
> +++ llvm/trunk/cmake/modules/AddLLVM.cmake Tue Jun 21 14:34:40 2016<br>
> @@ -670,6 +670,12 @@ macro(add_llvm_executable name)<br>
>    if(NOT ARG_IGNORE_EXTERNALIZE_DEBUGINFO)<br>
>      llvm_externalize_debuginfo(${name})<br>
>    endif()<br>
> +  if (PTHREAD_LIB)<br>
> +    # libpthreads overrides some standard library symbols, so main<br>
> +    # executable must be linked with it in order to provide consistent<br>
> +    # API for all shared libaries loaded by this executable.<br>
> +    target_link_libraries(${name} ${PTHREAD_LIB})<br>
> +  endif()<br>
>  endmacro(add_llvm_executable name)<br>
><br>
>  function(export_executable_symbols target)<br>
> @@ -953,7 +959,10 @@ function(add_unittest test_suite test_na<br>
>    add_llvm_executable(${test_name} IGNORE_EXTERNALIZE_DEBUGINFO ${ARGN})<br>
>    set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})<br>
>    set_output_directory(${test_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir})<br>
> -  target_link_libraries(${test_name} gtest_main gtest)<br>
> +  # libpthreads overrides some standard library symbols, so main<br>
> +  # executable must be linked with it in order to provide consistent<br>
> +  # API for all shared libaries loaded by this executable.<br>
> +  target_link_libraries(${test_name} gtest_main gtest ${PTHREAD_LIB})<br>
><br>
>    add_dependencies(${test_suite} ${test_name})<br>
>    get_target_property(test_suite_folder ${test_suite} FOLDER)<br>
><br>
> Modified: llvm/trunk/tools/llvm-config/CMakeLists.txt<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=273302&r1=273301&r2=273302&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=273302&r1=273301&r2=273302&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/tools/llvm-config/CMakeLists.txt (original)<br>
> +++ llvm/trunk/tools/llvm-config/CMakeLists.txt Tue Jun 21 14:34:40 2016<br>
> @@ -14,7 +14,13 @@ foreach(l ${LLVM_SYSTEM_LIBS_LIST})<br>
>    if(MSVC)<br>
>      set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}.lib")<br>
>    else()<br>
> -    set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")<br>
> +    if (l MATCHES "^-")<br>
> +      # If it's an option, pass it without changes.<br>
> +      set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}")<br>
> +    else()<br>
> +      # Otherwise assume it's a library name we need to link with.<br>
> +      set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")<br>
> +    endif()<br>
>    endif()<br>
>  endforeach()<br>
>  string(REPLACE ";" " " SYSTEM_LIBS "${SYSTEM_LIBS}")<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">--Artem Belevich</div></div>
</div>