| 2 |
2 |
# Distributed under the terms of the GNU General Public License v2
|
| 3 |
3 |
|
| 4 |
4 |
EAPI=8
|
| 5 |
|
USE_RUBY="ruby31 ruby32 ruby33"
|
| 6 |
5 |
|
| 7 |
|
RUBY_FAKEGEM_BINWRAP=""
|
| 8 |
|
RUBY_FAKEGEM_RECIPE_TEST="rspec3"
|
|
6 |
PYTHON_COMPAT=( python3_{11..14} )
|
|
7 |
inherit cmake flag-o-matic llvm.org python-any-r1 toolchain-funcs
|
| 9 |
8 |
|
| 10 |
|
RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.md"
|
|
9 |
DESCRIPTION="LLVM's Fortran frontend"
|
|
10 |
HOMEPAGE="https://flang.llvm.org/"
|
| 11 |
11 |
|
| 12 |
|
RUBY_FAKEGEM_GEMSPEC="dry-struct.gemspec"
|
|
12 |
LICENSE="Apache-2.0-with-LLVM-exceptions"
|
|
13 |
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
|
|
14 |
IUSE="+clang +debug test"
|
|
15 |
RESTRICT="!test? ( test )"
|
|
16 |
|
|
17 |
DEPEND="
|
|
18 |
~llvm-core/clang-${PV}[debug=]
|
|
19 |
~llvm-core/llvm-${PV}[debug=]
|
|
20 |
~llvm-core/mlir-${PV}[debug=]
|
|
21 |
"
|
|
22 |
RDEPEND="
|
|
23 |
${DEPEND}
|
|
24 |
"
|
|
25 |
PDEPEND="
|
|
26 |
>=llvm-runtimes/flang-rt-${PV}:${LLVM_MAJOR}
|
|
27 |
"
|
|
28 |
BDEPEND="
|
|
29 |
clang? ( llvm-core/clang )
|
|
30 |
test? (
|
|
31 |
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
|
|
32 |
)
|
|
33 |
"
|
| 13 |
34 |
|
| 14 |
|
inherit ruby-fakegem
|
|
35 |
LLVM_COMPONENTS=( flang cmake )
|
|
36 |
LLVM_TEST_COMPONENTS=( clang/test/Driver mlir/test/lib )
|
|
37 |
LLVM_USE_TARGETS=llvm+eq
|
|
38 |
llvm.org_set_globals
|
| 15 |
39 |
|
| 16 |
|
DESCRIPTION="Typed structs and value objects"
|
|
40 |
python_check_deps() {
|
|
41 |
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
|
|
42 |
}
|
| 17 |
43 |
|
| 18 |
|
HOMEPAGE="https://dry-rb.org/gems/dry-struct/"
|
| 19 |
|
SRC_URI="https://github.com/dry-rb/dry-struct/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
| 20 |
|
LICENSE="MIT"
|
|
44 |
pkg_pretend() {
|
|
45 |
if ! use clang && tc-is-gcc; then
|
|
46 |
ewarn "Building using GCC requires lots of memory (up to 10 GiB per process)."
|
|
47 |
ewarn "Consider enabling USE=clang."
|
|
48 |
ewarn "See https://gcc.gnu.org/PR119705"
|
|
49 |
fi
|
|
50 |
}
|
| 21 |
51 |
|
| 22 |
|
KEYWORDS="amd64 ~arm64 ~hppa ppc ppc64 sparc ~x86"
|
| 23 |
|
SLOT="$(ver_cut 1)"
|
| 24 |
|
IUSE="test"
|
|
52 |
pkg_setup() {
|
|
53 |
use test && python-any-r1_pkg_setup
|
|
54 |
}
|
| 25 |
55 |
|
| 26 |
|
ruby_add_rdepend "
|
| 27 |
|
dev-ruby/dry-core:1
|
| 28 |
|
>=dev-ruby/dry-types-1.7:1
|
| 29 |
|
>=dev-ruby/ice_nine-0.11:0
|
| 30 |
|
>=dev-ruby/zeitwerk-2.6:2
|
| 31 |
|
"
|
|
56 |
src_configure() {
|
|
57 |
if use clang; then
|
|
58 |
# Only do this conditionally to allow overriding with
|
|
59 |
# e.g. CC=clang-13 in case of breakage
|
|
60 |
if ! tc-is-clang ; then
|
|
61 |
local -x CC=${CHOST}-clang
|
|
62 |
local -x CXX=${CHOST}-clang++
|
|
63 |
fi
|
|
64 |
|
|
65 |
strip-unsupported-flags
|
|
66 |
fi
|
|
67 |
|
|
68 |
local mycmakeargs=(
|
|
69 |
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
|
|
70 |
|
|
71 |
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
|
|
72 |
-DCLANG_RESOURCE_DIR="../../../clang/${LLVM_MAJOR}"
|
|
73 |
|
|
74 |
-DBUILD_SHARED_LIBS=OFF
|
|
75 |
-DMLIR_LINK_MLIR_DYLIB=ON
|
|
76 |
# flang does not feature a dylib, so do not install libraries
|
|
77 |
# or headers
|
|
78 |
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON
|
|
79 |
# installed by llvm-runtimes/flang-rt
|
|
80 |
-DFLANG_INCLUDE_RUNTIME=OFF
|
|
81 |
|
|
82 |
# TODO: always enable to obtain reproducible tools
|
|
83 |
-DFLANG_INCLUDE_TESTS=$(usex test)
|
|
84 |
|
|
85 |
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
|
|
86 |
)
|
|
87 |
use test && mycmakeargs+=(
|
|
88 |
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
|
|
89 |
-DLLVM_LIT_ARGS="$(get_lit_flags)"
|
|
90 |
)
|
|
91 |
|
|
92 |
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
|
|
93 |
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
|
|
94 |
cmake_src_configure
|
|
95 |
}
|
| 32 |
96 |
|
| 33 |
|
ruby_add_bdepend "test? (
|
| 34 |
|
dev-ruby/dry-monads
|
| 35 |
|
dev-ruby/dry-struct
|
| 36 |
|
dev-ruby/warning
|
| 37 |
|
)"
|
| 38 |
|
|
| 39 |
|
all_ruby_prepare() {
|
| 40 |
|
# Avoid broken spec, already fixed upstream.
|
| 41 |
|
sed -e '/with Test::User/ s/context/xcontext/' \
|
| 42 |
|
-e '/with Test::SuperUSer/ s/context/xcontext/' \
|
| 43 |
|
-i spec/extensions/pretty_print_spec.rb || die
|
|
97 |
src_test() {
|
|
98 |
# respect TMPDIR!
|
|
99 |
local -x LIT_PRESERVES_TMP=1
|
|
100 |
cmake_build check-flang
|
| 44 |
101 |
}
|