summary refs log tree commit diff
diff options
context:
space:
mode:
authorsternenseemann <sternenseemann@systemli.org>2021-10-07 21:06:56 +0200
committersternenseemann <sternenseemann@systemli.org>2021-10-07 21:30:02 +0200
commit8e57c33ab6b284be5053717daba75a18c285cd5b (patch)
tree598344e66523c82695e93c2402f060d98e9b5711
parent34ca27bc95261256846ee8d0ebcdf4aeafef907a (diff)
downloadnixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar.gz
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar.bz2
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar.lz
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar.xz
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.tar.zst
nixpkgs-8e57c33ab6b284be5053717daba75a18c285cd5b.zip
pkgsLLVM.grpc: fix build with clang < 11
Apparently there's an issue where compiling grpc with -std=c++17 fails
unless the clang version is at least 11. Hopefully our default clang
version will be increased to that soon, but until then we need to work
around this problem by setting an older C++ standard.

It's unclear if using C++11 causes further issues, but compiling is
better than not compiling, I suppose.

Contrary to the linked bug report, the darwin stdenv doesn't exhibit
this problem for some reason.
-rw-r--r--pkgs/development/libraries/grpc/default.nix7
1 files changed, 6 insertions, 1 deletions
diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix
index 0787ffea41f..5d2b58aa3db 100644
--- a/pkgs/development/libraries/grpc/default.nix
+++ b/pkgs/development/libraries/grpc/default.nix
@@ -57,7 +57,12 @@ stdenv.mkDerivation rec {
     "-DgRPC_ABSL_PROVIDER=package"
     "-DBUILD_SHARED_LIBS=ON"
     "-DCMAKE_SKIP_BUILD_RPATH=OFF"
-    "-DCMAKE_CXX_STANDARD=17"
+    # Needs to be compiled with -std=c++11 for clang < 11. Interestingly this is
+    # only an issue with the useLLVM stdenv, not the darwin stdenvā€¦
+    # https://github.com/grpc/grpc/issues/26473#issuecomment-860885484
+    (if (stdenv.hostPlatform.useLLVM or false) && lib.versionOlder stdenv.cc.cc.version "11.0"
+     then "-DCMAKE_CXX_STANDARD=11"
+     else "-DCMAKE_CXX_STANDARD=17")
   ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
     "-D_gRPC_PROTOBUF_PROTOC_EXECUTABLE=${buildPackages.protobuf}/bin/protoc"
   ];