<p dir="ltr"><br>
On Sep 14, 2014 7:55 PM, "Evgeniy Stepanov" <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>> wrote:<br>
><br>
> I understand that since gcc-4.8 they've moved atomics implementation<br>
> to libatomic.a, and it's supposed to be linked whenever atomics are<br>
> used. It's definitely needed on ARM in general, not just on Android.<br>
><br>
> Does this change break anything?<br>
><br>
 <br>
Nope, I was just being pedantic. Thanks for the explanation!</p>
<p dir="ltr">> On Sun, Sep 14, 2014 at 6:33 PM, İsmail Dönmez <<a href="mailto:ismail@donmez.ws">ismail@donmez.ws</a>> wrote:<br>
> > Hi,<br>
> ><br>
> > On Fri, Sep 12, 2014 at 2:09 PM, Evgeniy Stepanov<br>
> > <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>> wrote:<br>
> >> Author: eugenis<br>
> >> Date: Fri Sep 12 06:08:59 2014<br>
> >> New Revision: 217666<br>
> >><br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=217666&view=rev">http://llvm.org/viewvc/llvm-project?rev=217666&view=rev</a><br>
> >> Log:<br>
> >> Add CMake check for libatomic.<br>
> >><br>
> >><br>
> >> Modified:<br>
> >>     llvm/trunk/cmake/modules/CheckAtomic.cmake<br>
> >>     llvm/trunk/cmake/modules/HandleLLVMOptions.cmake<br>
> >>     llvm/trunk/lib/Support/CMakeLists.txt<br>
> >><br>
> >> Modified: llvm/trunk/cmake/modules/CheckAtomic.cmake<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/CheckAtomic.cmake?rev=217666&r1=217665&r2=217666&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/CheckAtomic.cmake?rev=217666&r1=217665&r2=217666&view=diff</a><br>
> >> ==============================================================================<br>
> >> --- llvm/trunk/cmake/modules/CheckAtomic.cmake (original)<br>
> >> +++ llvm/trunk/cmake/modules/CheckAtomic.cmake Fri Sep 12 06:08:59 2014<br>
> >> @@ -2,6 +2,11 @@<br>
> >><br>
> >>  INCLUDE(CheckCXXSourceCompiles)<br>
> >><br>
> >> +check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)<br>
> >> +if (HAVE_LIBATOMIC)<br>
> >> +  list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")<br>
> >> +endif()<br>
> >> +<br>
> >>  CHECK_CXX_SOURCE_COMPILES("<br>
> >>  #ifdef _MSC_VER<br>
> >>  #include <windows.h><br>
> >><br>
> >> Modified: llvm/trunk/cmake/modules/HandleLLVMOptions.cmake<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=217666&r1=217665&r2=217666&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=217666&r1=217665&r2=217666&view=diff</a><br>
> >> ==============================================================================<br>
> >> --- llvm/trunk/cmake/modules/HandleLLVMOptions.cmake (original)<br>
> >> +++ llvm/trunk/cmake/modules/HandleLLVMOptions.cmake Fri Sep 12 06:08:59 2014<br>
> >> @@ -25,9 +25,6 @@ if(NOT LLVM_FORCE_USE_OLD_TOOLCHAIN)<br>
> >>        set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})<br>
> >>        set(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})<br>
> >>        set(CMAKE_REQUIRED_FLAGS "-std=c++0x")<br>
> >> -      if (ANDROID)<br>
> >> -        set(CMAKE_REQUIRED_LIBRARIES "atomic")<br>
> >> -      endif()<br>
> >>        check_cxx_source_compiles("<br>
> >>  #include <atomic><br>
> >>  std::atomic<float> x(0.0f);<br>
> ><br>
> > This used to be an Android only link library.<br>
> ><br>
> >> Modified: llvm/trunk/lib/Support/CMakeLists.txt<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/CMakeLists.txt?rev=217666&r1=217665&r2=217666&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/CMakeLists.txt?rev=217666&r1=217665&r2=217666&view=diff</a><br>
> >> ==============================================================================<br>
> >> --- llvm/trunk/lib/Support/CMakeLists.txt (original)<br>
> >> +++ llvm/trunk/lib/Support/CMakeLists.txt Fri Sep 12 06:08:59 2014<br>
> >> @@ -132,6 +132,9 @@ if( NOT MSVC )<br>
> >>          set(system_libs ${system_libs} ${TERMINFO_LIBS})<br>
> >>        endif()<br>
> >>      endif()<br>
> >> +    if( LLVM_ENABLE_THREADS AND HAVE_LIBATOMIC )<br>
> >> +      set(system_libs ${system_libs} atomic)<br>
> >> +    endif()<br>
> >>      if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD )<br>
> >>        set(system_libs ${system_libs} pthread)<br>
> >>      endif()<br>
> ><br>
> > Now everyone links to it if available, that looks wrong.<br>
</p>