File opencl-icd-loader.spec of Package opencl-icd-loader

%define realname OpenCL-ICD-Loader
%define realver  2025.07.22
%define srcext   tar.gz

%define so_ver   1

# Common info
Name:          libOpenCL%{so_ver}
# See CMakeLists.txt
Version:       3.0+git.%(echo %realver | tr -d .)
Release:       wiz%{?extraver:0.}1%{?dist}
License:       Apache-2.0
Group:         System/Libraries
URL:           https://github.com/KhronosGroup/OpenCL-ICD-Loader
Summary:       The OpenCL ICD Loader project

# Install-time parameters
Provides:      %{name} = %{realver}
Provides:      %{realname} = %{realver}
Provides:      %{realname} = %{version}-%{release}
Provides:      opencl-icd-loader = %{realver}
Provides:      opencl-icd-loader = %{version}-%{release}
Conflicts:     ocs-icd

# Build-time parameters
BuildRequires: gcc-c++
BuildRequires: cmake >= 3.16
BuildRequires: ninja
BuildRequires: opencl-headers
BuildRoot:     %{_tmppath}/%{name}-root
Source0:       https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/refs/tags/v%{realver}.%{srcext}#/%{realname}-%{realver}%{?extraver}.%{srcext}
Source1:       https://gist.githubusercontent.com/tserj/ed03e874d288be2a485089feed5ac08f/raw/1958327d253cd75b6982235d1da85ba3ad5c0337/clDeviceQuery.cpp

%description
Khronos official OpenCL ICD Loader.

%package -n libOpenCL-devel
Group:         Development/Languages/C and C++
Summary:       Files required to build software using %{realname}

Requires:      opencl-headers

Requires:      %{name} = %{version}-%{release}
Provides:      %{name}-devel = %{version}-%{release}
Provides:      %{name}-devel = %{realver}
Provides:      libOpenCL-devel = %{realver}
Provides:      %{realname}-devel = %{realver}
Provides:      %{realname}-devel = %{version}-%{release}
Provides:      opencl-icd-loader-devel = %{realver}
Provides:      opencl-icd-loader-devel = %{version}-%{release}

%description -n libOpenCL-devel
Files required to build software using %{realname}.

# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{realver}%{?extraver}

%build
_CFLAGS='%{optflags} %{?gcc_lto}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro %{?gcc_lto}'
cmake -S . -B build \
 -G Ninja \
 -DCMAKE_INSTALL_PREFIX=%{_prefix} \
 -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
 -DCMAKE_BUILD_TYPE=Release \
 -DCMAKE_C_FLAGS_RELEASE="$_CFLAGS" \
 -DCMAKE_EXE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
 -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
 -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
 -DCMAKE_VERBOSE_MAKEFILE=YES
ninja -v -C build %{?_smp_mflags}
g++ %{S:1} -o clDeviceQuery $_CFLAGS $_LDFLAGS -fno-builtin -Lbuild -lOpenCL

%install
DESTDIR=%{buildroot} ninja -v -C build install
%{__install} -D -m0755 clDeviceQuery %{buildroot}%{_bindir}/clDeviceQuery

%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%files
%defattr(-,root,root)
%license LICENSE
%doc README.md
%{_bindir}/clDeviceQuery
%{_bindir}/cllayerinfo
%{_libdir}/libOpenCL.so.%{so_ver}*

%files -n libOpenCL-devel
%license LICENSE
%doc README.md
%{_libdir}/libOpenCL.so
%{_libdir}/pkgconfig/OpenCL.pc
%dir %{_datadir}/cmake/OpenCLICDLoader
%dir %{_datadir}/cmake
%{_datadir}/cmake/OpenCLICDLoader/*.cmake

%post   -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%changelog
openSUSE Build Service is sponsored by