Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-libs/llvm-libunwind/, sys-libs/llvm-libunwind/files/
Date: Mon, 01 Aug 2016 22:06:01
Message-Id: 1470088166.10067c4d5717ce3fbe6a6a50c07d409fcd88d034.mgorny@gentoo
1 commit: 10067c4d5717ce3fbe6a6a50c07d409fcd88d034
2 Author: Lei Zhang <zhanglei.april <AT> gmail <DOT> com>
3 AuthorDate: Tue Jul 19 06:57:59 2016 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Mon Aug 1 21:49:26 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=10067c4d
7
8 sys-libs/llvm-libunwind: new package
9
10 This is LLVM's alternative implementation to sys-libs/libunwind.
11
12 Package-Manager: portage-2.2.28
13
14 sys-libs/llvm-libunwind/Manifest | 1 +
15 .../llvm-libunwind/files/libunwind-3.8-cmake.patch | 82 ++++++++++++++++++++++
16 .../llvm-libunwind/llvm-libunwind-3.8.1.ebuild | 42 +++++++++++
17 sys-libs/llvm-libunwind/metadata.xml | 16 +++++
18 4 files changed, 141 insertions(+)
19
20 diff --git a/sys-libs/llvm-libunwind/Manifest b/sys-libs/llvm-libunwind/Manifest
21 new file mode 100644
22 index 0000000..93c857f
23 --- /dev/null
24 +++ b/sys-libs/llvm-libunwind/Manifest
25 @@ -0,0 +1 @@
26 +DIST libunwind-3.8.1.src.tar.xz 60596 SHA256 21e58ce09a5982255ecf86b86359179ddb0be4f8f284a95be14201df90e48453 SHA512 2a60d7c4b0aee6c58f50089ac9fa2b756ab1d74faaee32f7436ddace4510589c7ffdd20478919966ed2fa8a23ee1b5d1b26115dbd8ee2834b00b5bcd61d00b14 WHIRLPOOL f2756de12d39de2df9bf06be3024327b3ca37f2537aae17efda6e94fb9807c31cab1a2eb070aca8e7e44467ab51c69fecbeef063e07472ec59657309a16bdd1c
27
28 diff --git a/sys-libs/llvm-libunwind/files/libunwind-3.8-cmake.patch b/sys-libs/llvm-libunwind/files/libunwind-3.8-cmake.patch
29 new file mode 100644
30 index 0000000..5f995be
31 --- /dev/null
32 +++ b/sys-libs/llvm-libunwind/files/libunwind-3.8-cmake.patch
33 @@ -0,0 +1,82 @@
34 +diff --git a/CMakeLists.txt b/CMakeLists.txt
35 +index d9b2367..b6bb5fd 100644
36 +--- a/CMakeLists.txt
37 ++++ b/CMakeLists.txt
38 +@@ -43,7 +43,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
39 + set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
40 + set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake")
41 + set(LLVM_LIT_PATH "${LLVM_PATH}/utils/lit/lit.py")
42 +- else ()
43 ++ elseif (NOT LIBUNWIND_BUILT_STANDALONE)
44 + message(FATAL_ERROR "llvm-config not found and LLVM_MAIN_SRC_DIR not defined. "
45 + "Reconfigure with -DLLVM_CONFIG=path/to/llvm-config "
46 + "or -DLLVM_PATH=path/to/llvm-source-root.")
47 +@@ -53,7 +53,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
48 + list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
49 + include("${LLVM_CMAKE_PATH}/AddLLVM.cmake")
50 + include("${LLVM_CMAKE_PATH}/HandleLLVMOptions.cmake")
51 +- else ()
52 ++ elseif (NOT LIBUNWIND_BUILT_STANDALONE)
53 + message(FATAL_ERROR "Not found: ${LLVM_CMAKE_PATH}")
54 + endif ()
55 +
56 +@@ -103,6 +103,7 @@ option(LIBUNWIND_ENABLE_ASSERTIONS "Enable assertions independent of build mode.
57 + option(LIBUNWIND_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
58 + option(LIBUNWIND_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
59 + option(LIBUNWIND_ENABLE_SHARED "Build libunwind as a shared library." ON)
60 ++option(LIBUNWIND_ENABLE_STATIC "Build libunwind as a static library." OFF)
61 +
62 + set(LIBUNWIND_GCC_TOOLCHAIN "" CACHE STRING "GCC toolchain for cross compiling.")
63 + set(LIBUNWIND_SYSROOT "" CACHE STRING "Sysroot for cross compiling.")
64 +@@ -136,9 +137,9 @@ macro(append_if list condition var)
65 + endmacro()
66 +
67 + set(LIBUNWIND_C_FLAGS "")
68 +-set(LIBUNWIND_CXX_FLAGS "")
69 ++set(LIBUNWIND_CXX_FLAGS "-std=c++11")
70 + set(LIBUNWIND_COMPILE_FLAGS "")
71 +-set(LIBUNWIND_LINK_FLAGS "")
72 ++set(LIBUNWIND_LINK_FLAGS "-Wl,-z,noexecstack")
73 +
74 + append_if(LIBUNWIND_COMPILE_FLAGS LIBUNWIND_HAS_WERROR_FLAG -Werror=return-type)
75 +
76 +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
77 +index ee01e9a..c66673e 100644
78 +--- a/src/CMakeLists.txt
79 ++++ b/src/CMakeLists.txt
80 +@@ -18,7 +18,8 @@ set(LIBUNWIND_ASM_SOURCES
81 + UnwindRegistersSave.S)
82 + set_source_files_properties(${LIBUNWIND_ASM_SOURCES}
83 + PROPERTIES
84 +- LANGUAGE C)
85 ++ LANGUAGE C
86 ++ COMPILE_FLAGS "-Wa,--noexecstack")
87 +
88 + set(LIBUNWIND_HEADERS
89 + AddressSpace.hpp
90 +@@ -51,8 +52,10 @@ set(LIBUNWIND_SOURCES
91 +
92 + if (LIBUNWIND_ENABLE_SHARED)
93 + add_library(unwind SHARED ${LIBUNWIND_SOURCES} ${LIBUNWIND_HEADERS})
94 +-else()
95 +- add_library(unwind STATIC ${LIBUNWIND_SOURCES} ${LIBUNWIND_HEADERS})
96 ++endif ()
97 ++if (LIBUNWIND_ENABLE_STATIC)
98 ++ add_library(unwind_static STATIC ${LIBUNWIND_SOURCES} ${LIBUNWIND_HEADERS})
99 ++ set_target_properties(unwind_static PROPERTIES OUTPUT_NAME unwind)
100 + endif ()
101 +
102 + # Generate library list.
103 +@@ -106,7 +109,10 @@ set_target_properties(unwind
104 + set_property(SOURCE ${LIBUNWIND_CXX_SOURCES}
105 + APPEND_STRING PROPERTY COMPILE_FLAGS "${LIBUNWIND_CXX_FLAGS}")
106 +
107 +-install(TARGETS unwind
108 +- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
109 +- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
110 ++if (LIBUNWIND_ENABLE_SHARED)
111 ++ install(TARGETS unwind LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
112 ++endif ()
113 ++if (LIBUNWIND_ENABLE_STATIC)
114 ++ install(TARGETS unwind_static ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
115 ++endif ()
116
117 diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-3.8.1.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-3.8.1.ebuild
118 new file mode 100644
119 index 0000000..46082d3
120 --- /dev/null
121 +++ b/sys-libs/llvm-libunwind/llvm-libunwind-3.8.1.ebuild
122 @@ -0,0 +1,42 @@
123 +# Copyright 1999-2016 Gentoo Foundation
124 +# Distributed under the terms of the GNU General Public License v2
125 +# $Id$
126 +
127 +EAPI=6
128 +
129 +inherit cmake-utils
130 +
131 +MY_P="libunwind-${PV}"
132 +DESCRIPTION="C++ runtime stack unwinder from LLVM"
133 +HOMEPAGE="https://github.com/llvm-mirror/libunwind"
134 +SRC_URI="http://llvm.org/releases/${PV}/${MY_P}.src.tar.xz"
135 +
136 +LICENSE="|| ( UoI-NCSA MIT )"
137 +SLOT="0"
138 +KEYWORDS="~amd64"
139 +IUSE="+static-libs"
140 +
141 +DEPEND=""
142 +RDEPEND="!sys-libs/libunwind"
143 +
144 +S="${WORKDIR}/${MY_P}.src"
145 +
146 +src_prepare() {
147 + default
148 + eapply "${FILESDIR}/libunwind-3.8-cmake.patch"
149 +}
150 +
151 +src_configure() {
152 + local libdir=$(get_libdir)
153 +
154 + local mycmakeargs=(
155 + # work-around attempting to use llvm-config to get llvm sources
156 + # (that are not needed at all)
157 + -DLLVM_CONFIG=OFF
158 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
159 + -DLIBUNWIND_BUILT_STANDALONE=ON
160 + -DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)
161 + )
162 +
163 + cmake-utils_src_configure
164 +}
165
166 diff --git a/sys-libs/llvm-libunwind/metadata.xml b/sys-libs/llvm-libunwind/metadata.xml
167 new file mode 100644
168 index 0000000..2380c52
169 --- /dev/null
170 +++ b/sys-libs/llvm-libunwind/metadata.xml
171 @@ -0,0 +1,16 @@
172 +<?xml version="1.0" encoding="UTF-8"?>
173 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
174 +<pkgmetadata>
175 + <maintainer type="person">
176 + <email>zhanglei.april@×××××.com</email>
177 + <name>Lei Zhang</name>
178 + </maintainer>
179 + <maintainer type="person">
180 + <email>blueness@g.o</email>
181 + <name>Anthony G. Basile</name>
182 + </maintainer>
183 + <maintainer type="person">
184 + <email>mgorny@g.o</email>
185 + <name>Michał Górny</name>
186 + </maintainer>
187 +</pkgmetadata>