Name:    hyperscan
Version: 5.4.1
Release: 1
Summary: High-performance regular expression matching library

License: BSD
URL:     https://www.hyperscan.io/
Source0: https://github.com/intel/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz

Patch0: hyperscan-aarch64-support.patch
Patch1: Fix-hyperscan-gcc10.patch

BuildRequires:  gcc-c++
BuildRequires:  boost-devel
BuildRequires:  cmake
BuildRequires:  pcre-devel
BuildRequires:  python3
BuildRequires:  ragel
BuildRequires:  sqlite-devel >= 3.0
BuildRequires:  libpcap-devel

%description
Hyperscan is a high-performance multiple regex matching library. It
follows the regular expression syntax of the commonly-used libpcre
library, but is a standalone library with its own C API.

Hyperscan uses hybrid automata techniques to allow simultaneous
matching of large numbers (up to tens of thousands) of regular
expressions and for the matching of regular expressions across streams
of data.

Hyperscan is typically used in a DPI library stack.

%package devel
Summary: Libraries and header files for the hyperscan library
Requires: %{name}%{?_isa} = %{version}-%{release}

%description devel
Hyperscan is a high-performance multiple regex matching library. It
follows the regular expression syntax of the commonly-used libpcre
library, but is a standalone library with its own C API.

Hyperscan uses hybrid automata techniques to allow simultaneous
matching of large numbers (up to tens of thousands) of regular
expressions and for the matching of regular expressions across streams
of data.

Hyperscan is typically used in a DPI library stack.

This package provides the libraries, include files and other resources
needed for developing Hyperscan applications.

%prep
%setup -q -n %{name}-%{version}
cd %{_builddir}/%{name}-%{version}
mv src/util/simd_utils.h src/util/simd_x86.h
sed -i 's/SIMD_UTILS/SIMD_X86/' src/util/simd_x86.h
sed -i 's/_mm_set_epi32/set32x4/' src/util/state_compress.c
sed -i 's/_mm_set_epi64x/set64x2/' src/util/state_compress.c
sed -i 's/_mm_srli_si128/rshiftbyte_m128/' src/util/state_compress.c
cd -
%autopatch -p1

%build
%cmake -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_AND_SHARED:BOOL=OFF .
%make_build

%install
%make_install

%check
./bin/unit-hyperscan

%files
%doc %{_defaultdocdir}/%{name}/examples/README.md
%doc %{_defaultdocdir}/%{name}/examples/*.cc
%doc %{_defaultdocdir}/%{name}/examples/*.c
%license COPYING
%license LICENSE
%{_libdir}/*.so.*

%files devel
%{_libdir}/*.so
%{_libdir}/pkgconfig/libhs.pc
%{_includedir}/hs/

%changelog
* Sat Mar 25 2023 Liu Zixian <liuzixian4@huawei.com> - 5.4.1-1
- Update to 5.4.1

* Tue Mar 21 2023 Liu Zixian <liuzixian4@huawei.com> - 5.4.0-3
- Cleanup aarch64 patch

* Thu Oct 20 2022 Liu Zixian <liuzixian4@huawei.com> - 5.4.0-2
- Sync upstream bugfix and enable regression test

* Wed Oct 06 2021 sdlzx <hdu_sdlzx@163.com> - 5.4.0-1
- Update to 5.4.0

* Wed Aug 04 2021 wangyong <wangyong187@huawei.com> - 5.2.1-4
- Fix build error caused by GCC upgrade to GCC-10

* Sat Jul 24 2021 wangyue <wangyue92@huawei.com> - 5.2.1-3
- Fix build error on X86

* Mon Jul 20 2020 Yikun Jiang <yikunkero@gmail.com> - 5.2.1-2
- Add aarch64 support

* Fri Jun 12 2020 Yikun Jiang <yikunkero@gmail.com> - 5.2.1-1
- Init x86 package

