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.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 {}

View File

@ -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
];

View File

@ -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;
};
};
};