File amdgpu-pro-opencl.spec of Package amdgpu-pro-opencl

%define amdver 2.4.100
%define majorv 20.45
%define releasev 1188099

# amd64 debs
%define rocr_deb                 opencl-rocr-amdgpu-pro_%{majorv}-%{releasev}_amd64.deb
%define rocr_dev_deb             opencl-rocr-amdgpu-pro-dev_%{majorv}-%{releasev}_amd64.deb
%define hip_deb                  hip-rocr-amdgpu-pro_%{majorv}-%{releasev}_amd64.deb
%define hsa_deb                  hsa-runtime-rocr-amdgpu_1.2.0-%{releasev}_amd64.deb
%define hsa_dev_deb              hsa-runtime-rocr-amdgpu-dev_1.2.0-%{releasev}_amd64.deb
%define hsakmt_deb               hsakmt-roct-amdgpu_1.0.9-%{releasev}_amd64.deb
%define hsakmt_dev_deb           hsakmt-roct-amdgpu-dev_1.0.9-%{releasev}_amd64.deb
%define comgr_deb                comgr-amdgpu-pro_1.7.0-%{releasev}_amd64.deb
%define comgr_dev_deb            comgr-amdgpu-pro-dev_1.7.0-%{releasev}_amd64.deb
%define orca_deb                 opencl-orca-amdgpu-pro-icd_%{majorv}-%{releasev}_amd64.deb
%define libdrm_deb               libdrm-amdgpu-amdgpu1_%{amdver}-%{releasev}_amd64.deb
%define libdrm_common_deb        libdrm-amdgpu-common_1.0.0-%{releasev}_all.deb
%define rocm_deb                 rocm-device-libs-amdgpu-pro_1.0.0-%{releasev}_amd64.deb

# i386 debs
%define orca_32bit_deb           opencl-orca-amdgpu-pro-icd_%{majorv}-%{releasev}_i386.deb
%define libdrm_32bit_deb         libdrm-amdgpu-amdgpu1_%{amdver}-%{releasev}_i386.deb

Name:             opencl-amd-polaris
Summary:          OpenCL userspace driver in amdgpu-pro driver stack
Version:          %{majorv}
Release:          %{releasev}
# License: https://www.amd.com/en/support/radeon-eula
License:          SUSE-NonFree
URL:              https://amdgpu-install.readthedocs.io/en/latest/
Group:            System/Libraries
Source0:          amdgpu-pro-opencl-%{version}-ubuntu.20.04.tar.xz
BuildRequires:    fdupes
Conflicts: opencl-amd

%description
The OpenCL userspace driver in the AMD proprietary amdgpu-pro driver stack.
It should work with the open-source amdgpu kernel module and Mesa libraries.

This is not full amdgpu-pro stack, and does not include proprietary OpenGL and Vulkan implementation.

%package devel
Summary:          Libraries to develop OpenCL in amdgpu-pro driver stack
Group:            Development/Libraries/Other
Requires:         amdgpu-pro-opencl == %{majorv}

%description devel
The OpenCL userspace driver in the AMD proprietary amdgpu-pro driver stack.
It should work with the open-source amdgpu kernel module and Mesa libraries.

This is not full amdgpu-pro stack, and does not include proprietary OpenGL and Vulkan implementation.
This package includes the development files of AMD OpenCL, including header files, libraries, and cmake files.

%prep
%setup -q -n amdgpu-pro-opencl-%{version}-ubuntu.20.04

AMDGPU_PRO_DEBS=(
    %{rocr_deb}
    %{rocr_dev_deb}
    %{hip_deb}
    %{hsa_deb}
    %{hsa_dev_deb}
    %{hsakmt_deb}
    %{hsakmt_dev_deb}
    %{comgr_deb}
    %{comgr_dev_deb}
    %{orca_deb}
    %{rocm_deb}
)

# Unpack all debs except libdrm
for deb in "${AMDGPU_PRO_DEBS[@]}"; do
    ar x $deb
    tar xJf data.tar.xz
