diff --git a/pkgs/development/compilers/gcc/default.nix b/pkgs/development/compilers/gcc/default.nix index fdc79b575515d..7ea26f9d5d1c4 100644 --- a/pkgs/development/compilers/gcc/default.nix +++ b/pkgs/development/compilers/gcc/default.nix @@ -413,6 +413,8 @@ ${""} done passthru = { inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version; isGNU = true; + defaultCStandard = if atLeast11 then 17 else if atleast5 then 11 else 89; + defaultCxxStandard = if atLeast11 then 17 else if atleast6 then 14 else 98; } // lib.optionalAttrs (!atLeast12) { hardeningUnsupportedFlags = lib.optionals is48 [ "stackprotector" ] ++ [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/10/clang/default.nix b/pkgs/development/compilers/llvm/10/clang/default.nix index ad4e913041583..a340d1f382172 100644 --- a/pkgs/development/compilers/llvm/10/clang/default.nix +++ b/pkgs/development/compilers/llvm/10/clang/default.nix @@ -90,6 +90,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/11/clang/default.nix b/pkgs/development/compilers/llvm/11/clang/default.nix index f0d41a3ab7347..3d7ca742fd3a0 100644 --- a/pkgs/development/compilers/llvm/11/clang/default.nix +++ b/pkgs/development/compilers/llvm/11/clang/default.nix @@ -95,6 +95,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/12/clang/default.nix b/pkgs/development/compilers/llvm/12/clang/default.nix index 7ecd4efc08378..2d16759bce237 100644 --- a/pkgs/development/compilers/llvm/12/clang/default.nix +++ b/pkgs/development/compilers/llvm/12/clang/default.nix @@ -89,6 +89,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/13/clang/default.nix b/pkgs/development/compilers/llvm/13/clang/default.nix index a070e64c7ddd9..ef8cf34774170 100644 --- a/pkgs/development/compilers/llvm/13/clang/default.nix +++ b/pkgs/development/compilers/llvm/13/clang/default.nix @@ -83,6 +83,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/14/clang/default.nix b/pkgs/development/compilers/llvm/14/clang/default.nix index 976ff7580ac31..f9f3dec1007fb 100644 --- a/pkgs/development/compilers/llvm/14/clang/default.nix +++ b/pkgs/development/compilers/llvm/14/clang/default.nix @@ -86,6 +86,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/15/clang/default.nix b/pkgs/development/compilers/llvm/15/clang/default.nix index 894db1a4975f6..513b344f4e904 100644 --- a/pkgs/development/compilers/llvm/15/clang/default.nix +++ b/pkgs/development/compilers/llvm/15/clang/default.nix @@ -97,6 +97,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/16/clang/default.nix b/pkgs/development/compilers/llvm/16/clang/default.nix index 2a2656df5fe1c..1670b2f6bfc04 100644 --- a/pkgs/development/compilers/llvm/16/clang/default.nix +++ b/pkgs/development/compilers/llvm/16/clang/default.nix @@ -92,6 +92,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 17; + defaultCxxStandard = 17; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/5/clang/default.nix b/pkgs/development/compilers/llvm/5/clang/default.nix index 70ffb3e0dd19e..e10588827e84e 100644 --- a/pkgs/development/compilers/llvm/5/clang/default.nix +++ b/pkgs/development/compilers/llvm/5/clang/default.nix @@ -84,6 +84,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 98; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/6/clang/default.nix b/pkgs/development/compilers/llvm/6/clang/default.nix index bc69f1c99cf47..5ec7a7df4eb2e 100644 --- a/pkgs/development/compilers/llvm/6/clang/default.nix +++ b/pkgs/development/compilers/llvm/6/clang/default.nix @@ -84,6 +84,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/7/clang/default.nix b/pkgs/development/compilers/llvm/7/clang/default.nix index 136a69e72161a..f2ecb47cf283e 100644 --- a/pkgs/development/compilers/llvm/7/clang/default.nix +++ b/pkgs/development/compilers/llvm/7/clang/default.nix @@ -96,6 +96,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/8/clang/default.nix b/pkgs/development/compilers/llvm/8/clang/default.nix index 994f9bd967c41..5737390b8b63b 100644 --- a/pkgs/development/compilers/llvm/8/clang/default.nix +++ b/pkgs/development/compilers/llvm/8/clang/default.nix @@ -102,6 +102,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/compilers/llvm/9/clang/default.nix b/pkgs/development/compilers/llvm/9/clang/default.nix index 75814fc11c481..fece176b3656b 100644 --- a/pkgs/development/compilers/llvm/9/clang/default.nix +++ b/pkgs/development/compilers/llvm/9/clang/default.nix @@ -97,6 +97,8 @@ let passthru = { inherit libllvm; isClang = true; + defaultCStandard = 11; + defaultCxxStandard = 14; hardeningUnsupportedFlags = [ "fortify3" ]; }; diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix index 77bba280df966..c1c6649c8565f 100644 --- a/pkgs/development/libraries/grpc/default.nix +++ b/pkgs/development/libraries/grpc/default.nix @@ -70,14 +70,10 @@ stdenv.mkDerivation rec { # problematic, because the compatibility types in abseil will have different # interface definitions than the ones used for building abseil itself. # [1] https://github.com/grpc/grpc/blob/v1.57.0/CMakeLists.txt#L239-L243 - ++ (let - defaultCxxIsOlderThan17 = - (stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.cc.version "16.0") - || (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.cc.version "11.0"); - in lib.optionals (stdenv.hostPlatform.isDarwin && defaultCxxIsOlderThan17) - [ + # TODO: Patching that line out would be a better solution. + ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.cc.cc.defaultCxxStandard >= 17) [ "-DCMAKE_CXX_STANDARD=17" - ]); + ]; # CMake creates a build directory by default, this conflicts with the # basel BUILD file on case-insensitive filesystems. diff --git a/pkgs/development/libraries/protobuf/generic-v3-cmake.nix b/pkgs/development/libraries/protobuf/generic-v3-cmake.nix index 384d2d0decb4c..a46e834c8aab9 100644 --- a/pkgs/development/libraries/protobuf/generic-v3-cmake.nix +++ b/pkgs/development/libraries/protobuf/generic-v3-cmake.nix @@ -80,6 +80,8 @@ let "-Dprotobuf_ABSL_PROVIDER=package" ] ++ lib.optionals (!stdenv.targetPlatform.isStatic) [ "-Dprotobuf_BUILD_SHARED_LIBS=ON" + ] ++ lib.optionals (stdenv.cc.cc.defaultCxxStandard < 14) [ + "-DCMAKE_CXX_STANDARD=14" ] # Tests fail to build on 32-bit platforms; fixed in 3.22 # https://github.com/protocolbuffers/protobuf/issues/10418