sys-libs/compiler-rt: Bump to 10.0.0
[gentoo.git] / sys-libs / compiler-rt / compiler-rt-10.0.0.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 PYTHON_COMPAT=( python3_{6,7,8} )
7 inherit cmake-utils flag-o-matic llvm llvm.org multiprocessing \
8         python-any-r1 toolchain-funcs
9
10 DESCRIPTION="Compiler runtime library for clang (built-in part)"
11 HOMEPAGE="https://llvm.org/"
12 LLVM_COMPONENTS=( compiler-rt )
13 llvm.org_set_globals
14
15 LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
16 SLOT="$(ver_cut 1-3)"
17 KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos"
18 IUSE="+clang test"
19 RESTRICT="!test? ( test ) !clang? ( test )"
20
21 CLANG_SLOT=${SLOT%%.*}
22 # llvm-6 for new lit options
23 DEPEND="
24         >=sys-devel/llvm-6"
25 BDEPEND="
26         clang? ( sys-devel/clang )
27         test? (
28                 $(python_gen_any_dep ">=dev-python/lit-9.0.1[\${PYTHON_USEDEP}]")
29                 =sys-devel/clang-${PV%_*}*:${CLANG_SLOT} )
30         ${PYTHON_DEPS}"
31
32 # least intrusive of all
33 CMAKE_BUILD_TYPE=RelWithDebInfo
34
35 python_check_deps() {
36         use test || return 0
37         has_version "dev-python/lit[${PYTHON_USEDEP}]"
38 }
39
40 pkg_pretend() {
41         if ! use clang && ! tc-is-clang; then
42                 ewarn "Building using a compiler other than clang may result in broken atomics"
43                 ewarn "library. Enable USE=clang unless you have a very good reason not to."
44         fi
45 }
46
47 pkg_setup() {
48         llvm_pkg_setup
49         python-any-r1_pkg_setup
50 }
51
52 test_compiler() {
53         $(tc-getCC) ${CFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \
54                 <<<'int main() { return 0; }' &>/dev/null
55 }
56
57 src_configure() {
58         # pre-set since we need to pass it to cmake
59         BUILD_DIR=${WORKDIR}/${P}_build
60
61         local nolib_flags=( -nodefaultlibs -lc )
62         if use clang; then
63                 local -x CC=${CHOST}-clang
64                 local -x CXX=${CHOST}-clang++
65                 strip-unsupported-flags
66                 # ensure we can use clang before installing compiler-rt
67                 local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
68         elif ! test_compiler; then
69                 if test_compiler "${nolib_flags[@]}"; then
70                         local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
71                         ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
72                 fi
73         fi
74
75         local mycmakeargs=(
76                 -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}"
77
78                 -DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
79                 -DCOMPILER_RT_BUILD_LIBFUZZER=OFF
80                 -DCOMPILER_RT_BUILD_PROFILE=OFF
81                 -DCOMPILER_RT_BUILD_SANITIZERS=OFF
82                 -DCOMPILER_RT_BUILD_XRAY=OFF
83         )
84
85         if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then
86                 mycmakeargs+=(
87                         # disable use of SDK for the system itself
88                         -DDARWIN_macosx_CACHED_SYSROOT=/
89                 )
90         fi
91
92         if use test; then
93                 mycmakeargs+=(
94                         -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
95                         -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
96
97                         -DCOMPILER_RT_TEST_COMPILER="${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang"
98                         -DCOMPILER_RT_TEST_CXX_COMPILER="${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++"
99                 )
100         fi
101
102         cmake-utils_src_configure
103 }
104
105 src_test() {
106         # respect TMPDIR!
107         local -x LIT_PRESERVES_TMP=1
108
109         cmake-utils_src_make check-builtins
110 }