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> |