| 3 |
3 |
|
| 4 |
4 |
EAPI=8
|
| 5 |
5 |
|
| 6 |
|
HASH_SPIRV="04fd3caa1e8267e4d95c806cad901181728e1006"
|
|
6 |
LLVM_COMPAT=( 21 )
|
| 7 |
7 |
MY_PN="SPIRV-LLVM-Translator"
|
| 8 |
8 |
MY_P="${MY_PN}-${PV}"
|
| 9 |
9 |
|
| 10 |
|
inherit cmake flag-o-matic multiprocessing
|
|
10 |
inherit cmake-multilib flag-o-matic llvm-r2 multiprocessing
|
| 11 |
11 |
|
| 12 |
12 |
DESCRIPTION="Bi-directional translator between SPIR-V and LLVM IR"
|
| 13 |
13 |
HOMEPAGE="https://github.com/KhronosGroup/SPIRV-LLVM-Translator"
|
| 14 |
|
SRC_URI="
|
| 15 |
|
https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz
|
| 16 |
|
-> ${P}.tar.gz
|
| 17 |
|
https://github.com/KhronosGroup/SPIRV-Headers/archive/${HASH_SPIRV}.tar.gz
|
| 18 |
|
-> spirv-headers-${HASH_SPIRV}.tar.gz
|
| 19 |
|
"
|
|
14 |
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
| 20 |
15 |
S="${WORKDIR}/${MY_P}"
|
| 21 |
16 |
|
| 22 |
17 |
LICENSE="UoI-NCSA"
|
| 23 |
18 |
SLOT="$(ver_cut 1)"
|
| 24 |
|
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
|
|
19 |
KEYWORDS="amd64 arm arm64 ~loong ~riscv x86"
|
| 25 |
20 |
IUSE="test"
|
| 26 |
|
RESTRICT="
|
| 27 |
|
!test? ( test )
|
|
21 |
RESTRICT="!test? ( test )
|
| 28 |
22 |
arm? ( test )
|
| 29 |
23 |
arm64? ( test )
|
| 30 |
24 |
loong? ( test )
|
| ... | ... | |
| 32 |
26 |
"
|
| 33 |
27 |
|
| 34 |
28 |
RDEPEND="
|
| 35 |
|
dev-util/spirv-tools
|
| 36 |
|
llvm-core/llvm:${SLOT}=
|
|
29 |
dev-util/spirv-tools[${MULTILIB_USEDEP}]
|
|
30 |
llvm-core/llvm:${SLOT}=[${MULTILIB_USEDEP}]
|
|
31 |
"
|
|
32 |
DEPEND="${RDEPEND}
|
|
33 |
>=dev-util/spirv-headers-1.4.328.0
|
| 37 |
34 |
"
|
| 38 |
|
# We need to use currently newer spirv-headers, as stable release is too old..
|
| 39 |
|
# DEPEND="${RDEPEND}
|
| 40 |
|
# >=dev-util/spirv-headers-1.4.350.0
|
| 41 |
|
# "
|
| 42 |
35 |
BDEPEND="
|
| 43 |
36 |
virtual/pkgconfig
|
| 44 |
37 |
test? (
|
| ... | ... | |
| 47 |
40 |
)
|
| 48 |
41 |
"
|
| 49 |
42 |
|
|
43 |
PATCHES=(
|
|
44 |
"${FILESDIR}"/${P}-fix-DecorateUniformId.spvasm.patch
|
|
45 |
)
|
|
46 |
|
| 50 |
47 |
src_prepare() {
|
| 51 |
48 |
append-flags -fPIC
|
| 52 |
49 |
cmake_src_prepare
|
| 53 |
50 |
|
| 54 |
|
# https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2555
|
| 55 |
|
sed -i -e 's/%triple/x86_64-unknown-linux-gnu/' test/DebugInfo/X86/*.ll || die
|
|
51 |
# do not force a specific LLVM version to find_package(), this only
|
|
52 |
# causes issues and we force a specific path anyway
|
|
53 |
sed -i -e '/find_package/s:${BASE_LLVM_VERSION}::' CMakeLists.txt || die
|
| 56 |
54 |
}
|
| 57 |
55 |
|
| 58 |
|
src_configure() {
|
|
56 |
multilib_src_configure() {
|
| 59 |
57 |
local mycmakeargs=(
|
| 60 |
58 |
-DCCACHE_ALLOWED="OFF"
|
| 61 |
|
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
|
| 62 |
|
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${WORKDIR}/SPIRV-Headers-${HASH_SPIRV}"
|
| 63 |
|
# -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
|
| 64 |
|
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${SLOT}"
|
|
59 |
-DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix)"
|
|
60 |
-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="${ESYSROOT}/usr/include/spirv"
|
| 65 |
61 |
-DLLVM_SPIRV_INCLUDE_TESTS=$(usex test "ON" "OFF")
|
| 66 |
62 |
-Wno-dev
|
| 67 |
63 |
)
|
| ... | ... | |
| 69 |
65 |
cmake_src_configure
|
| 70 |
66 |
}
|
| 71 |
67 |
|
| 72 |
|
src_test() {
|
|
68 |
multilib_src_test() {
|
| 73 |
69 |
lit -vv "-j${LIT_JOBS:-$(makeopts_jobs)}" "${BUILD_DIR}/test" || die
|
| 74 |
70 |
}
|