forked from lix-project/lix
build-time: remove 20% more by PCH'ing C++ stdlib
It seems like someone implemented precompiled headers a long time ago
and then it never got ported to meson or maybe didn't work at all.
This is, however, blessedly easy to simply implement. I went looking for
`#define` that could affect the result of precompiling the headers, and
as far as I can tell we aren't doing any of that, so this should truly
just be free build time savings.
Previous state:
Compilation (551 times):
Parsing (frontend): 1302.1 s
Codegen & opts (backend): 956.3 s
New state:
**** Time summary:
Compilation (567 times):
Parsing (frontend): 1123.0 s
Codegen & opts (backend): 1078.1 s
I wonder if the "regression" in codegen time is just doing the PCH
operation a few times, because meson does it per-target.
Change-Id: I664366b8069bab4851308b3a7571bea97ac64022
This commit is contained in:
parent
e6e5cacabe
commit
0f99ed43f1
|
@ -87,11 +87,12 @@ pre-commit-run {
|
||||||
"file"
|
"file"
|
||||||
"header"
|
"header"
|
||||||
];
|
];
|
||||||
# generated files; these will never actually be seen by this
|
|
||||||
# check, and are left here as documentation
|
|
||||||
excludes = [
|
excludes = [
|
||||||
"(parser|lexer)-tab\\.hh$"
|
''^src/pch/.*$''
|
||||||
"\\.gen\\.hh$"
|
# generated files; these will never actually be seen by this
|
||||||
|
# check, and are left here as documentation
|
||||||
|
''(parser|lexer)-tab\.hh$''
|
||||||
|
''\.gen\.hh$''
|
||||||
];
|
];
|
||||||
entry = lib.getExe pkgs.check-headers;
|
entry = lib.getExe pkgs.check-headers;
|
||||||
};
|
};
|
||||||
|
|
|
@ -169,7 +169,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
./boehmgc-coroutine-sp-fallback.diff
|
./boehmgc-coroutine-sp-fallback.diff
|
||||||
./doc
|
./doc
|
||||||
./misc
|
./misc
|
||||||
./precompiled-headers.h
|
|
||||||
./src
|
./src
|
||||||
./COPYING
|
./COPYING
|
||||||
]
|
]
|
||||||
|
|
|
@ -54,6 +54,7 @@ libcmd = library(
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
lix_doc
|
lix_doc
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -145,6 +145,7 @@ libexpr = library(
|
||||||
include_directories : [
|
include_directories : [
|
||||||
'../libmain',
|
'../libmain',
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -30,6 +30,7 @@ libfetchers = library(
|
||||||
liblixutil,
|
liblixutil,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -20,6 +20,7 @@ libmain = library(
|
||||||
liblixutil,
|
liblixutil,
|
||||||
liblixstore,
|
liblixstore,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -220,6 +220,7 @@ libstore = library(
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_args : cpp_args,
|
cpp_args : cpp_args,
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -129,6 +129,7 @@ libutil = library(
|
||||||
openssl,
|
openssl,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
implicit_include_directories : true,
|
implicit_include_directories : true,
|
||||||
install : true,
|
install : true,
|
||||||
)
|
)
|
||||||
|
|
|
@ -89,6 +89,7 @@ nix = executable(
|
||||||
boehm,
|
boehm,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -68,6 +68,7 @@ libutil_tester = executable(
|
||||||
liblixutil_test_support,
|
liblixutil_test_support,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -102,6 +103,7 @@ libstore_test_support = library(
|
||||||
include_directories : include_directories(
|
include_directories : include_directories(
|
||||||
'libstore-support',
|
'libstore-support',
|
||||||
),
|
),
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
liblixstore_test_support = declare_dependency(
|
liblixstore_test_support = declare_dependency(
|
||||||
include_directories : include_directories('libstore-support'),
|
include_directories : include_directories('libstore-support'),
|
||||||
|
@ -135,6 +137,7 @@ libstore_tester = executable(
|
||||||
gtest,
|
gtest,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -166,6 +169,7 @@ libexpr_test_support = library(
|
||||||
include_directories : include_directories(
|
include_directories : include_directories(
|
||||||
'libexpr-support',
|
'libexpr-support',
|
||||||
),
|
),
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
liblixexpr_test_support = declare_dependency(
|
liblixexpr_test_support = declare_dependency(
|
||||||
include_directories : include_directories('libexpr-support'),
|
include_directories : include_directories('libexpr-support'),
|
||||||
|
@ -199,6 +203,7 @@ libexpr_tester = executable(
|
||||||
gtest,
|
gtest,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -225,6 +230,7 @@ libcmd_tester = executable(
|
||||||
gtest,
|
gtest,
|
||||||
boost,
|
boost,
|
||||||
],
|
],
|
||||||
|
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
|
Loading…
Reference in a new issue