Restructured option passing

main
Claudius Holeksa 2023-04-19 11:57:27 +02:00
parent 6b60e8fb25
commit 17006132fb
3 changed files with 49 additions and 73 deletions

View File

@ -1,16 +1,3 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import <nixpkgs> {} }:
pkgs.callPackage ./derivation.nix { 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"
];
}

View File

@ -5,13 +5,17 @@
, ninja , ninja
, gtest , gtest
, mold , mold
, clang_14 , clang
, cppCompiler ? clang_14 , cppCompiler ? clang
, hwloc , hwloc
, gflags , gflags
, rapidjson , rapidjson
, extraBuildInputs ? []
, extraCmakeFlags ? [] ## optional backends
, hipSupport ? false, hip, rocthrust
, cudaSupport ? false, cudatoolkit
, ompSupport ? false
, mpiSupport ? false
}: }:
let let
@ -24,10 +28,12 @@ let
rev = "234594c92b58e2384dfb43c2d08e7f43e2b58e7a"; rev = "234594c92b58e2384dfb43c2d08e7f43e2b58e7a";
sha256 = "eKQfuXnTMGgEzuksXzZE4QR5ILfVbw+dK9IsRdmalQc="; sha256 = "eKQfuXnTMGgEzuksXzZE4QR5ILfVbw+dK9IsRdmalQc=";
}; };
extra_build_inputs = extraBuildInputs;
base_cmake_flags = [ 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 = [ native_build_inputs = [
cmake cmake
ninja ninja
@ -38,7 +44,9 @@ let
build_inputs = [ build_inputs = [
gflags gflags
rapidjson rapidjson
]; ]
++ lib.optional cudaSupport cudatoolkit
++ lib.optional hipSupport [ hip, rocthrust ];
in stdenvNoCC.mkDerivation { in stdenvNoCC.mkDerivation {
pname = "${basename}"; pname = "${basename}";
version = version; version = version;
@ -47,12 +55,38 @@ in stdenvNoCC.mkDerivation {
nativeBuildInputs = native_build_inputs; 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" ]; outputs = [ "out" "dev" ];
doCheck = false;
patches = [ patches = [
./ver_1_5_cmake.patch ./ver_1_5_cmake.patch
]; ];

View File

@ -10,62 +10,17 @@ in
ginkgo-project = { ginkgo-project = {
ginkgo = { ginkgo = {
reference = pkgs.callPackage ./derivation.nix { 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 { cuda = pkgs.callPackage ./derivation.nix {
extraCmakeFlags = [ cudaSupport = true;
"-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
];
}; };
hip = pkgs.callPackage ./derivation.nix { hip = pkgs.callPackage ./derivation.nix {
cppCompiler = pkgs.clang; cppCompiler = pkgs.llvmPackages_rocm.clang;
extraCmakeFlags = [ hipSupport = true;
"-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
];
}; };
omp = pkgs.callPackage ./derivation.nix { omp = pkgs.callPackage ./derivation.nix {
cppCompiler = pkgs.gcc12; cppCompiler = pkgs.gcc12;
extraCmakeFlags = [ ompSupport = true;
"-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 = [
];
}; };
}; };
}; };