From e920e287347481f8bcfee3d126d0193678b2c619 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 20 Jul 2025 21:16:20 +0300 Subject: [PATCH 1/5] libutil: Speed up builds by using precompiled headers --- src/libutil/meson.build | 1 + src/libutil/pch/precompiled-headers.hh | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 src/libutil/pch/precompiled-headers.hh diff --git a/src/libutil/meson.build b/src/libutil/meson.build index f48c8f3d7..ced9c424d 100644 --- a/src/libutil/meson.build +++ b/src/libutil/meson.build @@ -191,6 +191,7 @@ this_library = library( link_args: linker_export_flags, prelink : true, # For C++ static initializers install : true, + cpp_pch : 'pch/precompiled-headers.hh' ) install_headers(headers, subdir : 'nix/util', preserve_path : true) diff --git a/src/libutil/pch/precompiled-headers.hh b/src/libutil/pch/precompiled-headers.hh new file mode 100644 index 000000000..75e905386 --- /dev/null +++ b/src/libutil/pch/precompiled-headers.hh @@ -0,0 +1,7 @@ +#include "nix/util/util.hh" +#include "nix/util/file-system.hh" +#include "nix/util/serialise.hh" +#include "nix/util/signals.hh" +#include "nix/util/source-accessor.hh" + +#include From 33d031095fa5ab4dfcbd9e4627f23b999119863b Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 20 Jul 2025 21:24:46 +0300 Subject: [PATCH 2/5] libstore: Speed up builds by using precompiled headers --- src/libstore/meson.build | 1 + src/libstore/pch/precompiled-headers.hh | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 src/libstore/pch/precompiled-headers.hh diff --git a/src/libstore/meson.build b/src/libstore/meson.build index d82bcddc1..375959643 100644 --- a/src/libstore/meson.build +++ b/src/libstore/meson.build @@ -348,6 +348,7 @@ this_library = library( link_args: linker_export_flags, prelink : true, # For C++ static initializers install : true, + cpp_pch : ['pch/precompiled-headers.hh'] ) install_headers(headers, subdir : 'nix/store', preserve_path : true) diff --git a/src/libstore/pch/precompiled-headers.hh b/src/libstore/pch/precompiled-headers.hh new file mode 100644 index 000000000..ea0dd5d70 --- /dev/null +++ b/src/libstore/pch/precompiled-headers.hh @@ -0,0 +1,8 @@ +#include "nix/store/store-api.hh" +#include "nix/store/realisation.hh" +#include "nix/store/derived-path.hh" +#include "nix/store/derivations.hh" +#include "nix/store/local-store.hh" +#include "nix/util/util.hh" + +#include From af6c84b5238a7bfd20aeb2195af86c51cb2e73cf Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 20 Jul 2025 21:33:15 +0300 Subject: [PATCH 3/5] libexpr: Speed up builds by using precompiled headers --- src/libexpr/meson.build | 1 + src/libexpr/pch/precompiled-headers.hh | 1 + 2 files changed, 2 insertions(+) create mode 100644 src/libexpr/pch/precompiled-headers.hh diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build index f5adafae0..fe795a607 100644 --- a/src/libexpr/meson.build +++ b/src/libexpr/meson.build @@ -178,6 +178,7 @@ this_library = library( link_args: linker_export_flags, prelink : true, # For C++ static initializers install : true, + cpp_pch : ['pch/precompiled-headers.hh'] ) install_headers(headers, subdir : 'nix/expr', preserve_path : true) diff --git a/src/libexpr/pch/precompiled-headers.hh b/src/libexpr/pch/precompiled-headers.hh new file mode 100644 index 000000000..1c9417b37 --- /dev/null +++ b/src/libexpr/pch/precompiled-headers.hh @@ -0,0 +1 @@ +#include "nix/expr/eval.hh" From 46469983e7e3b395907d1a66787c66c989417f24 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 20 Jul 2025 21:39:47 +0300 Subject: [PATCH 4/5] libcmd: Speed up builds by using precompiled headers --- src/libcmd/meson.build | 1 + src/libcmd/pch/precompiled-headers.hh | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 src/libcmd/pch/precompiled-headers.hh diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build index 216d4df9c..5c3dd91ee 100644 --- a/src/libcmd/meson.build +++ b/src/libcmd/meson.build @@ -92,6 +92,7 @@ this_library = library( link_args: linker_export_flags, prelink : true, # For C++ static initializers install : true, + cpp_pch : ['pch/precompiled-headers.hh'] ) install_headers(headers, subdir : 'nix/cmd', preserve_path : true) diff --git a/src/libcmd/pch/precompiled-headers.hh b/src/libcmd/pch/precompiled-headers.hh new file mode 100644 index 000000000..6f9947e9b --- /dev/null +++ b/src/libcmd/pch/precompiled-headers.hh @@ -0,0 +1,4 @@ +#include "nix/cmd/installables.hh" +#include "nix/expr/eval.hh" +#include "nix/util/util.hh" +#include "nix/flake/flake.hh" From 9dae9f6cab6f545fc3d155c745ac80798b560702 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 20 Jul 2025 21:45:39 +0300 Subject: [PATCH 5/5] nix-cli: Speed up builds by using precompiled headers --- src/nix/meson.build | 1 + src/nix/pch/precompiled-headers.hh | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 src/nix/pch/precompiled-headers.hh diff --git a/src/nix/meson.build b/src/nix/meson.build index 0ba8bdd46..586ee15c3 100644 --- a/src/nix/meson.build +++ b/src/nix/meson.build @@ -186,6 +186,7 @@ this_exe = executable( include_directories : include_dirs, link_args: linker_export_flags, install : true, + cpp_pch : ['pch/precompiled-headers.hh'] ) meson.override_find_program('nix', this_exe) diff --git a/src/nix/pch/precompiled-headers.hh b/src/nix/pch/precompiled-headers.hh new file mode 100644 index 000000000..5b320c861 --- /dev/null +++ b/src/nix/pch/precompiled-headers.hh @@ -0,0 +1,3 @@ +#include "nix/cmd/command.hh" +#include "nix/expr/eval.hh" +#include "nix/main/shared.hh"