## START: Set by rpmautospec
## (rpmautospec version 0.7.3)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
    release_number = 1;
    base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
    print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec

%global sover   0.0.0
%global majver  %(cut -d. -f1 <<< %{sover})
%global giturl  https://github.com/arminbiere/kissat

Name:           kissat
Version:        4.0.1
Release:        %autorelease
Summary:        Keep It Simple SAT solver

License:        MIT
URL:            http://fmv.jku.at/kissat/
VCS:            git:%{giturl}.git
Source:         %{giturl}/archive/rel-%{version}/%{name}-%{version}.tar.gz
# Fedora-only patch: give the shared library an SONAME
Patch:          %{name}-shared.patch

# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch:    %{ix86}

BuildRequires:  drat-trim-tools
BuildRequires:  gcc
BuildRequires:  glibc-langpack-en
BuildRequires:  help2man
BuildRequires:  make
BuildRequires:  p7zip-plugins
BuildRequires:  xz-lzma-compat

Requires:       %{name}-libs%{?_isa} = %{version}-%{release}

%global _desc %{expand:
KISSAT is a "keep it simple and clean bare metal SAT solver" written in
C.  It is a port of CaDiCaL back to C with improved data structures,
better scheduling of inprocessing and optimized algorithms and
implementation.  Coincidentally 'kissat' also means 'cats' in Finnish.}

%description %_desc

This package contains a command-line interface to KISSAT.

%package libs
Summary:        Keep It Simple SAT solver library

%description libs %_desc

This package contains KISSAT as a library, for use in applications that
need a SAT solver.

%package devel
Summary:        Development files for %{name}
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}

%description devel
Library links and header files for developing applications that use
%{name}.

%prep
%autosetup -p1 -n %{name}-rel-%{version}

# Remove handle.c from APPSRC; it defines kissat_signal_name, which is called
# from library code, so handle.c must be in the library as well.
sed -i 's/ handle\.c//' makefile.in

# Set the library soname
sed -i 's/@SOVER@/%{sover}/;s/@MAJVER@/%{majver}/' makefile.in

# Adapt to a drat-trim change
sed -ri '/sqrt|prime/s/false/true/' test/testcnfs.h

%build
# Use Fedora flags by default.  This cannot be done in %%prep.  See
# https://bugzilla.redhat.com/show_bug.cgi?id=2044028
sed -e 's|-W -Wall|%{build_cflags} -fPIC|' \
    -e 's|^\(passtolinker=\)""|\1" %{build_ldflags}"|' \
    -i configure

# This is NOT an autoconf-generated script.  Do NOT use %%configure.
./configure -O2 --test
%make_build

# Make a man page for the command line interface
export LD_LIBRARY_PATH=$PWD/build
help2man --version-string=%{version} -N -n 'Keep It Simple SAT solver' \
  -o kissat.1 build/kissat

%install
# The makefile has no install target.  Install by hand.
# Install the binary
mkdir -p %{buildroot}%{_bindir}
cp -p build/kissat %{buildroot}%{_bindir}

# Install the library
mkdir -p %{buildroot}%{_libdir}
cp -p build/libkissat.so.%{sover} %{buildroot}%{_libdir}
ln -s libkissat.so.%{sover} %{buildroot}%{_libdir}/libkissat.so.%{majver}
ln -s libkissat.so.%{majver} %{buildroot}%{_libdir}/libkissat.so

# Install the header file
mkdir -p %{buildroot}%{_includedir}
cp -p src/kissat.h %{buildroot}%{_includedir}

# Install the man page
mkdir -p %{buildroot}%{_mandir}/man1
cp -p kissat.1 %{buildroot}%{_mandir}/man1

%check
LD_LIBRARY_PATH=$PWD/build build/tissat

%files
%{_bindir}/kissat
%{_mandir}/man1/kissat.1*

%files libs
%doc README.md
%license LICENSE
%{_libdir}/lib%{name}.so.0*

%files devel
%{_includedir}/%{name}.h
%{_libdir}/lib%{name}.so

%changelog
## START: Generated by rpmautospec
* Fri Sep 13 2024 Jerry James <loganjerry@gmail.com> - 4.0.1-1
- Version 4.0.1

* Wed Aug 07 2024 Jerry James <loganjerry@gmail.com> - 4.0.0-1
- Version 4.0.0

* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild

* Thu Mar 14 2024 Jerry James <loganjerry@gmail.com> - 3.1.1-4
- Stop building for 32-bit x86

* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Fri Sep 15 2023 Jerry James <loganjerry@gmail.com> - 3.1.1-1
- Version 3.1.1

* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

* Tue Jul 18 2023 Jerry James <loganjerry@gmail.com> - 3.1.0-1
- Version 3.1.0

* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

* Wed Jul  6 2022 Jerry James <loganjerry@gmail.com> - 3.0.0-1
- Version 3.0.0

* Fri Jan 28 2022 Jerry James <loganjerry@gmail.com> - 0-0.5.sc2021
- Work around package-notes breakage
- Adapt to a drat-trim change

* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0-0.5.sc2021
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0-0.4.sc2021
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

* Sat Jul 17 2021 Jerry James <loganjerry@gmail.com> - 0-0.3.sc2021
- Version sc2021

* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0-0.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Sun Jul 12 2020 Jerry James <loganjerry@gmail.com> - 0-0.1.20200704gitbaef460
- Initial RPM

## END: Generated by rpmautospec