65 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ toolchain ? "",
 | 
						|
  nixpkgs ? (import <nixpkgs> {}).fetchFromGitHub {
 | 
						|
    owner  = "NixOS";
 | 
						|
    repo   = "nixpkgs";
 | 
						|
    rev    = "053ad4e0db7241ae6a02394d62750fdc5d64aa9f";
 | 
						|
    sha256 = "11l9sr8zg8j1n5p43zjkqwpj59gn8c84z1kf16icnsbnv2smzqdc";
 | 
						|
  }}:
 | 
						|
 | 
						|
with import nixpkgs {};
 | 
						|
 | 
						|
let
 | 
						|
  # For the documentation tools we use an older Nixpkgs since the
 | 
						|
  # newer versions seem to be not working great...
 | 
						|
  oldNixpkgsSrc = fetchFromGitHub {
 | 
						|
                    owner  = "NixOS";
 | 
						|
                    repo   = "nixpkgs";
 | 
						|
                    rev    = "d0d905668c010b65795b57afdf7f0360aac6245b";
 | 
						|
                    sha256 = "1kqxfmsik1s1jsmim20n5l4kq6wq8743h5h17igfxxbbwwqry88l";
 | 
						|
                  };
 | 
						|
  oldNixpkgs    = import oldNixpkgsSrc {};
 | 
						|
  docs          = import ./nix/docs.nix { nixpkgs = oldNixpkgsSrc; };
 | 
						|
  benchmarks    = import ./nix/benchmarks.nix { inherit nixpkgs; };
 | 
						|
  tc            =
 | 
						|
    if toolchain == ""        then { stdenv = stdenv; cc = stdenv.cc; } else
 | 
						|
    if toolchain == "gnu-6"   then { stdenv = gcc6Stdenv; cc = gcc6; } else
 | 
						|
    if toolchain == "gnu-7"   then { stdenv = gcc7Stdenv; cc = gcc7; } else
 | 
						|
    if toolchain == "gnu-8"   then { stdenv = gcc8Stdenv; cc = gcc8; } else
 | 
						|
    if toolchain == "gnu-9"   then { stdenv = gcc9Stdenv; cc = gcc9; } else
 | 
						|
    if toolchain == "llvm-39" then { stdenv = llvmPackages_39.libcxxStdenv; cc = llvmPackages_39.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-4"  then { stdenv = llvmPackages_4.libcxxStdenv; cc = llvmPackages_4.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-5"  then { stdenv = llvmPackages_5.libcxxStdenv; cc = llvmPackages_5.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-6"  then { stdenv = llvmPackages_6.libcxxStdenv; cc = llvmPackages_6.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-7"  then { stdenv = llvmPackages_7.libcxxStdenv; cc = llvmPackages_7.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-8"  then { stdenv = llvmPackages_8.libcxxStdenv; cc = llvmPackages_8.libcxxClang; } else
 | 
						|
    if toolchain == "llvm-9"  then { stdenv = llvmPackages_9.stdenv; cc = llvmPackages_9.clang; } else
 | 
						|
    abort "unknown toolchain";
 | 
						|
 | 
						|
in
 | 
						|
tc.stdenv.mkDerivation rec {
 | 
						|
  name = "immer-env";
 | 
						|
  buildInputs = [
 | 
						|
    tc.cc
 | 
						|
    git
 | 
						|
    cmake
 | 
						|
    pkgconfig
 | 
						|
    ninja
 | 
						|
    gdb
 | 
						|
    lldb
 | 
						|
    ccache
 | 
						|
    boost
 | 
						|
    boehmgc
 | 
						|
    benchmarks.c_rrb
 | 
						|
    benchmarks.steady
 | 
						|
    benchmarks.chunkedseq
 | 
						|
    benchmarks.immutable_cpp
 | 
						|
    benchmarks.hash_trie
 | 
						|
    oldNixpkgs.doxygen
 | 
						|
    (oldNixpkgs.python.withPackages (ps: [
 | 
						|
      ps.sphinx
 | 
						|
      docs.breathe
 | 
						|
      docs.recommonmark
 | 
						|
    ]))
 | 
						|
  ];
 | 
						|
  hardeningDisable = [ "fortify" ];
 | 
						|
}
 |