57 lines
1.8 KiB
Nix
57 lines
1.8 KiB
Nix
|
{ lib, stdenv, fetchFromGitHub, cmake, gtest }:
|
||
|
let
|
||
|
version = "7.5.0";
|
||
|
|
||
|
darwin_src = fetchFromGitHub {
|
||
|
owner = "xtensor-stack";
|
||
|
repo = "xsimd";
|
||
|
rev = version;
|
||
|
sha256 = "eGAdRSYhf7rbFdm8g1Tz1ZtSVu44yjH/loewblhv9Vs=";
|
||
|
# Avoid requiring apple_sdk. We're doing this here instead of in the patchPhase
|
||
|
# because this source is directly used in arrow-cpp.
|
||
|
# pyconfig.h defines _GNU_SOURCE to 1, so we need to stamp that out too.
|
||
|
# Upstream PR with a better fix: https://github.com/xtensor-stack/xsimd/pull/463
|
||
|
postFetch = ''
|
||
|
mkdir $out
|
||
|
tar -xf $downloadedFile --directory=$out --strip-components=1
|
||
|
substituteInPlace $out/include/xsimd/types/xsimd_scalar.hpp \
|
||
|
--replace 'defined(__APPLE__)' 0 \
|
||
|
--replace 'defined(_GNU_SOURCE)' 0
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "xtensor-stack";
|
||
|
repo = "xsimd";
|
||
|
rev = version;
|
||
|
sha256 = "0c9pq5vz43j99z83w3b9qylfi66mn749k1afpv5cwfxggbxvy63f";
|
||
|
};
|
||
|
in stdenv.mkDerivation {
|
||
|
pname = "xsimd";
|
||
|
inherit version;
|
||
|
src = if stdenv.hostPlatform.isDarwin then darwin_src else src;
|
||
|
|
||
|
nativeBuildInputs = [ cmake ];
|
||
|
|
||
|
cmakeFlags = [ "-DBUILD_TESTS=ON" ];
|
||
|
|
||
|
doCheck = true;
|
||
|
checkInputs = [ gtest ];
|
||
|
checkTarget = "xtest";
|
||
|
GTEST_FILTER = let
|
||
|
# Upstream Issue: https://github.com/xtensor-stack/xsimd/issues/456
|
||
|
filteredTests = lib.optionals stdenv.hostPlatform.isDarwin [
|
||
|
"error_gamma_test/sse_double.gamma"
|
||
|
"error_gamma_test/avx_double.gamma"
|
||
|
];
|
||
|
in "-${builtins.concatStringsSep ":" filteredTests}";
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = "C++ wrappers for SIMD intrinsics";
|
||
|
homepage = "https://github.com/xtensor-stack/xsimd";
|
||
|
license = licenses.bsd3;
|
||
|
maintainers = with maintainers; [ tobim ];
|
||
|
platforms = platforms.all;
|
||
|
};
|
||
|
}
|