Files
hipsparse/hipsparse.spec
Egbert Eich ca58c9cf53 Convert to SUSE Format
Signed-off-by: Egbert Eich <eich@suse.com>
2025-08-26 22:37:27 +02:00

200 lines
5.2 KiB
RPMSpec

#
# spec file for package hipsparse
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if 0%{?suse_version}
%global hipsparse_name libhipsparse1
%else
%global hipsparse_name hipsparse
%endif
%global upstreamname hipSPARSE
%global rocm_release 6.4
%global rocm_patch 2
%global rocm_version %{rocm_release}.%{rocm_patch}
%global toolchain rocm
# hipcc does not support some clang flags
%global build_cxxflags %(echo %{optflags} | sed -e 's/-fstack-protector-strong/-Xarch_host -fstack-protector-strong/' -e 's/-fcf-protection/-Xarch_host -fcf-protection/' -e 's/-mtls-dialect=gnu2//')
%bcond_with debug
%if %{with debug}
%global build_type DEBUG
%else
%global build_type RelWithDebInfo
%endif
# Assumes gpu hw
%bcond_with check
# downloads tests, use mock --enable-network
%bcond_with test
%if %{with test}
%global build_test ON
%global __brp_check_rpaths %{nil}
%else
%global build_test OFF
%endif
# gfortran and clang rpm macros do not mix
%global build_fflags %{nil}
# Compression type and level for source/binary package payloads.
# "w7T0.xzdio" xz level 7 using %%{getncpus} threads
%global _source_payload w7T0.xzdio
%global _binary_payload w7T0.xzdio
Name: %{hipsparse_name}
Version: %{rocm_version}
Release: 3%{?dist}
Summary: ROCm SPARSE marshalling library
URL: https://github.com/ROCmSoftwarePlatform/%{upstreamname}
License: MIT
Source0: %{url}/archive/rocm-%{rocm_version}.tar.gz#/%{upstreamname}-%{rocm_version}.tar.gz
Patch1: 0002-refactor-setting-matrices-download-dir.patch
BuildRequires: cmake
BuildRequires: gcc-c++
%if 0%{?suse_version}
BuildRequires: gcc-fortran
%else
BuildRequires: gcc-gfortran
%endif
BuildRequires: rocm-cmake
BuildRequires: rocm-comgr-devel
BuildRequires: rocm-compilersupport-macros
BuildRequires: rocm-hip-devel
BuildRequires: rocm-rpm-macros
BuildRequires: rocm-runtime-devel
BuildRequires: rocprim-devel
BuildRequires: rocsparse-devel
%if %{with test}
BuildRequires: gtest-devel
BuildRequires: rocblas-devel
%if 0%{?suse_version}
BuildRequires: rocm-libomp-devel
%else
BuildRequires: libomp-devel
%endif
%endif
Provides: hipsparse = %{version}-%{release}
# Only x86_64 works right now:
ExclusiveArch: x86_64
%description
hipSPARSE is a SPARSE marshalling library with multiple
supported backends. It sits between your application and
a 'worker' SPARSE library, where it marshals inputs to
the backend library and marshals results to your
application. hipSPARSE exports an interface that doesn't
require the client to change, regardless of the chosen
backend. Currently, hipSPARSE supports rocSPARSE and
cuSPARSE backends.
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%package devel
Summary: Libraries and headers for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
Provides: hipsparse-devel = %{version}-%{release}
%description devel
%{summary}
%if %{with test}
%package test
Summary: Tests for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description test
%{summary}
%endif
%prep
%autosetup -p1 -n %{upstreamname}-rocm-%{version}
%build
%cmake \
-DCMAKE_CXX_COMPILER=hipcc \
-DCMAKE_C_COMPILER=hipcc \
-DCMAKE_LINKER=%rocmllvm_bindir/ld.lld \
-DCMAKE_AR=%rocmllvm_bindir/llvm-ar \
-DCMAKE_RANLIB=%rocmllvm_bindir/llvm-ranlib \
-DCMAKE_BUILD_TYPE=%build_type \
-DCMAKE_PREFIX_PATH=%{rocmllvm_cmakedir}/.. \
-DCMAKE_SKIP_RPATH=ON \
-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \
-DROCM_SYMLINK_LIBS=OFF \
-DHIP_PLATFORM=amd \
-DAMDGPU_TARGETS=%{rocm_gpu_list_default} \
-DCMAKE_INSTALL_LIBDIR=%_libdir \
-DBUILD_CLIENTS_BENCHMARKS=%{build_test} \
-DBUILD_CLIENTS_SAMPLES=OFF \
-DBUILD_CLIENTS_TESTS=%{build_test} \
-DBUILD_CLIENTS_TESTS_OPENMP=OFF \
%if %{with test}
-DCMAKE_MATRICES_DIR=%{_builddir}/%{name}-test-matrices/ \
%endif
-DBUILD_FORTRAN_CLIENTS=OFF
%cmake_build
%if %{with test}
%if %{with check}
%check
gpu=default
find . -name 'hipsparse-test' -exec {} \;
%endif
%endif
%install
%cmake_install
rm -f %{buildroot}%{_prefix}/share/doc/hipsparse/LICENSE.md
%if %{with test}
mkdir -p %{buildroot}/%{_datadir}/%{name}/matrices
install -pm 644 %{_builddir}/%{name}-test-matrices/* %{buildroot}/%{_datadir}/%{name}/matrices
%endif
%files
%license LICENSE.md
%{_libdir}/libhipsparse.so.1{,.*}
%files devel
%doc README.md
%dir %{_libdir}/cmake/hipsparse
%dir %{_includedir}/hipsparse
%{_includedir}/hipsparse/*
%{_libdir}/libhipsparse.so
%{_libdir}/cmake/hipsparse/*.cmake
%if %{with test}
%files test
%dir %{_datadir}/hipsparse
%{_bindir}/hipsparse*
%{_datadir}/hipsparse/test/*
%{_datadir}/hipsparse/matrices/*
%endif
%changelog