diff options
-rw-r--r-- | media-libs/mesa/mesa-scm.ebuild | 140 |
1 files changed, 112 insertions, 28 deletions
diff --git a/media-libs/mesa/mesa-scm.ebuild b/media-libs/mesa/mesa-scm.ebuild index 3bc30cd..671053b 100644 --- a/media-libs/mesa/mesa-scm.ebuild +++ b/media-libs/mesa/mesa-scm.ebuild @@ -30,9 +30,8 @@ LICENSE="MIT" SLOT="0" KEYWORDS="" -INTEL_CARDS="i915 i965 intel" RADEON_CARDS="r100 r200 r300 r600 radeon radeonsi" -VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} freedreno imx nouveau vc4 vivante vmware" +VIDEO_CARDS="${RADEON_CARDS} freedreno i915 i965 imx intel nouveau vc4 virgl vivante vmware" for card in ${VIDEO_CARDS}; do IUSE_VIDEO_CARDS+=" video_cards_${card}" done @@ -52,14 +51,14 @@ REQUIRED_USE=" vaapi? ( gallium ) vdpau? ( gallium ) vulkan? ( || ( video_cards_i965 video_cards_radeonsi ) - video_cards_radeonsi? ( llvm ) ) + video_cards_radeonsi? ( llvm ) ) wayland? ( egl gbm ) xa? ( gallium ) video_cards_freedreno? ( gallium ) video_cards_intel? ( classic ) video_cards_i915? ( || ( classic gallium ) ) video_cards_i965? ( classic ) - video_cards_imx? ( gallium ) + video_cards_imx? ( gallium video_cards_vivante ) video_cards_nouveau? ( || ( classic gallium ) ) video_cards_radeon? ( || ( classic gallium ) gallium? ( x86? ( llvm ) amd64? ( llvm ) ) ) @@ -69,11 +68,12 @@ REQUIRED_USE=" video_cards_r600? ( gallium ) video_cards_radeonsi? ( gallium llvm ) video_cards_vc4? ( gallium ) + video_cards_virgl? ( gallium ) video_cards_vivante? ( gallium gbm ) video_cards_vmware? ( gallium ) " -LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.77" +LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.85" # keep correct libdrm and dri2proto dep # keep blocks in rdepend for binpkg RDEPEND=" @@ -96,7 +96,6 @@ RDEPEND=" llvm? ( video_cards_radeonsi? ( virtual/libelf:0=[${MULTILIB_USEDEP}] - vulkan? ( >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP}] ) ) video_cards_r600? ( virtual/libelf:0=[${MULTILIB_USEDEP}] @@ -104,7 +103,6 @@ RDEPEND=" video_cards_radeon? ( virtual/libelf:0=[${MULTILIB_USEDEP}] ) - >=sys-devel/llvm-3.6.0:=[${MULTILIB_USEDEP}] ) opencl? ( app-eselect/eselect-opencl @@ -113,20 +111,22 @@ RDEPEND=" ) openmax? ( >=media-libs/libomxil-bellagio-0.9.3:=[${MULTILIB_USEDEP}] ) vaapi? ( - >=x11-libs/libva-1.6.0:=[${MULTILIB_USEDEP}] + >=x11-libs/libva-1.7.3:=[${MULTILIB_USEDEP}] video_cards_nouveau? ( !<=x11-libs/libva-vdpau-driver-0.7.4-r3 ) ) vdpau? ( >=x11-libs/libvdpau-1.1:=[${MULTILIB_USEDEP}] ) - wayland? ( >=dev-libs/wayland-1.11.0:=[${MULTILIB_USEDEP}] ) + wayland? ( + >=dev-libs/wayland-1.11.0:=[${MULTILIB_USEDEP}] + >=dev-libs/wayland-protocols-1.8 + ) xvmc? ( >=x11-libs/libXvMC-1.0.8:=[${MULTILIB_USEDEP}] ) ${LIBDRM_DEPSTRING}[video_cards_freedreno?,video_cards_nouveau?,video_cards_vc4?,video_cards_vivante?,video_cards_vmware?,${MULTILIB_USEDEP}] -" -for card in ${INTEL_CARDS}; do - RDEPEND="${RDEPEND} - video_cards_${card}? ( ${LIBDRM_DEPSTRING}[video_cards_intel] ) - " -done + video_cards_intel? ( + !video_cards_i965? ( ${LIBDRM_DEPSTRING}[video_cards_intel] ) + ) + video_cards_i915? ( ${LIBDRM_DEPSTRING}[video_cards_intel] ) +" for card in ${RADEON_CARDS}; do RDEPEND="${RDEPEND} video_cards_${card}? ( ${LIBDRM_DEPSTRING}[video_cards_radeon] ) @@ -136,18 +136,84 @@ RDEPEND="${RDEPEND} video_cards_radeonsi? ( ${LIBDRM_DEPSTRING}[video_cards_amdgpu] ) " -DEPEND="${RDEPEND} - ${PYTHON_DEPS} +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling one than more slot +# simultaneously. +# +# How to use it: +# 1. List all the working slots (with min versions) in ||, newest first. +# 2. Update the := to specify *max* version, e.g. < 7. +# 3. Specify LLVM_MAX_SLOT, e.g. 6. +LLVM_DEPSTR=" + || ( + sys-devel/llvm:6[${MULTILIB_USEDEP}] + sys-devel/llvm:5[${MULTILIB_USEDEP}] + sys-devel/llvm:4[${MULTILIB_USEDEP}] + >=sys-devel/llvm-3.9.0:0[${MULTILIB_USEDEP}] + ) + sys-devel/llvm:=[${MULTILIB_USEDEP}] +" +LLVM_DEPSTR_AMDGPU=${LLVM_DEPSTR//]/,llvm_targets_AMDGPU(-)]} +CLANG_DEPSTR=${LLVM_DEPSTR//llvm/clang} +CLANG_DEPSTR_AMDGPU=${CLANG_DEPSTR//]/,llvm_targets_AMDGPU(-)]} +RDEPEND="${RDEPEND} llvm? ( - video_cards_radeonsi? ( || ( - sys-devel/llvm[llvm_targets_AMDGPU] - sys-devel/llvm[video_cards_radeon] - ) ) + opencl? ( + video_cards_r600? ( + ${CLANG_DEPSTR_AMDGPU} + ) + !video_cards_r600? ( + video_cards_radeonsi? ( + ${CLANG_DEPSTR_AMDGPU} + ) + ) + !video_cards_r600? ( + !video_cards_radeonsi? ( + video_cards_radeon? ( + ${CLANG_DEPSTR_AMDGPU} + ) + ) + ) + !video_cards_r600? ( + !video_cards_radeon? ( + !video_cards_radeonsi? ( + ${CLANG_DEPSTR} + ) + ) + ) + ) + !opencl? ( + video_cards_r600? ( + ${LLVM_DEPSTR_AMDGPU} + ) + !video_cards_r600? ( + video_cards_radeonsi? ( + ${LLVM_DEPSTR_AMDGPU} + ) + ) + !video_cards_r600? ( + !video_cards_radeonsi? ( + video_cards_radeon? ( + ${LLVM_DEPSTR_AMDGPU} + ) + ) + ) + !video_cards_r600? ( + !video_cards_radeon? ( + !video_cards_radeonsi? ( + ${LLVM_DEPSTR} + ) + ) + ) + ) ) +" +unset {LLVM,CLANG}_DEPSTR{,_AMDGPU} + +DEPEND="${RDEPEND} + ${PYTHON_DEPS} opencl? ( - >=sys-devel/llvm-3.6.0:=[${MULTILIB_USEDEP}] - >=sys-devel/clang-3.6.0:=[${MULTILIB_USEDEP}] - >=sys-devel/gcc-4.6 + >=sys-devel/gcc-4.6 ) sys-devel/bison sys-devel/flex @@ -164,6 +230,9 @@ DEPEND="${RDEPEND} >=x11-proto/xextproto-7.2.1-r1:=[${MULTILIB_USEDEP}] >=x11-proto/xf86driproto-2.1.1-r1:=[${MULTILIB_USEDEP}] >=x11-proto/xf86vidmodeproto-2.3.1-r1:=[${MULTILIB_USEDEP}] + vulkan? ( + $(python_gen_any_dep ">=dev-python/mako-0.7.3[\${PYTHON_USEDEP}]") + ) " S="${WORKDIR}/${MY_P}" @@ -180,6 +249,19 @@ x86? ( ) )" +llvm_check_deps() { + local flags=${MULTILIB_USEDEP} + if use video_cards_r600 || use video_cards_radeon || use video_cards_radeonsi + then + flags+=",llvm_targets_AMDGPU(-)" + fi + + if use opencl; then + has_version "sys-devel/clang[${flags}]" || return 1 + fi + has_version "sys-devel/llvm[${flags}]" +} + pkg_setup() { # warning message for bug 459306 if use llvm && has_version sys-devel/llvm[!debug=]; then @@ -187,6 +269,9 @@ pkg_setup() { ewarn "detected! This can cause problems. For details, see bug 459306." fi + if use llvm; then + llvm_pkg_setup + fi python-any-r1_pkg_setup } @@ -195,9 +280,6 @@ src_unpack() { git-r3_src_unpack } -#PATCHES=( -# "$FILESDIR/clover-Fix-compiling-with-LLVM-r315871.patch" -#) src_prepare() { default @@ -232,7 +314,7 @@ multilib_src_configure() { fi if use egl; then - myconf+=" --with-egl-platforms=x11,surfaceless$(use wayland && echo ",wayland")$(use gbm && echo ",drm")" + myconf+=" --with-platforms=x11,surfaceless$(use wayland && echo ",wayland")$(use gbm && echo ",drm")" fi if use gallium; then @@ -275,6 +357,8 @@ multilib_src_configure() { --with-clang-libdir="${EPREFIX}/usr/lib" " fi + + gallium_enable video_cards_virgl virgl fi if use vulkan; then |