media-libs/mesa: probably have a working multilib build
from https://git.lab.how/mb/overlay-mb/raw/branch/master/media-libs/mesa/mesa-9999.ebuild
This commit is contained in:
parent
ee99ea7a2f
commit
5c42b002b7
|
@ -1,5 +1,5 @@
|
|||
DIST paste-1.0.14.tar.gz 18157 BLAKE2B 35e8548611c51ee75f4d04926149e5e54870d7073d9b635d550a6fa0f85891f57f326bdbcff3dd8618cf40f8e08cf903ef87d9c034d5921d8b91e1db842cdd7c SHA512 3a793f0e5e773a7f7defc798a4c17ae9a40d715144632ea6cb0a8c785e14c4212046491df016bb9838281f8eaf327a79f01c1e2ac5f26785c028bc880faff9ee
|
||||
DIST proc-macro2-1.0.70.tar.gz 44343 BLAKE2B fff0dec06b21e391783cc136790238acb783780eaedcf14875a350e7ceb46fdc100c8b9e3f09fb7f4c2196c25d4c6b61e574c0dad762d94533b628faab68cf5c SHA512 ae9366856853f7d96caf7a7581843d36bfc7843f8683897b19ffc666c03b0b1eff502ddb18ca4c1c1a239a368f03f6cc258b0e2795f64b61c6a31404462eec5f
|
||||
DIST quote-1.0.33.tar.gz 28090 BLAKE2B 77c4b166f1200e1ee2ab94a5014acd334c1fe4b7d72851d73768d491c56c6779a0882a304c1f30c88732a6168351f0f786b10516ae537cff993892a749175848 SHA512 c1e76c3c017e8554eebe309f8167fd56fce931981c06798aa85a0cc6d64a9cba6ab103f5a1324e69c6f9ca5dc47a8e31ff2e847850542748697afcd265b5939c
|
||||
DIST syn-2.0.39.tar.gz 244129 BLAKE2B 2cff6626624d03f70f1662af45a8644c28a9f92e2dfe38999bef3ba4a4c1ce825ae598277e9cb7abd5585eebfb17b239effc8d0bbf1c6ac196499f0d288e5e01 SHA512 96cc347cfdb0f9ca0b6c7289279a1cad8fc401625783742292564f7ceca8237ced8d9a3f62069696f6132ed06092dff2baaf4be09ef53b21260d93785b0e27c3
|
||||
DIST proc-macro2-1.0.78.tar.gz 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769
|
||||
DIST quote-1.0.35.tar.gz 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2
|
||||
DIST syn-2.0.48.tar.gz 250566 BLAKE2B e46b0863af76c3116c84d01b654a9820b7edc51f75c9c5301a7967d12284f78da602409f34fc40524728350dc6b998a4d738f08b8868f95236b3e5d24c460580 SHA512 926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325
|
||||
DIST unicode-ident-1.0.12.tar.gz 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920
|
||||
|
|
|
@ -7,42 +7,41 @@ LLVM_COMPAT=( {15..17} )
|
|||
LLVM_OPTIONAL=1
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit llvm-r1 meson-multilib python-any-r1 linux-info
|
||||
inherit llvm-r1 meson-multilib python-any-r1 linux-info rust-toolchain
|
||||
|
||||
MY_P="${P/_/-}"
|
||||
|
||||
DESCRIPTION="OpenGL-like graphic library for Linux"
|
||||
HOMEPAGE="https://www.mesa3d.org/ https://mesa.freedesktop.org/"
|
||||
|
||||
SYN_VERSION=2.0.39
|
||||
UNICODE_IDENT_VERSION=1.0.12
|
||||
PROC_MACRO2_VERSION=1.0.70
|
||||
QUOTE_VERSION=1.0.33
|
||||
PASTE_VERSION=1.0.14
|
||||
SYN_V=2.0.48
|
||||
#SYN_V=2.0.39
|
||||
PROC_MACRO2_V=1.0.78
|
||||
#PROC_MACRO2_V=1.0.70
|
||||
QUOTE_V=1.0.35
|
||||
#QUOTE_V=1.0.33
|
||||
UNICODE_IDENT_V=1.0.12
|
||||
PASTE_V=1.0.14
|
||||
|
||||
NAK_URI="
|
||||
https://crates.io/api/v1/crates/syn/${SYN_V}/download -> syn-${SYN_V}.tar.gz
|
||||
https://crates.io/api/v1/crates/proc-macro2/${PROC_MACRO2_V}/download -> proc-macro2-${PROC_MACRO2_V}.tar.gz
|
||||
https://crates.io/api/v1/crates/quote/${QUOTE_V}/download -> quote-${QUOTE_V}.tar.gz
|
||||
https://crates.io/api/v1/crates/unicode-ident/${UNICODE_IDENT_V}/download -> unicode-ident-${UNICODE_IDENT_V}.tar.gz
|
||||
https://crates.io/api/v1/crates/paste/${PASTE_V}/download -> paste-${PASTE_V}.tar.gz"
|
||||
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
SRC_URI="
|
||||
vulkan? (
|
||||
video_cards_nouveau? (
|
||||
https://crates.io/api/v1/crates/syn/${SYN_VERSION}/download -> syn-${SYN_VERSION}.tar.gz
|
||||
https://crates.io/api/v1/crates/unicode-ident/${UNICODE_IDENT_VERSION}/download -> unicode-ident-${UNICODE_IDENT_VERSION}.tar.gz
|
||||
https://crates.io/api/v1/crates/proc-macro2/${PROC_MACRO2_VERSION}/download -> proc-macro2-${PROC_MACRO2_VERSION}.tar.gz
|
||||
https://crates.io/api/v1/crates/quote/${QUOTE_VERSION}/download -> quote-${QUOTE_VERSION}.tar.gz
|
||||
https://crates.io/api/v1/crates/paste/${PASTE_VERSION}/download -> paste-${PASTE_VERSION}.tar.gz
|
||||
)
|
||||
)
|
||||
"
|
||||
EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/mesa.git"
|
||||
SRC_URI="$NAK_URI"
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://archive.mesa3d.org/${MY_P}.tar.xz"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-solaris"
|
||||
fi
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
EGIT_CHECKOUT_DIR=${S}
|
||||
|
||||
LICENSE="MIT SGI-B-2.0"
|
||||
SLOT="0"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RADEON_CARDS="r300 r600 radeon radeonsi"
|
||||
VIDEO_CARDS="${RADEON_CARDS} d3d12 freedreno intel lavapipe lima nouveau panfrost v3d vc4 virgl vivante vmware"
|
||||
|
@ -55,7 +54,7 @@ IUSE="${IUSE_VIDEO_CARDS}
|
|||
lm-sensors opencl +opengl osmesa +proprietary-codecs selinux
|
||||
test unwind vaapi valgrind vdpau vulkan
|
||||
vulkan-overlay wayland +X xa zink +zstd"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
REQUIRED_USE="
|
||||
d3d9? (
|
||||
|| (
|
||||
|
@ -165,13 +164,17 @@ BDEPEND="
|
|||
vulkan? (
|
||||
dev-util/glslang
|
||||
video_cards_nouveau? (
|
||||
>=virtual/rust-1.73.0
|
||||
dev-util/bindgen
|
||||
>=dev-util/bindgen-0.58.0
|
||||
>=dev-util/cbindgen-0.26.0
|
||||
>=virtual/rust-1.73
|
||||
)
|
||||
)
|
||||
wayland? ( dev-util/wayland-scanner )
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
EGIT_CHECKOUT_DIR=${S}
|
||||
|
||||
QA_WX_LOAD="
|
||||
x86? (
|
||||
usr/lib/libglapi.so.0.0.0
|
||||
|
@ -185,9 +188,9 @@ pkg_pretend() {
|
|||
! use video_cards_freedreno &&
|
||||
! use video_cards_intel &&
|
||||
! use video_cards_radeonsi &&
|
||||
! use video_cards_nouveau &&
|
||||
! use video_cards_v3d; then
|
||||
ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, radeonsi, nouveau, or v3d"
|
||||
! use video_cards_v3d &&
|
||||
! use video_cards_nouveau; then
|
||||
ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, nouveau, or v3d"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -262,20 +265,29 @@ pkg_setup() {
|
|||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
git-r3_src_unpack
|
||||
cd "${S}/subprojects" || die "no subprojects directory"
|
||||
fi
|
||||
default_src_unpack
|
||||
if [[ -n ${A} ]]; then
|
||||
einfo ${A}
|
||||
unpack ${A}
|
||||
fi
|
||||
if use video_cards_nouveau; then
|
||||
# TODO: What is the correct approach here? subprojects download pull too many packages
|
||||
#cd ${P}
|
||||
#meson subprojects download
|
||||
#cd -
|
||||
for pkg in syn-${SYN_V} quote-${QUOTE_V} unicode-ident-${UNICODE_IDENT_V} proc-macro2-${PROC_MACRO2_V} paste-${PASTE_V}; do
|
||||
sub=mesa-${PV}/subprojects
|
||||
mv ${pkg} ${sub}
|
||||
cp ${sub}/packagefiles/${pkg%-*}/meson.build ${sub}/${pkg}
|
||||
sed -i -e "s/directory = \S\+/directory = ${pkg}/" ${sub}/${pkg%-*}.wrap
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
sed -i -e "/^PLATFORM_SYMBOLS/a '__gentoo_check_ldflags__'," \
|
||||
bin/symbols-check.py || die # bug #830728
|
||||
if use vulkan && use video_cards_nouveau; then
|
||||
for wrap in syn quote unicode-ident proc-macro2 paste; do
|
||||
meson subprojects packagefiles --apply $wrap
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
|
@ -376,7 +388,17 @@ multilib_src_configure() {
|
|||
vulkan_enable video_cards_d3d12 microsoft-experimental
|
||||
vulkan_enable video_cards_radeonsi amd
|
||||
vulkan_enable video_cards_v3d broadcom
|
||||
vulkan_enable video_cards_nouveau nouveau
|
||||
if use video_cards_nouveau; then
|
||||
vulkan_enable video_cards_nouveau nouveau
|
||||
if ! multilib_is_native_abi; then
|
||||
einfo "Applying Gentoo hack for nvk - 1/2"
|
||||
echo -e "[binaries]\nrust = ['rustc', '--target=$(rust_abi $CBUILD)']" > "${T}/rust_fix.ini"
|
||||
emesonargs+=(
|
||||
--native-file "${T}"/rust_fix.ini
|
||||
)
|
||||
einfo "Applying Gentoo hack for nvk - 2/2"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
driver_list() {
|
||||
|
@ -409,8 +431,6 @@ multilib_src_configure() {
|
|||
emesonargs+=(-Dglx=disabled)
|
||||
fi
|
||||
|
||||
use debug && EMESON_BUILDTYPE=debug
|
||||
|
||||
emesonargs+=(
|
||||
$(meson_use test build-tests)
|
||||
-Dshared-glapi=enabled
|
||||
|
@ -432,9 +452,14 @@ multilib_src_configure() {
|
|||
-Dvideo-codecs=$(usex proprietary-codecs "all" "all_free")
|
||||
-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
|
||||
-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
|
||||
-Dbuildtype=$(usex debug debug plain)
|
||||
-Db_ndebug=$(usex debug false true)
|
||||
)
|
||||
meson_src_configure
|
||||
if ! multilib_is_native_abi && use video_cards_nouveau; then
|
||||
einfo "Applying Gentoo hack for nvk - 2/2"
|
||||
sed -i -E '{N; s/(rule rust_COMPILER_FOR_BUILD\n command = rustc) --target=[a-zA-Z0-9=:-]+ (.*) -C link-arg=-m[[:digit:]]+/\1 \2/g}' build.ninja
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
|
@ -456,64 +481,3 @@ vulkan_enable() {
|
|||
VULKAN_DRIVERS+=("$@")
|
||||
fi
|
||||
}
|
||||
|
||||
# override meson create native file
|
||||
# @FUNCTION: _meson_create_native_file
|
||||
# @RETURN: path to native file
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Creates a native file. meson uses this to define settings for
|
||||
# native compilers. This function is called from meson_src_configure.
|
||||
_meson_create_native_file() {
|
||||
local system cpu_family cpu
|
||||
_meson_get_machine_info "${CBUILD}"
|
||||
|
||||
RUST_CBUILD="${CBUILD/-pc-/-unknown-}"
|
||||
|
||||
local fn=${T}/meson.${CBUILD}.${ABI}.ini
|
||||
|
||||
cat > "${fn}" <<-EOF
|
||||
[binaries]
|
||||
ar = $(_meson_env_array "$(tc-getBUILD_AR)")
|
||||
c = $(_meson_env_array "$(tc-getBUILD_CC)")
|
||||
cpp = $(_meson_env_array "$(tc-getBUILD_CXX)")
|
||||
fortran = $(_meson_env_array "$(tc-getBUILD_PROG FC gfortran)")
|
||||
llvm-config = '$(tc-getBUILD_PROG LLVM_CONFIG llvm-config)'
|
||||
nm = $(_meson_env_array "$(tc-getBUILD_NM)")
|
||||
objc = $(_meson_env_array "$(tc-getBUILD_PROG OBJC cc)")
|
||||
objcopy = $(_meson_env_array "$(tc-getBUILD_OBJCOPY)")
|
||||
objcpp = $(_meson_env_array "$(tc-getBUILD_PROG OBJCXX c++)")
|
||||
# TODO: Cleanup 'pkgconfig' and keep just 'pkg-config' once we require
|
||||
# >=1.3.0.
|
||||
pkgconfig = '$(tc-getBUILD_PKG_CONFIG)'
|
||||
pkg-config = '$(tc-getBUILD_PKG_CONFIG)'
|
||||
strip = $(_meson_env_array "$(tc-getBUILD_STRIP)")
|
||||
windres = $(_meson_env_array "$(tc-getBUILD_PROG RC windres)")
|
||||
rust = ['rustc', '--target', '${RUST_CBUILD}']
|
||||
|
||||
[built-in options]
|
||||
c_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_CPPFLAGS}")
|
||||
c_link_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_LDFLAGS}")
|
||||
cpp_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_CPPFLAGS}")
|
||||
cpp_link_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}")
|
||||
fortran_args = $(_meson_env_array "${BUILD_FCFLAGS}")
|
||||
fortran_link_args = $(_meson_env_array "${BUILD_FCFLAGS} ${BUILD_LDFLAGS}")
|
||||
objc_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_CPPFLAGS}")
|
||||
objc_link_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_LDFLAGS}")
|
||||
objcpp_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_CPPFLAGS}")
|
||||
objcpp_link_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_LDFLAGS}")
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
pkg_config_libdir = '${BUILD_PKG_CONFIG_LIBDIR:-${EPREFIX}/usr/$(get_libdir)/pkgconfig}'
|
||||
|
||||
[build_machine]
|
||||
system = '${system}'
|
||||
cpu_family = '${cpu_family}'
|
||||
cpu = '${cpu}'
|
||||
endian = ['$(tc-endian "${CBUILD}")']
|
||||
EOF
|
||||
|
||||
echo "${fn}"
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue