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
openSUSE Build Service is sponsored by