From a05f2f20537e07f6e8f0d7cdef450f0a41e401ae Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Fri, 11 Nov 2022 07:08:39 -0500 Subject: [PATCH] grpc: build with `CMAKE_CXX_STANDARD=17` --- pkgs/development/libraries/grpc/default.nix | 36 ++++++++++++--------- pkgs/top-level/all-packages.nix | 4 +-- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix index 56f3cf0e7abd..744f9652378f 100644 --- a/pkgs/development/libraries/grpc/default.nix +++ b/pkgs/development/libraries/grpc/default.nix @@ -54,22 +54,26 @@ stdenv.mkDerivation rec { buildInputs = [ openssl protobuf ] ++ lib.optionals stdenv.isLinux [ libnsl ]; - cmakeFlags = [ - "-DgRPC_ZLIB_PROVIDER=package" - "-DgRPC_CARES_PROVIDER=package" - "-DgRPC_RE2_PROVIDER=package" - "-DgRPC_SSL_PROVIDER=package" - "-DgRPC_PROTOBUF_PROVIDER=package" - "-DgRPC_ABSL_PROVIDER=package" - "-DBUILD_SHARED_LIBS=ON" - ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ - "-D_gRPC_PROTOBUF_PROTOC_EXECUTABLE=${buildPackages.protobuf}/bin/protoc" - ] ++ lib.optionals ((stdenv.hostPlatform.useLLVM or false) && lib.versionOlder stdenv.cc.cc.version "11.0") [ - # 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 - "-DCMAKE_CXX_STANDARD=11" - ]; + cmakeFlags = + let + # 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 + useLLVMAndOldCC = (stdenv.hostPlatform.useLLVM or false) && lib.versionOlder stdenv.cc.cc.version "11.0"; + cxxStandard = if useLLVMAndOldCC then "11" else "17"; + in + [ + "-DgRPC_ZLIB_PROVIDER=package" + "-DgRPC_CARES_PROVIDER=package" + "-DgRPC_RE2_PROVIDER=package" + "-DgRPC_SSL_PROVIDER=package" + "-DgRPC_PROTOBUF_PROVIDER=package" + "-DgRPC_ABSL_PROVIDER=package" + "-DBUILD_SHARED_LIBS=ON" + "-DCMAKE_CXX_STANDARD=${cxxStandard}" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-D_gRPC_PROTOBUF_PROTOC_EXECUTABLE=${buildPackages.protobuf}/bin/protoc" + ]; # CMake creates a build directory by default, this conflicts with the # basel BUILD file on case-insensitive filesystems. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 246ae2201eff..094cd87fa67f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19468,9 +19468,9 @@ with pkgs; grilo-plugins = callPackage ../development/libraries/grilo-plugins { }; grpc = callPackage ../development/libraries/grpc { - # grpc builds with c++14 so abseil must also be built that way + # grpc builds with c++17 so abseil must also be built that way abseil-cpp = abseil-cpp_202206.override { - cxxStandard = "14"; + cxxStandard = "17"; }; };