Detect __sync_add_and_fetch_8() and __atomic_fetch_add_8()
authorAlberto Garcia <berto@igalia.com>
Mon, 7 May 2018 11:41:30 +0000 (12:41 +0100)
committerAlberto Garcia <berto@igalia.com>
Mon, 7 May 2018 11:41:30 +0000 (12:41 +0100)
===================================================================

Gbp-Pq: Name fix-atomics-build.patch

Source/JavaScriptCore/CMakeLists.txt
Source/WTF/wtf/CMakeLists.txt
Source/cmake/OptionsGTK.cmake

index 94036df9213540c4693ce71f483c22cf41f7fbf8..d3d8c841c1e8ee764328e9313786699bcc1dc2ba 100644 (file)
@@ -116,15 +116,15 @@ set(JavaScriptCore_LIBRARIES
     ${LLVM_LIBRARIES}
 )
 
-# Since r228149, on MIPS we need to link with -latomic, because
-# __atomic_fetch_add_8 is not available as a compiler intrinsic. It is
-# available on other platforms (including 32-bit Arm), so the link with
-# libatomic is only neede on MIPS.
-if (WTF_CPU_MIPS)
-    list(APPEND JavaScriptCore_LIBRARIES
-        -latomic
-    )
+file(WRITE ${CMAKE_BINARY_DIR}/test_atomics.cpp
+     "int main(void)\n"
+     "{ long long x = 1; return (int) __atomic_fetch_add_8(&x, 1, 1); }\n")
+try_compile(ATOMICS_BUILD_SUCCEEDED ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/test_atomics.cpp)
+message(STATUS "Found __atomic_fetch_add_8(): ${ATOMICS_BUILD_SUCCEEDED}")
+if (NOT ATOMICS_BUILD_SUCCEEDED)
+    list(APPEND JavaScriptCore_LIBRARIES -latomic)
 endif ()
+file(REMOVE ${CMAKE_BINARY_DIR}/test_atomics.cpp)
 
 set(JavaScriptCore_SCRIPTS_SOURCES_DIR "${JAVASCRIPTCORE_DIR}/Scripts")
 
index 220bafd348b3063383ab7a542dc2ede111ac7085..bc34609fdb950186dab1c03e9d7a2f77f97a3edc 100644 (file)
@@ -315,7 +315,6 @@ set(WTF_HEADERS
 
 set(WTF_SOURCES
     Assertions.cpp
-    Atomics.cpp
     AutomaticThread.cpp
     BitVector.cpp
     CPUTime.cpp
@@ -458,6 +457,16 @@ if (NOT USE_SYSTEM_MALLOC)
     list(APPEND WTF_LIBRARIES bmalloc)
 endif ()
 
+file(WRITE ${CMAKE_BINARY_DIR}/test_atomics.cpp
+     "int main(void)\n"
+     "{ long long x = 1; return (int) __sync_add_and_fetch_8(&x, 1); }\n")
+try_compile(ATOMICS_BUILD_SUCCEEDED ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/test_atomics.cpp)
+message(STATUS "Found __sync_add_and_fetch_8(): ${ATOMICS_BUILD_SUCCEEDED}")
+if (NOT ATOMICS_BUILD_SUCCEEDED)
+    list(APPEND WTF_SOURCES Atomics.cpp)
+endif ()
+file(REMOVE ${CMAKE_BINARY_DIR}/test_atomics.cpp)
+
 list(APPEND WTF_SOURCES
     unicode/CollatorDefault.cpp
 
index 7b27c71897b24727c5a30565f63e2339b65ceca0..98085d547936b1c6752c4313739dc4734a8da27e 100644 (file)
@@ -32,6 +32,7 @@ find_package(LibSoup 2.42.0 REQUIRED)
 find_package(LibXml2 2.8.0 REQUIRED)
 find_package(PNG REQUIRED)
 find_package(Sqlite REQUIRED)
+set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 find_package(ZLIB REQUIRED)
 find_package(ATK REQUIRED)