diff --git a/default.nix b/default.nix index 8def385..c12f38c 100644 --- a/default.nix +++ b/default.nix @@ -1,16 +1,3 @@ { pkgs ? import {} }: -pkgs.callPackage ./derivation.nix { - extraCmakeFlags = [ - "-DGINKGO_BUILD_SHARED_LIBS=OFF" - "-DGINKGO_BUILD_TESTING=OFF" - "-DGINKGO_BUILD_TESTS=OFF" - "-DGINKGO_BUILD_MPI=OFF" - "-DGINKGO_BUILD_REFERENCE=ON" - "-DGINKGO_BUILD_CUDA=OFF" - "-DGINKGO_BUILD_BENCHMARKS=OFF" - "-DGINKGO_BUILD_EXAMPLES=OFF" - "-DGINKGO_BUILD_HWLOC=OFF" - "-DGINKGO_BUILD_DOC=OFF" - ]; -} +pkgs.callPackage ./derivation.nix {} diff --git a/derivation.nix b/derivation.nix index a86d314..275555d 100644 --- a/derivation.nix +++ b/derivation.nix @@ -5,13 +5,17 @@ , ninja , gtest , mold -, clang_14 -, cppCompiler ? clang_14 +, clang +, cppCompiler ? clang , hwloc , gflags , rapidjson -, extraBuildInputs ? [] -, extraCmakeFlags ? [] + +## optional backends +, hipSupport ? false, hip, rocthrust +, cudaSupport ? false, cudatoolkit +, ompSupport ? false +, mpiSupport ? false }: let @@ -24,10 +28,12 @@ let rev = "234594c92b58e2384dfb43c2d08e7f43e2b58e7a"; sha256 = "eKQfuXnTMGgEzuksXzZE4QR5ILfVbw+dK9IsRdmalQc="; }; - extra_build_inputs = extraBuildInputs; base_cmake_flags = [ + "-DGINKGO_BUILD_TESTS=OFF" + "-DGINKGO_BUILD_BENCHMARKS=OFF" + "-DGINKGO_BUILD_EXAMPLES=OFF" + "-DGINKGO_BUILD_HWLOC=OFF" ]; - extra_cmake_flags = extraCmakeFlags; native_build_inputs = [ cmake ninja @@ -38,7 +44,9 @@ let build_inputs = [ gflags rapidjson - ]; + ] + ++ lib.optional cudaSupport cudatoolkit + ++ lib.optional hipSupport [ hip, rocthrust ]; in stdenvNoCC.mkDerivation { pname = "${basename}"; version = version; @@ -47,12 +55,38 @@ in stdenvNoCC.mkDerivation { nativeBuildInputs = native_build_inputs; - buildInputs = build_inputs ++ extra_build_inputs; + buildInputs = build_inputs; + + cmakeFlags = base_cmake_flags + ++ lib.optional cudaSupport [ + "-DGINKGO_BUILD_CUDA=ON" + ] + ++ lib.optional (!cudaSupport) [ + "-DGINKGO_BUILD_CUDA=OFF" + ] + ++ lib.optional hipSupport [ + "-DGINKGO_BUILD_HIP=ON" + ] + ++ lib.optional (!hipSupport) [ + "-DGINKGO_BUILD_HIP=OFF" + ] + ++ lib.optional ompSupport [ + "-DGINKGO_BUILD_OMP=ON" + ] + ++ lib.optional (!ompSupport) [ + "-DGINKGO_BUILD_OMP=OFF" + ] + ++ lib.optional mpiSupport [ + "-DGINKGO_BUILD_MPI=ON" + ] + ++ lib.optional (!mpiSupport) [ + "-DGINKGO_BUILD_MPI=OFF" + ]; - cmakeFlags = base_cmake_flags ++ extra_cmake_flags; - outputs = [ "out" "dev" ]; + doCheck = false; + patches = [ ./ver_1_5_cmake.patch ]; diff --git a/release.nix b/release.nix index c9268ae..9e6f1cb 100644 --- a/release.nix +++ b/release.nix @@ -10,62 +10,17 @@ in ginkgo-project = { ginkgo = { reference = pkgs.callPackage ./derivation.nix { - extraCmakeFlags = [ - "-DGINKGO_BUILD_CUDA=OFF" - "-DGINKGO_BUILD_BENCHMARKS=OFF" - "-DGINKGO_BUILD_EXAMPLES=OFF" - "-DGINKGO_BUILD_HWLOC=OFF" - "-DGINKGO_BUILD_HIP=OFF" - "-DGINKGO_BUILD_OMP=OFF" - "-DGINKGO_BUILD_MPI=OFF" - ]; }; cuda = pkgs.callPackage ./derivation.nix { - extraCmakeFlags = [ - "-DGINKGO_BUILD_CUDA=ON" - "-DGINKGO_BUILD_BENCHMARKS=OFF" - "-DGINKGO_BUILD_EXAMPLES=OFF" - "-DGINKGO_BUILD_HWLOC=OFF" - "-DGINKGO_BUILD_HIP=OFF" - "-DGINKGO_BUILD_OMP=OFF" - "-DGINKGO_BUILD_MPI=OFF" - ]; - extraBuildInputs = [ - pkgs.cudatoolkit - ]; + cudaSupport = true; }; hip = pkgs.callPackage ./derivation.nix { - cppCompiler = pkgs.clang; - extraCmakeFlags = [ - "-DGINKGO_BUILD_CUDA=OFF" - "-DGINKGO_BUILD_BENCHMARKS=OFF" - "-DGINKGO_BUILD_EXAMPLES=OFF" - "-DGINKGO_BUILD_HWLOC=OFF" - "-DGINKGO_BUILD_HIP=ON" - "-DGINKGO_BUILD_OMP=OFF" - "-DGINKGO_BUILD_MPI=OFF" - ]; - extraBuildInputs = [ - pkgs.hip - pkgs.rocthrust - pkgs.hipblas - pkgs.hipsparse - pkgs.rocrand - ]; + cppCompiler = pkgs.llvmPackages_rocm.clang; + hipSupport = true; }; omp = pkgs.callPackage ./derivation.nix { cppCompiler = pkgs.gcc12; - extraCmakeFlags = [ - "-DGINKGO_BUILD_CUDA=OFF" - "-DGINKGO_BUILD_BENCHMARKS=OFF" - "-DGINKGO_BUILD_EXAMPLES=OFF" - "-DGINKGO_BUILD_HWLOC=OFF" - "-DGINKGO_BUILD_OMP=ON" - "-DGINKGO_BUILD_HIP=OFF" - "-DGINKGO_BUILD_MPI=OFF" - ]; - extraBuildInputs = [ - ]; + ompSupport = true; }; }; };