pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

lldb-git: Proper fix for standalone build



Module Name:	pkgsrc-wip
Committed By:	Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By:	kamil
Date:		Sun Jul 31 16:27:58 2016 +0200
Changeset:	987244313dfd2e9c6edfd6c214bb6f776e66a424

Modified Files:
	lldb-git/distinfo
Added Files:
	lldb-git/patches/patch-cmake_modules_CheckAtomic.cmake
Removed Files:
	lldb-git/patches/patch-cmake_modules_LLDBStandalone.cmake

Log Message:
lldb-git: Proper fix for standalone build

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=987244313dfd2e9c6edfd6c214bb6f776e66a424

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 lldb-git/distinfo                                  |   3 +-
 .../patches/patch-cmake_modules_CheckAtomic.cmake  | 111 +++++++++++++++++++++
 .../patch-cmake_modules_LLDBStandalone.cmake       |  13 ---
 3 files changed, 113 insertions(+), 14 deletions(-)

diffs:
diff --git a/lldb-git/distinfo b/lldb-git/distinfo
index 845987c..825d181 100644
--- a/lldb-git/distinfo
+++ b/lldb-git/distinfo
@@ -12,7 +12,8 @@ Size (libcxx-3.6.2.src.tar.xz) = 944020 bytes
 SHA1 (llvm-3.6.2.src.tar.xz) = 7a00257eb2bc9431e4c77c3a36b033072c54bc7e
 RMD160 (llvm-3.6.2.src.tar.xz) = 521cbc5fe2925ea3c6e90c7a31f752a04045c972
 Size (llvm-3.6.2.src.tar.xz) = 12802380 bytes
-SHA1 (patch-cmake_modules_LLDBStandalone.cmake) = d8e5d921e726e9d2561b155d42ab24d785624888
+SHA1 (patch-cmake_modules_CheckAtomic.cmake) = cc1e9adb624d7002d1f8cdf4c2fa7e009dcce854
+SHA1 (patch-cmake_modules_LLDBStandalone.cmake) = 695942625d356e5b4893c9da23a414d438e96ec8
 SHA1 (patch-include_lldb_Utility_regcclass.h) = 9ed649e8deb5924feaf82a6e675f5c596367b3d6
 SHA1 (patch-include_lldb_Utility_regcname.h) = b67145f0437d3c09adc33a925d49267cd9ba4fd7
 SHA1 (patch-include_lldb_Utility_regengine.inc) = a031c43a63acab80a97cfb7727326d610d4ad9ab
diff --git a/lldb-git/patches/patch-cmake_modules_CheckAtomic.cmake b/lldb-git/patches/patch-cmake_modules_CheckAtomic.cmake
new file mode 100644
index 0000000..0e10cad
--- /dev/null
+++ b/lldb-git/patches/patch-cmake_modules_CheckAtomic.cmake
@@ -0,0 +1,111 @@
+$NetBSD$
+
+--- cmake/modules/CheckAtomic.cmake.orig	2016-07-31 15:05:59.075763243 +0000
++++ cmake/modules/CheckAtomic.cmake
+@@ -0,0 +1,106 @@
++# atomic builtins are required for threading support.
++
++INCLUDE(CheckCXXSourceCompiles)
++
++# Sometimes linking against libatomic is required for atomic ops, if
++# the platform doesn't support lock-free atomics.
++
++function(check_working_cxx_atomics varname)
++  set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
++  set(CMAKE_REQUIRED_FLAGS "-std=c++11")
++  CHECK_CXX_SOURCE_COMPILES("
++#include <atomic>
++std::atomic<int> x;
++int main() {
++  return x;
++}
++" ${varname})
++  set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
++endfunction(check_working_cxx_atomics)
++
++function(check_working_cxx_atomics64 varname)
++  set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
++  set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
++  CHECK_CXX_SOURCE_COMPILES("
++#include <atomic>
++#include <cstdint>
++std::atomic<uint64_t> x (0);
++int main() {
++  uint64_t i = x.load(std::memory_order_relaxed);
++  return 0;
++}
++" ${varname})
++  set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
++endfunction(check_working_cxx_atomics64)
++
++
++# This isn't necessary on MSVC, so avoid command-line switch annoyance
++# by only running on GCC-like hosts.
++if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
++  # First check if atomics work without the library.
++  check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
++  # If not, check if the library exists, and atomics work with it.
++  if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
++    check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
++    if( HAVE_LIBATOMIC )
++      list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++      check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
++      if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
++	message(FATAL_ERROR "Host compiler must support std::atomic!")
++      endif()
++    else()
++      message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
++    endif()
++  endif()
++endif()
++
++# Check for 64 bit atomic operations.
++if(MSVC)
++  set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
++else()
++  check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
++endif()
++
++# If not, check if the library exists, and atomics work with it.
++if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
++  check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
++  if(HAVE_CXX_LIBATOMICS64)
++    list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
++    if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
++      message(FATAL_ERROR "Host compiler must support std::atomic!")
++    endif()
++  else()
++    message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
++  endif()
++endif()
++
++## TODO: This define is only used for the legacy atomic operations in
++## llvm's Atomic.h, which should be replaced.  Other code simply
++## assumes C++11 <atomic> works.
++CHECK_CXX_SOURCE_COMPILES("
++#ifdef _MSC_VER
++#include <Intrin.h> /* Workaround for PR19898. */
++#include <windows.h>
++#endif
++int main() {
++#ifdef _MSC_VER
++        volatile LONG val = 1;
++        MemoryBarrier();
++        InterlockedCompareExchange(&val, 0, 1);
++        InterlockedIncrement(&val);
++        InterlockedDecrement(&val);
++#else
++        volatile unsigned long val = 1;
++        __sync_synchronize();
++        __sync_val_compare_and_swap(&val, 1, 0);
++        __sync_add_and_fetch(&val, 1);
++        __sync_sub_and_fetch(&val, 1);
++#endif
++        return 0;
++      }
++" LLVM_HAS_ATOMICS)
++
++if( NOT LLVM_HAS_ATOMICS )
++  message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing")
++endif()
diff --git a/lldb-git/patches/patch-cmake_modules_LLDBStandalone.cmake b/lldb-git/patches/patch-cmake_modules_LLDBStandalone.cmake
deleted file mode 100644
index d039441..0000000
--- a/lldb-git/patches/patch-cmake_modules_LLDBStandalone.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-$NetBSD$
-
---- cmake/modules/LLDBStandalone.cmake.orig	2016-07-31 14:13:19.000000000 +0000
-+++ cmake/modules/LLDBStandalone.cmake
-@@ -86,7 +86,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR
- 
-   include(AddLLVM)
-   include(HandleLLVMOptions)
--  include(CheckAtomic)
-+#  include(CheckAtomic)
- 
-   if (PYTHON_EXECUTABLE STREQUAL "")
-     set(Python_ADDITIONAL_VERSIONS 3.5 3.4 3.3 3.2 3.1 3.0 2.7 2.6 2.5)


Home | Main Index | Thread Index | Old Index