aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQyriad <qyriad@qyriad.me>2024-06-06 12:48:13 -0600
committerQyriad <qyriad@qyriad.me>2024-06-06 12:48:13 -0600
commit766e718f6739e9098d18674bd71cb0f4bc5bbf43 (patch)
tree2c30110e10af05206af9cda3cbef4755ece080db
parent06e65e537bd0570aa9de3cc8bad3a1ca006b38b8 (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
-rw-r--r--package.nix11
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