diff --git a/pkgs/development/libraries/xgboost/default.nix b/pkgs/development/libraries/xgboost/default.nix index 4370a27012dc..319b447818cf 100644 --- a/pkgs/development/libraries/xgboost/default.nix +++ b/pkgs/development/libraries/xgboost/default.nix @@ -1,6 +1,18 @@ -{ config, stdenv, lib, fetchFromGitHub, cmake, gtest, doCheck ? true -, cudaSupport ? config.cudaSupport or false, ncclSupport ? false -, rLibrary ? false, cudaPackages, llvmPackages, R, rPackages }: +{ config +, stdenv +, lib +, fetchFromGitHub +, cmake +, gtest +, doCheck ? true +, cudaSupport ? config.cudaSupport or false +, ncclSupport ? false +, rLibrary ? false +, cudaPackages +, llvmPackages +, R +, rPackages +}: assert ncclSupport -> cudaSupport; # Disable regular tests when building the R package @@ -51,9 +63,13 @@ stdenv.mkDerivation rec { cmakeFlags = lib.optionals doCheck [ "-DGOOGLE_TEST=ON" ] ++ lib.optionals cudaSupport [ - "-DUSE_CUDA=ON" - "-DCUDA_HOST_COMPILER=${cudaPackages.cudatoolkit.cc}/bin/cc" - ] ++ lib.optionals (cudaSupport + "-DUSE_CUDA=ON" + # Their CMakeLists.txt does not respect CUDA_HOST_COMPILER, instead using the CXX compiler. + # https://github.com/dmlc/xgboost/blob/ccf43d4ba0a94e2f0a3cc5a526197539ae46f410/CMakeLists.txt#L145 + "-DCMAKE_C_COMPILER=${cudaPackages.cudatoolkit.cc}/bin/gcc" + "-DCMAKE_CXX_COMPILER=${cudaPackages.cudatoolkit.cc}/bin/g++" + ] ++ lib.optionals + (cudaSupport && lib.versionAtLeast cudaPackages.cudatoolkit.version "11.4.0") [ "-DBUILD_WITH_CUDA_CUB=ON" ] ++ lib.optionals ncclSupport [ "-DUSE_NCCL=ON" ]