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/
Date: Wed, 01 Aug 2018 20:53:43
Message-Id: 1533156802.4c3b65b73ec03b11cbd3375c85342e32ab80bd42.mgorny@gentoo
1 commit: 4c3b65b73ec03b11cbd3375c85342e32ab80bd42
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Wed Aug 1 16:43:56 2018 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 1 20:53:22 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4c3b65b7
7
8 sys-libs/llvm-libunwind: Branch out LLVM 7.0
9
10 .../llvm-libunwind/llvm-libunwind-7.0.9999.ebuild | 146 +++++++++++++++++++++
11 1 file changed, 146 insertions(+)
12
13 diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-7.0.9999.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-7.0.9999.ebuild
14 new file mode 100644
15 index 00000000000..377bafe2462
16 --- /dev/null
17 +++ b/sys-libs/llvm-libunwind/llvm-libunwind-7.0.9999.ebuild
18 @@ -0,0 +1,146 @@
19 +# Copyright 1999-2018 Gentoo Foundation
20 +# Distributed under the terms of the GNU General Public License v2
21 +
22 +EAPI=6
23 +
24 +: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
25 +# (needed due to CMAKE_BUILD_TYPE != Gentoo)
26 +CMAKE_MIN_VERSION=3.7.0-r1
27 +PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
28 +inherit cmake-multilib git-r3 llvm multiprocessing python-any-r1
29 +
30 +DESCRIPTION="C++ runtime stack unwinder from LLVM"
31 +HOMEPAGE="https://github.com/llvm-mirror/libunwind"
32 +SRC_URI=""
33 +EGIT_REPO_URI="https://git.llvm.org/git/libunwind.git
34 + https://github.com/llvm-mirror/libunwind.git"
35 +EGIT_BRANCH="release_70"
36 +
37 +LICENSE="|| ( UoI-NCSA MIT )"
38 +SLOT="0"
39 +KEYWORDS=""
40 +IUSE="debug +static-libs test"
41 +RESTRICT="!test? ( test )"
42 +
43 +RDEPEND="!sys-libs/libunwind"
44 +# llvm-6 for new lit options
45 +DEPEND="
46 + >=sys-devel/llvm-6
47 + test? ( >=sys-devel/clang-3.9.0
48 + $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') )"
49 +
50 +# least intrusive of all
51 +CMAKE_BUILD_TYPE=RelWithDebInfo
52 +
53 +python_check_deps() {
54 + has_version "dev-python/lit[${PYTHON_USEDEP}]"
55 +}
56 +
57 +pkg_setup() {
58 + use test && python-any-r1_pkg_setup
59 +}
60 +
61 +src_unpack() {
62 + if use test; then
63 + git-r3_fetch "https://git.llvm.org/git/libcxx.git
64 + https://github.com/llvm-mirror/libcxx.git"
65 + git-r3_fetch "https://git.llvm.org/git/libcxxabi.git
66 + https://github.com/llvm-mirror/libcxxabi.git"
67 + fi
68 + git-r3_fetch
69 +
70 + if use test; then
71 + git-r3_checkout https://llvm.org/git/libcxx.git \
72 + "${WORKDIR}"/libcxx
73 + git-r3_checkout https://llvm.org/git/libcxxabi.git \
74 + "${WORKDIR}"/libcxxabi
75 + fi
76 + git-r3_checkout
77 +}
78 +
79 +multilib_src_configure() {
80 + local libdir=$(get_libdir)
81 +
82 + local mycmakeargs=(
83 + -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
84 + -DLIBUNWIND_ENABLE_ASSERTIONS=$(usex debug)
85 + -DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)
86 + -DLLVM_INCLUDE_TESTS=$(usex test)
87 +
88 + # support non-native unwinding; given it's small enough,
89 + # enable it unconditionally
90 + -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON
91 + )
92 + if use test; then
93 + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null)
94 + local jobs=${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}
95 +
96 + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests"
97 +
98 + mycmakeargs+=(
99 + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
100 + -DLLVM_LIT_ARGS="-vv;-j;${jobs};--param=cxx_under_test=${clang_path}"
101 + -DLIBUNWIND_LIBCXX_PATH="${WORKDIR}"/libcxx
102 + )
103 + fi
104 +
105 + cmake-utils_src_configure
106 +}
107 +
108 +build_libcxxabi() {
109 + local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)"
110 + local CMAKE_USE_DIR=${WORKDIR}/libcxxabi
111 + local BUILD_DIR=${BUILD_DIR}/libcxxabi
112 + local mycmakeargs=(
113 + -DLIBCXXABI_LIBDIR_SUFFIX=
114 + -DLIBCXXABI_ENABLE_SHARED=ON
115 + -DLIBCXXABI_ENABLE_STATIC=OFF
116 + -DLIBCXXABI_USE_LLVM_UNWINDER=ON
117 + -DLIBCXXABI_INCLUDE_TESTS=OFF
118 +
119 + -DLIBCXXABI_LIBCXX_INCLUDES="${WORKDIR}"/libcxx/include
120 + -DLIBCXXABI_LIBUNWIND_INCLUDES="${S}"/include
121 + )
122 +
123 + cmake-utils_src_configure
124 + cmake-utils_src_compile
125 +}
126 +
127 +build_libcxx() {
128 + local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/libcxxabi/lib -L${BUILD_DIR}/$(get_libdir)"
129 + local CMAKE_USE_DIR=${WORKDIR}/libcxx
130 + local BUILD_DIR=${BUILD_DIR}/libcxx
131 + local mycmakeargs=(
132 + -DLIBCXX_LIBDIR_SUFFIX=
133 + -DLIBCXX_ENABLE_SHARED=ON
134 + -DLIBCXX_ENABLE_STATIC=OFF
135 + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
136 + -DLIBCXXABI_USE_LLVM_UNWINDER=ON
137 + -DLIBCXX_CXX_ABI=libcxxabi
138 + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${WORKDIR}"/libcxxabi/include
139 + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
140 + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl)
141 + -DLIBCXX_HAS_GCC_S_LIB=OFF
142 + -DLIBCXX_INCLUDE_TESTS=OFF
143 + )
144 +
145 + cmake-utils_src_configure
146 + cmake-utils_src_compile
147 +}
148 +
149 +multilib_src_test() {
150 + # build local copies of libc++ & libc++abi for testing to avoid
151 + # circular deps
152 + build_libcxxabi
153 + build_libcxx
154 + mv "${BUILD_DIR}"/libcxx*/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || die
155 +
156 + cmake-utils_src_make check-unwind
157 +}
158 +
159 +multilib_src_install() {
160 + cmake-utils_src_install
161 +
162 + # install headers like sys-libs/libunwind
163 + doheader "${S}"/include/*.h
164 +}