dev-util/vulkan-tools: Fix build without X
authorNick Sarnie <sarnex@gentoo.org>
Thu, 12 Jul 2018 00:33:08 +0000 (20:33 -0400)
committerNick Sarnie <sarnex@gentoo.org>
Thu, 12 Jul 2018 00:42:40 +0000 (20:42 -0400)
Added the cube and vulkaninfo USE flags

Vulkaninfo does not support wayland upstream

If X is set at all, XCB will be used

Thanks to hanetzer in #gentoo-desktop for testing

Fixes: https://bugs.gentoo.org/660694
Package-Manager: Portage-2.3.42, Repoman-2.3.9

dev-util/vulkan-tools/metadata.xml
dev-util/vulkan-tools/vulkan-tools-1.1.77.0-r1.ebuild
dev-util/vulkan-tools/vulkan-tools-9999.ebuild

index a670686d9eb683118a21facfdfabcc97844a9d43..bee42ed5665e6cc5e8a14e414f462898aeca5e53 100644 (file)
@@ -9,6 +9,10 @@
                <email>sarnex@gentoo.org</email>
                <name>Nick Sarnie</name>
        </maintainer>
+       <use>
+               <flag name="cube">Build the cube/cubepp demos</flag>
+               <flag name="vulkaninfo">Build the vulkaninfo utility</flag>
+       </use>
        <upstream>
                <remote-id type="github">KhronosGroup/Vulkan-Tools</remote-id>
        </upstream>
index fcd605b2064ee5f9cd62aa4b99f19edc9de12358..2215b2e1cc55f5b3135c2088545871c4362c97e4 100644 (file)
@@ -22,7 +22,7 @@ HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Tools"
 
 LICENSE="Apache-2.0"
 SLOT="0"
-IUSE="X wayland"
+IUSE="+cube +vulkaninfo X wayland"
 
 # Old packaging will cause file collisions
 RDEPEND="!<=media-libs/vulkan-loader-1.1.70.0-r999"
@@ -36,9 +36,15 @@ DEPEND="${PYTHON_DEPS}
                x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
           )"
 
+# Vulkaninfo does not support wayland
+REQUIRED_USE="|| ( X wayland )
+                         vulkaninfo? ( X )"
+
 multilib_src_configure() {
        local mycmakeargs=(
                -DCMAKE_SKIP_RPATH=True
+               -DBUILD_CUBE=$(usex cube)
+               -DBUILD_VULKANINFO=$(usex vulkaninfo)
                -DBUILD_WSI_MIR_SUPPORT=False
                -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
                -DBUILD_WSI_XCB_SUPPORT=$(usex X)
@@ -46,6 +52,25 @@ multilib_src_configure() {
                -DGLSLANG_INSTALL_DIR="/usr"
                -DVULKAN_HEADERS_INSTALL_DIR="/usr"
        )
+
+       # Upstream only supports one window system at a time
+       # If X is set at all, even if wayland is set, use X
+       #
+       # If -cube and/or -vulkaninfo is set, the flags we set
+       # are ignored, so we don't need to consider that
+       if use X; then
+               mycmakeargs+=(
+                       -DCUBE_WSI_SELECTION="XCB"
+                       -DVULKANINFO_WSI_SELECTION="XCB"
+               )
+       fi
+
+       if ! use X && use wayland; then
+               mycmakeargs+=(
+                       -DCUBE_WSI_SELECTION="WAYLAND"
+               )
+       fi
+
        cmake-utils_src_configure
 }
 
index 3ffd734f550bfcdeb5978f433b2e6dd716ecbb48..2215b2e1cc55f5b3135c2088545871c4362c97e4 100644 (file)
@@ -22,7 +22,7 @@ HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Tools"
 
 LICENSE="Apache-2.0"
 SLOT="0"
-IUSE="X wayland"
+IUSE="+cube +vulkaninfo X wayland"
 
 # Old packaging will cause file collisions
 RDEPEND="!<=media-libs/vulkan-loader-1.1.70.0-r999"
@@ -36,9 +36,15 @@ DEPEND="${PYTHON_DEPS}
                x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
           )"
 
+# Vulkaninfo does not support wayland
+REQUIRED_USE="|| ( X wayland )
+                         vulkaninfo? ( X )"
+
 multilib_src_configure() {
        local mycmakeargs=(
                -DCMAKE_SKIP_RPATH=True
+               -DBUILD_CUBE=$(usex cube)
+               -DBUILD_VULKANINFO=$(usex vulkaninfo)
                -DBUILD_WSI_MIR_SUPPORT=False
                -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
                -DBUILD_WSI_XCB_SUPPORT=$(usex X)
@@ -46,5 +52,35 @@ multilib_src_configure() {
                -DGLSLANG_INSTALL_DIR="/usr"
                -DVULKAN_HEADERS_INSTALL_DIR="/usr"
        )
+
+       # Upstream only supports one window system at a time
+       # If X is set at all, even if wayland is set, use X
+       #
+       # If -cube and/or -vulkaninfo is set, the flags we set
+       # are ignored, so we don't need to consider that
+       if use X; then
+               mycmakeargs+=(
+                       -DCUBE_WSI_SELECTION="XCB"
+                       -DVULKANINFO_WSI_SELECTION="XCB"
+               )
+       fi
+
+       if ! use X && use wayland; then
+               mycmakeargs+=(
+                       -DCUBE_WSI_SELECTION="WAYLAND"
+               )
+       fi
+
        cmake-utils_src_configure
 }
+
+multilib_src_install() {
+       default
+       mv "${ED%/}"/usr/bin/cube "${ED%/}"/usr/bin/vulkancube || die
+       mv "${ED%/}"/usr/bin/cubepp "${ED%/}"/usr/bin/vulkancubecpp || die
+}
+
+pkg_postinst() {
+       einfo "The cube and cubepp demos have been renamed to"
+       einfo "vulkancube and vulkancubecpp to prevent collisions"
+}