Unverified Commit 1b765a20 authored by Atemu's avatar Atemu Committed by GitHub
Browse files

Merge pull request #303207 from tnias/update/vectorscan-5.4.11

vectorscan: 5.4.10.1 -> 5.4.11
parents 9dd634b5 dbaa1259
Loading
Loading
Loading
Loading
+41 −9
Original line number Diff line number Diff line
@@ -2,39 +2,71 @@
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, ragel
, util-linux
, python3
, boost
, boost184
, sqlite
, pcre
, enableShared ? !stdenv.hostPlatform.isStatic
}:

stdenv.mkDerivation rec {
  pname = "vectorscan";
  version = "5.4.10.1";
  version = "5.4.11";

  src = fetchFromGitHub {
    owner = "VectorCamp";
    repo = "vectorscan";
    rev = "vectorscan/${version}";
    hash = "sha256-x6FefOrUvpN/A4GXTd+3SGZEAQL6pXt83ufxRIY3Q9k=";
    hash = "sha256-wz2oIhau/vjnri3LOyPZSCFAWg694FTLVt7+SZYEsL4=";
  };

  nativeBuildInputs = [
    cmake
    pkg-config
    ragel
    python3
  ] ++ lib.optional stdenv.isLinux util-linux;

  buildInputs = [
    boost
    boost184
    sqlite
    pcre
  ];

  cmakeFlags = lib.optional enableShared "-DBUILD_STATIC_AND_SHARED=ON"
    ++ [ "-DFAT_RUNTIME=${if stdenv.hostPlatform.isLinux then "ON" else "OFF"}" ]
  # FAT_RUNTIME bundles optimized implementations for different CPU extensions and uses CPUID to
  # transparently select the fastest for the current hardware.
  # This feature is only available on linux for x86, x86_64, and aarch64.
  #
  # If FAT_RUNTIME is not available, we fall back to building for a single extension based
  # on stdenv.hostPlatform.
  #
  # For generic builds (e.g. x86_64) this can mean using an implementation not optimized for the
  # potentially available more modern hardware extensions (e.g. x86_64 with AVX512).
  cmakeFlags = [ (if enableShared then "-DBUILD_SHARED_LIBS=ON" else "BUILD_STATIC_LIBS=ON") ]
    ++
    (if lib.elem stdenv.hostPlatform.system [ "x86_64-linux" "i686-linux" ] then
      [ "-DBUILD_AVX2=ON" "-DBUILD_AVX512=ON" "-DBUILD_AVX512VBMI=ON" "-DFAT_RUNTIME=ON" ]
    else
      (if (stdenv.isLinux && stdenv.isAarch64) then
        [ "-DBUILD_SVE=ON" "-DBUILD_SVE2=ON" "-DBUILD_SVE2_BITPERM=ON" "-DFAT_RUNTIME=ON" ]
      else
        [ "-DFAT_RUNTIME=OFF" ]
          ++ lib.optional stdenv.hostPlatform.avx2Support "-DBUILD_AVX2=ON"
          ++ lib.optional stdenv.hostPlatform.avx512Support "-DBUILD_AVX512=ON"
  ;
      )
    );

  doCheck = true;
  checkPhase = ''
    runHook preCheck

    ./bin/unit-hyperscan

    runHook postCheck
  '';

  meta = with lib; {
    description = "A portable fork of the high-performance regular expression matching library";