diff --git a/pkgs/development/compilers/llvm/common/clang/default.nix b/pkgs/development/compilers/llvm/common/clang/default.nix index 3cb821a7516b1..8950500ba1df0 100644 --- a/pkgs/development/compilers/llvm/common/clang/default.nix +++ b/pkgs/development/compilers/llvm/common/clang/default.nix @@ -15,10 +15,13 @@ buildLlvmTools, fixDarwinDylibNames, enableManpages ? false, + enableClangToolsExtra ? true, devExtraCmakeFlags ? [ ], replaceVars, getVersionFile, fetchpatch, + # for tests + libclang, }: stdenv.mkDerivation ( finalAttrs: @@ -32,7 +35,7 @@ stdenv.mkDerivation ( mkdir -p "$out" cp -r ${monorepoSrc}/cmake "$out" cp -r ${monorepoSrc}/clang "$out" - cp -r ${monorepoSrc}/clang-tools-extra "$out" + ${lib.optionalString enableClangToolsExtra "cp -r ${monorepoSrc}/clang-tools-extra \"$out\""} '') else src; @@ -171,7 +174,8 @@ stdenv.mkDerivation ( mkdir -p $dev/bin '' - + ( + # TODO(@LunNova): Clean up this rebuild avoidance in staging + + lib.optionalString enableClangToolsExtra ( if lib.versionOlder release_version "20" then '' cp bin/{clang-tblgen,clang-tidy-confusable-chars-gen,clang-pseudo-gen} $dev/bin @@ -180,7 +184,10 @@ stdenv.mkDerivation ( '' cp bin/{clang-tblgen,clang-tidy-confusable-chars-gen} $dev/bin '' - ); + ) + + lib.optionalString (!enableClangToolsExtra) '' + cp bin/clang-tblgen $dev/bin + ''; env = lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform && !stdenv.hostPlatform.useLLVM) @@ -209,6 +216,9 @@ stdenv.mkDerivation ( ) "stackclashprotection" ++ lib.optional (!(targetPlatform.isx86_64 || targetPlatform.isAarch64)) "zerocallusedregs" ++ (finalAttrs.passthru.hardeningUnsupportedFlags or [ ]); + tests.withoutOptionalFeatures = libclang.override { + enableClangToolsExtra = false; + }; }; requiredSystemFeatures = [ "big-parallel" ];