diff --git a/binutils.nix b/compilers/binutils.nix similarity index 100% rename from binutils.nix rename to compilers/binutils.nix diff --git a/fetch-llvm-clang.nix b/compilers/fetch-llvm-clang.nix similarity index 100% rename from fetch-llvm-clang.nix rename to compilers/fetch-llvm-clang.nix diff --git a/compilers/llvm-hx.nix b/compilers/llvm-hx.nix new file mode 100644 index 0000000..d6b1b85 --- /dev/null +++ b/compilers/llvm-hx.nix @@ -0,0 +1,48 @@ +{ stdenv +, git +, callPackage +, perl, groff, cmake, libxml2, python, libffi, valgrind +, ... +}: + +let + llvm-src = callPackage ./fetch-llvm-clang.nix {}; +in + stdenv.mkDerivation rec { + name = "llvm-hx"; + src = llvm-src; + + buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind; + + preBuild = '' + NIX_BUILD_CORES=4 + makeFlagsArray=(-j''$NIX_BUILD_CORES) + mkdir -p $out/ + ''; + + cmakeFlags = with stdenv; [ + "-DCMAKE_BUILD_TYPE=Release" + "-DLLVM_BUILD_LLVM_DYLIB=ON" + "-DLLVM_LINK_LLVM_DYLIB=ON" + "-DLLVM_TARGETS_TO_BUILD=X86" + "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV;OR1K" + "-DLLVM_ENABLE_ASSERTIONS=OFF" + "-DLLVM_INSTALL_UTILS=ON" + "-DLLVM_INCLUDE_TESTS=OFF" + "-DLLVM_INCLUDE_DOCS=OFF" + "-DLLVM_INCLUDE_EXAMPLES=OFF" + "-DCLANG_ENABLE_ARCMT=OFF" + "-DCLANG_ENABLE_STATIC_ANALYZER=OFF" + "-DCLANG_INCLUDE_TESTS=OFF" + "-DCLANG_INCLUDE_DOCS=OFF" + ]; + + enableParallelBuilding = true; + meta = { + description = "Collection of modular and reusable compiler and toolchain technologies"; + homepage = http://llvm.org/; + license = stdenv.lib.licenses.bsd3; + maintainers = with stdenv.lib.maintainers; [ sb0 ]; + platforms = stdenv.lib.platforms.all; + }; + } diff --git a/jtagtap.nix b/cores/jtagtap.nix similarity index 100% rename from jtagtap.nix rename to cores/jtagtap.nix diff --git a/minerva.nix b/cores/minerva.nix similarity index 100% rename from minerva.nix rename to cores/minerva.nix diff --git a/default.nix b/default.nix index c0a7d05..c6b449e 100644 --- a/default.nix +++ b/default.nix @@ -1,4 +1,4 @@ { pkgs ? import {}}: (import ./derivations.nix { inherit pkgs; }) // { - vivado = import ./vivado.nix { inherit pkgs; }; + vivado = import ./eda/vivado.nix { inherit pkgs; }; } diff --git a/derivations.nix b/derivations.nix index 18684a8..8360be4 100644 --- a/derivations.nix +++ b/derivations.nix @@ -1,14 +1,15 @@ { pkgs }: -let - llvm-src = pkgs.callPackage ./fetch-llvm-clang.nix {}; -in rec { - yosys = pkgs.callPackage ./yosys.nix {}; +rec { + yosys = pkgs.callPackage ./eda/yosys.nix {}; symbiyosys = pkgs.symbiyosys.override { inherit yosys; }; - nmigen = pkgs.callPackage ./nmigen.nix { inherit yosys; }; - jtagtap = pkgs.callPackage ./jtagtap.nix { inherit nmigen; }; - minerva = pkgs.callPackage ./minerva.nix { inherit nmigen; inherit jtagtap; }; + nmigen = pkgs.callPackage ./eda/nmigen.nix { inherit yosys; }; + + jtagtap = pkgs.callPackage ./cores/jtagtap.nix { inherit nmigen; }; + minerva = pkgs.callPackage ./cores/minerva.nix { inherit nmigen; inherit jtagtap; }; + heavycomps = pkgs.callPackage ./heavycomps.nix { inherit nmigen; }; - binutils-riscv = pkgs.callPackage ./binutils.nix { platform = "riscv32"; }; - binutils-or1k = pkgs.callPackage ./binutils.nix { platform = "or1k"; }; - llvm-hx = pkgs.callPackage ./llvm-hx.nix { inherit llvm-src; }; + + binutils-riscv = pkgs.callPackage ./compilers/binutils.nix { platform = "riscv32"; }; + binutils-or1k = pkgs.callPackage ./compilers/binutils.nix { platform = "or1k"; }; + llvm-hx = pkgs.callPackage ./compilers/llvm-hx.nix {}; } diff --git a/nmigen.nix b/eda/nmigen.nix similarity index 100% rename from nmigen.nix rename to eda/nmigen.nix diff --git a/vivado.nix b/eda/vivado.nix similarity index 100% rename from vivado.nix rename to eda/vivado.nix diff --git a/yosys.nix b/eda/yosys.nix similarity index 100% rename from yosys.nix rename to eda/yosys.nix diff --git a/yosys_726.patch b/eda/yosys_726.patch similarity index 100% rename from yosys_726.patch rename to eda/yosys_726.patch diff --git a/llvm-hx.nix b/llvm-hx.nix deleted file mode 100644 index c287f99..0000000 --- a/llvm-hx.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ stdenv -, git -, llvm-src -, perl, groff, cmake, libxml2, python, libffi, valgrind -, ... -}: - -stdenv.mkDerivation rec { - name = "llvm-hx"; - src = llvm-src; - - buildInputs = [ perl groff cmake libxml2 python libffi ] ++ stdenv.lib.optional stdenv.isLinux valgrind; - - preBuild = '' - NIX_BUILD_CORES=4 - makeFlagsArray=(-j''$NIX_BUILD_CORES) - mkdir -p $out/ - ''; - - cmakeFlags = with stdenv; [ - "-DCMAKE_BUILD_TYPE=Release" - "-DLLVM_BUILD_LLVM_DYLIB=ON" - "-DLLVM_LINK_LLVM_DYLIB=ON" - "-DLLVM_TARGETS_TO_BUILD=X86" - "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV;OR1K" - "-DLLVM_ENABLE_ASSERTIONS=OFF" - "-DLLVM_INSTALL_UTILS=ON" - "-DLLVM_INCLUDE_TESTS=OFF" - "-DLLVM_INCLUDE_DOCS=OFF" - "-DLLVM_INCLUDE_EXAMPLES=OFF" - "-DCLANG_ENABLE_ARCMT=OFF" - "-DCLANG_ENABLE_STATIC_ANALYZER=OFF" - "-DCLANG_INCLUDE_TESTS=OFF" - "-DCLANG_INCLUDE_DOCS=OFF" - ]; - - enableParallelBuilding = true; - meta = { - description = "Collection of modular and reusable compiler and toolchain technologies"; - homepage = http://llvm.org/; - license = stdenv.lib.licenses.bsd3; - maintainers = with stdenv.lib.maintainers; [ sb0 ]; - platforms = stdenv.lib.platforms.all; - }; -}