nixpkgs/pkgs/development/libraries/spdlog/default.nix
Ben Wolsieffer b6c05bc367 spdlog: fix cross-compilation
Currently, catch2 is listed in checkInputs, which means it is not available
when cross-compiling. On the other hand, -DSPDLOG_BUILD_TESTS=ON is passed
unconditionally, causing the build to fail when cross-compiling. This can be
fixed either by moving catch2 to buildInputs or by only building the tests
when doCheck is true. This patch implements the former solution, so the tests
are always built even if they cannot be run.
2023-09-15 19:53:37 -04:00

68 lines
1.5 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, cmake
, fmt
, catch2_3
, staticBuild ? stdenv.hostPlatform.isStatic
# tests
, bear, tiledb
}:
stdenv.mkDerivation rec {
pname = "spdlog";
version = "1.12.0";
src = fetchFromGitHub {
owner = "gabime";
repo = "spdlog";
rev = "v${version}";
hash = "sha256-cxTaOuLXHRU8xMz9gluYz0a93O0ez2xOxbloyc1m1ns=";
};
patches = [
# Fix a broken test, remove with the next release.
(fetchpatch {
url = "https://github.com/gabime/spdlog/commit/2ee8bac78e6525a8ad9a9196e65d502ce390d83a.patch";
hash = "sha256-L79yOkm3VY01jmxNctfneTLmOA5DEQeNNGC8LbpJiOc=";
})
];
nativeBuildInputs = [ cmake ];
# Required to build tests, even if they aren't executed
buildInputs = [ catch2_3 ];
propagatedBuildInputs = [ fmt ];
cmakeFlags = [
"-DSPDLOG_BUILD_SHARED=${if staticBuild then "OFF" else "ON"}"
"-DSPDLOG_BUILD_STATIC=${if staticBuild then "ON" else "OFF"}"
"-DSPDLOG_BUILD_EXAMPLE=OFF"
"-DSPDLOG_BUILD_BENCH=OFF"
"-DSPDLOG_BUILD_TESTS=ON"
"-DSPDLOG_FMT_EXTERNAL=ON"
];
outputs = [ "out" "doc" "dev" ] ;
postInstall = ''
mkdir -p $out/share/doc/spdlog
cp -rv ../example $out/share/doc/spdlog
'';
doCheck = true;
passthru.tests = {
inherit bear tiledb;
};
meta = with lib; {
description = "Very fast, header only, C++ logging library";
homepage = "https://github.com/gabime/spdlog";
license = licenses.mit;
maintainers = with maintainers; [ obadz ];
platforms = platforms.all;
};
}