diff options
author | Qyriad <qyriad@qyriad.me> | 2024-06-06 12:48:13 -0600 |
---|---|---|
committer | Qyriad <qyriad@qyriad.me> | 2024-06-06 12:48:13 -0600 |
commit | 766e718f6739e9098d18674bd71cb0f4bc5bbf43 (patch) | |
tree | 2c30110e10af05206af9cda3cbef4755ece080db /package.nix | |
parent | 06e65e537bd0570aa9de3cc8bad3a1ca006b38b8 (diff) |
devshells: only enable pch for clang
clangd seems to break if GCC is using precompiled headers for C++'s
standard library, so this sets -Denable-pch-std=${stdenv.cc.isClang}
Fixes #374.
Change-Id: Ic4be41ebe7576ebcb9c208275596f953c2003109
Diffstat (limited to 'package.nix')
-rw-r--r-- | package.nix | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/package.nix b/package.nix index 43b709023..ec51a9530 100644 --- a/package.nix +++ b/package.nix @@ -424,9 +424,14 @@ stdenv.mkDerivation (finalAttrs: { # For Meson to find Boost. env = finalAttrs.env; - # I guess this is necessary because mesonFlags to mkDerivation doesn't propagate in inputsFrom, - # which only propagates stuff set in hooks? idk. - inherit (finalAttrs) mesonFlags; + mesonFlags = + # I guess this is necessary because mesonFlags to mkDerivation doesn't propagate in inputsFrom, + # which only propagates stuff set in hooks? idk. + finalAttrs.mesonFlags + # Clangd breaks when GCC is using precompiled headers, so for the devshell specifically + # we make precompiled C++ stdlib conditional on using Clang. + # https://git.lix.systems/lix-project/lix/issues/374 + ++ [ (lib.mesonBool "enable-pch-std" stdenv.cc.isClang) ]; packages = lib.optional (stdenv.cc.isClang && hostPlatform == buildPlatform) clang-tools_llvm |