diff --git a/src/libstore-tests/bench-main.cc b/src/libstore-tests/bench-main.cc new file mode 100644 index 000000000..37a72d8ab --- /dev/null +++ b/src/libstore-tests/bench-main.cc @@ -0,0 +1,14 @@ +#include +#include "nix/store/globals.hh" + +// Custom main to initialize Nix before running benchmarks +int main(int argc, char ** argv) +{ + // Initialize libstore + nix::initLibStore(false); + + // Initialize and run benchmarks + ::benchmark::Initialize(&argc, argv); + ::benchmark::RunSpecifiedBenchmarks(); + return 0; +} diff --git a/src/libstore-tests/derivation-parser-bench.cc b/src/libstore-tests/derivation-parser-bench.cc index 7598758f0..d6c1d4551 100644 --- a/src/libstore-tests/derivation-parser-bench.cc +++ b/src/libstore-tests/derivation-parser-bench.cc @@ -3,7 +3,6 @@ #include "nix/store/store-api.hh" #include "nix/util/experimental-features.hh" #include "nix/store/store-open.hh" -#include "nix/store/globals.hh" #include #include @@ -31,15 +30,3 @@ static void BM_ParseRealDerivationFile(benchmark::State & state, const std::stri // Register benchmarks for actual test derivation files if they exist BENCHMARK_CAPTURE(BM_ParseRealDerivationFile, hello, std::string(NIX_UNIT_TEST_DATA) + "/derivation/hello.drv"); BENCHMARK_CAPTURE(BM_ParseRealDerivationFile, firefox, std::string(NIX_UNIT_TEST_DATA) + "/derivation/firefox.drv"); - -// Custom main to initialize Nix before running benchmarks -int main(int argc, char ** argv) -{ - // Initialize libstore - nix::initLibStore(false); - - // Initialize and run benchmarks - ::benchmark::Initialize(&argc, argv); - ::benchmark::RunSpecifiedBenchmarks(); - return 0; -} diff --git a/src/libstore-tests/meson.build b/src/libstore-tests/meson.build index 87f268828..606b8f694 100644 --- a/src/libstore-tests/meson.build +++ b/src/libstore-tests/meson.build @@ -110,9 +110,14 @@ test( if get_option('benchmarks') gbenchmark = dependency('benchmark', required : true) + benchmark_sources = files( + 'bench-main.cc', + 'derivation-parser-bench.cc', + ) + benchmark_exe = executable( 'nix-store-benchmarks', - 'derivation-parser-bench.cc', + benchmark_sources, config_priv_h, dependencies : deps_private_subproject + deps_private + deps_other + [gbenchmark], include_directories : include_dirs,