done

# Unpack libdrm
AMDGPU_PRO_DRM_DEBS=(
    %{libdrm_deb}
    %{libdrm_common_deb}
)
# Unpack libdrm packages
mkdir libdrm; pushd libdrm
for deb in "${AMDGPU_PRO_DRM_DEBS[@]}"; do
    ar x ../$deb
    tar xJf data.tar.xz
done

%build
# rename libdrm_amdgpo.so to libdrm_amdgpo.so
pushd libdrm/opt/amdgpu/lib/x86_64-linux-gnu/
rm libdrm_amdgpu.so.1
mv libdrm_amdgpu.so.1.0.0 libdrm_amdgpo.so.1.0.0
ln -s libdrm_amdgpo.so.1.0.0 libdrm_amdgpo.so.1
popd
orca_path=$(find . -name "libamdocl-orca64.so")
sed -i "s|libdrm_amdgpu|libdrm_amdgpo|g" $orca_path

%install
# Install the libraries
mkdir -p %{buildroot}%{_libdir}
AMD_LIBRARIES=(
    libamdocl64.so
    libamdhip64.so.1.5.19245
    libamdhip64.so.1
    libhsa-runtime64.so.1.2.0
    libhsa-runtime64.so.1
    libhsakmt.so.1.0.6
    libhsakmt.so.1
    libamd_comgr.so.1.7.0
    libamd_comgr.so.1
    libamdocl-orca64.so
    libamdocl12cl64.so
    libdrm_amdgpo.so.1.0.0
    libdrm_amdgpo.so.1
    libamdhip64.so
    libhsa-runtime64.so
    libamd_comgr.so
    libhsakmt.so
)

# Copy all so files
for lib in "${AMD_LIBRARIES[@]}"; do
    fpath=$(find . -name $lib)
    mv $fpath %{buildroot}%{_libdir}
    echo $lib
done

# copy the headers
mkdir -p %{buildroot}%{_includedir}
cp -r opt/amdgpu-pro/include/* %{buildroot}%{_includedir}

# copy the cmake configs
mkdir -p %{buildroot}%{_libdir}/cmake
cp -r opt/amdgpu-pro/lib/cmake/*                  %{buildroot}%{_libdir}/cmake/
cp -r opt/amdgpu-pro/lib/x86_64-linux-gnu/cmake/* %{buildroot}%{_libdir}/cmake/
cp -r opt/amdgpu/lib/x86_64-linux-gnu/cmake/*     %{buildroot}%{_libdir}/cmake/

# copy the pkgconfig
mkdir -p %{buildroot}%{_datadir}/pkgconfig
cp -r opt/amdgpu-pro/lib/x86_64-linux-gnu/pkgconfig/* %{buildroot}%{_datadir}/pkgconfig/
cp -r opt/amdgpu/share/pkgconfig/*                    %{buildroot}%{_datadir}/pkgconfig/

# copy the /etc/OpenCL/vendors
cp -r etc %{buildroot}

# copy amdgpu.ids to /opt/amdgpu/share/libdrm
install -Dm644 -t %{buildroot}/opt/amdgpu/share/libdrm libdrm/opt/amdgpu/share/libdrm/amdgpu.ids 

# copy the amdgcn directory
mkdir -p %{buildroot}/opt/amdgpu-pro
cp -r opt/amdgpu-pro/amdgcn %{buildroot}/opt/amdgpu-pro/

%fdupes %{buildroot}%{_libdir}

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%{_libdir}/*.so.*
%{_libdir}/*.so
%{_sysconfdir}/OpenCL
%config %{_sysconfdir}/OpenCL/vendors/amdocl64.icd
%config %{_sysconfdir}/OpenCL/vendors/amdocl-orca64.icd
/opt/amdgpu
/opt/amdgpu-pro

%files devel
%{_includedir}/*
%{_libdir}/cmake
%{_datadir}/pkgconfig/*

%changelog
openSUSE Build Service is sponsored by