summaryrefslogtreecommitdiff
path: root/pkgs/development/compilers/llvm/7/libunwind
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/llvm/7/libunwind')
-rw-r--r--pkgs/development/compilers/llvm/7/libunwind/default.nix35
-rw-r--r--pkgs/development/compilers/llvm/7/libunwind/gnu-install-dirs.patch28
2 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/development/compilers/llvm/7/libunwind/default.nix b/pkgs/development/compilers/llvm/7/libunwind/default.nix
new file mode 100644
index 000000000000..14c0abc5153f
--- /dev/null
+++ b/pkgs/development/compilers/llvm/7/libunwind/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, version, fetch, fetchpatch, cmake, llvm, libcxx
+, enableShared ? !stdenv.hostPlatform.isStatic
+}:
+
+stdenv.mkDerivation {
+ pname = "libunwind";
+ inherit version;
+
+ src = fetch "libunwind" "035dsxs10nyiqd00q07yycvmkjl01yz4jdlrjvmch8klxg4pyjhp";
+
+ patches = [
+ ./gnu-install-dirs.patch
+ ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [
+ # removes use of `new` that require libc++
+ (fetchpatch {
+ url = "https://github.com/llvm-mirror/libunwind/commit/34a45c630d4c79af403661d267db42fbe7de1178.patch";
+ sha256 = "0n0pv6jvcky8pn3srhrf9x5kbnd0d2kia9xlx2g590f5q0bgwfhv";
+ })
+ # cleans up remaining libc++ dependencies (mostly header inclusions)
+ (fetchpatch {
+ url = "https://github.com/llvm-mirror/libunwind/commit/e050272d2eb57eb4e56a37b429a61df2ebb8aa3e.patch";
+ sha256 = "170mwmj0wf40iyk1kzdpaiy36rz9n8dpl881h4h7s5da0rh51xya";
+ includes = [ "src/libunwind.cpp" "src/UnwindCursor.hpp" ];
+ })
+ ];
+
+ nativeBuildInputs = [ cmake llvm.dev ];
+
+ cmakeFlags = lib.optionals (!enableShared) [
+ "-DLIBUNWIND_ENABLE_SHARED=OFF"
+ ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [
+ "-DLIBUNWIND_HAS_NOSTDINCXX_FLAG=ON"
+ "-DLLVM_ENABLE_LIBCXX=ON"
+ ];
+}
diff --git a/pkgs/development/compilers/llvm/7/libunwind/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/7/libunwind/gnu-install-dirs.patch
new file mode 100644
index 000000000000..21d4fa80ea13
--- /dev/null
+++ b/pkgs/development/compilers/llvm/7/libunwind/gnu-install-dirs.patch
@@ -0,0 +1,28 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0e48d713837a..05483c367bd1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,6 +18,8 @@ set(CMAKE_MODULE_PATH
+ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ project(libunwind)
+
++ include(GNUInstallDirs)
++
+ # Rely on llvm-config.
+ set(CONFIG_OUTPUT)
+ if(NOT LLVM_CONFIG_PATH)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 937159e2cb86..07f8b936e7e5 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -141,8 +141,8 @@ add_custom_target(unwind DEPENDS ${LIBUNWIND_BUILD_TARGETS})
+
+ if (LIBUNWIND_INSTALL_LIBRARY)
+ install(TARGETS ${LIBUNWIND_INSTALL_TARGETS}
+- LIBRARY DESTINATION ${LIBUNWIND_INSTALL_PREFIX}lib${LIBUNWIND_LIBDIR_SUFFIX} COMPONENT unwind
+- ARCHIVE DESTINATION ${LIBUNWIND_INSTALL_PREFIX}lib${LIBUNWIND_LIBDIR_SUFFIX} COMPONENT unwind)
++ LIBRARY DESTINATION ${LIBUNWIND_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} COMPONENT unwind
++ ARCHIVE DESTINATION ${LIBUNWIND_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX} COMPONENT unwind)
+ endif()
+
+ if (NOT CMAKE_CONFIGURATION_TYPES AND LIBUNWIND_INSTALL_LIBRARY)