mirror of
https://github.com/NixOS/nix.git
synced 2025-11-09 12:06:01 +01:00
GCC doesn't really benefit as much as Clang does from using precompiled headers. Another aspect to consider is that clangd doesn't really like GCC's PCH flags in the compilation database, so GCC based devshells would continue to work with clangd. This also has the slight advantage of ensuring that our includes are in order, since we build with both Clang and GCC.
34 lines
1.1 KiB
Meson
34 lines
1.1 KiB
Meson
# This is only conditional to work around
|
|
# https://github.com/mesonbuild/meson/issues/13293. It should be
|
|
# unconditional.
|
|
if not (host_machine.system() == 'windows' and cxx.get_id() == 'gcc')
|
|
deps_private += dependency('threads')
|
|
endif
|
|
|
|
add_project_arguments(
|
|
'-Wdeprecated-copy',
|
|
'-Werror=suggest-override',
|
|
'-Werror=switch',
|
|
'-Werror=switch-enum',
|
|
'-Werror=undef',
|
|
'-Werror=unused-result',
|
|
'-Werror=sign-compare',
|
|
'-Wignored-qualifiers',
|
|
'-Wimplicit-fallthrough',
|
|
'-Wno-deprecated-declarations',
|
|
language : 'cpp',
|
|
)
|
|
|
|
# GCC doesn't benefit much from precompiled headers.
|
|
do_pch = cxx.get_id() == 'clang'
|
|
|
|
# This is a clang-only option for improving build times.
|
|
# It forces the instantiation of templates in the PCH itself and
|
|
# not every translation unit it's included in.
|
|
# It's available starting from clang 11, which is old enough to not
|
|
# bother checking the version.
|
|
# This feature helps in particular with the expensive nlohmann::json template
|
|
# instantiations in libutil and libstore.
|
|
if cxx.get_id() == 'clang'
|
|
add_project_arguments('-fpch-instantiate-templates', language : 'cpp')
|
|
endif
|