File amdvlk.spec of Package amdvlk
%define srcext tar.bz2
Name: amdvlk
Version: 2023.Q1.2
Release: 0
Summary: AMD's open source vulkan driver
License: MIT
Group: System/Libraries
Source0: %{name}-%{version}.%{srcext}
Source1: xgl.%{srcext}
Source2: pal.%{srcext}
Source3: llpc.%{srcext}
Source4: llvm-project.%{srcext}
Source5: MetroHash.%{srcext}
Source6: CWPack.%{srcext}
Source7: gpurt.%{srcext}
Source8: dxc.tar.bz2
Source9: glslang.tar.bz2
URL: https://github.com/GPUOpen-Drivers/AMDVLK
BuildRequires: cmake
BuildRequires: libxml2-devel
BuildRequires: pkg-config
BuildRequires: gcc-c++
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xshmfence)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(dri2proto)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: libopenssl-1_1-devel
BuildRequires: clang
BuildRequires: git
BuildRequires: glslang-devel
BuildRequires: llvm-devel
BuildRequires: ninja
Recommends: xf86-video-amdgpu
%description
The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for Radeon™ graphics adapters on Linux®. It is built on top of AMD's Platform Abstraction Library (PAL), a shared component that is designed to encapsulate certain hardware and OS-specific programming details for many of AMD's 3D and compute drivers. Leveraging PAL can help provide a consistent experience across platforms, including support for recently released GPUs and compatibility with AMD developer tools.
%prep
tar xJf %{S:8}
tar xJf %{S:9}
%setup -q -n %{name}-%{version} -a1 -a2 -a3 -a4 -a5 -a6 -a7
%ifarch %{arm} aarch64
sed -i '/-mpreferred-stack-boundary=6/d' xgl/cmake/XglCompilerOptions.cmake
%endif
%build
pushd %{_builddir}/DirectXShaderCompiler
cmake -H. -Bbuilds -GNinja -DCMAKE_BUILD_TYPE=Release -DSPIRV_WERROR=OFF -C ./cmake/caches/PredefinedParams.cmake
cmake --build builds
popd
pushd %{_builddir}/glslang
cmake -H. -Bbuilds -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX='builds/install'
pushd builds
make -j8 install
popd
popd
# Setup PATH and LD_LIBRARY_PATH for dxc and glslang
export PATH=%{_builddir}/DirectXShaderCompiler/builds/bin:%{_builddir}/glslang/builds/install/bin:$PATH
export LD_LIBRARY_PATH=%{_builddir}/DirectXShaderCompiler/builds/lib:$LD_LIBRARY_PATH
mkdir -p builds
# XGL
cmake -G Ninja \
-Hxgl \
-B builds \
-DBUILD_WAYLAND_SUPPORT=ON \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_XLIB_XRANDR_SUPPORT=YES
pushd builds
ninja
popd
%install
mkdir -p -m0755 %{buildroot}%{_libdir}
%{__install} -m0755 builds/icd/amdvlk*.so %{buildroot}%{_libdir}
%{__install} -D -m0644 builds/icd/amd_icd%{__isa_bits}.json \
%{buildroot}%{_datadir}/vulkan/icd.d/amd_icd.%{_build_arch}.json
%files
%defattr(-,root,root)
%{_libdir}/amdvlk*.so
%dir %{_datadir}/vulkan/icd.d
%dir %{_datadir}/vulkan
%{_datadir}/vulkan/icd.d/amd_icd.%{_build_arch}.json
%changelog