From ef516730203acf91aa21f0341280ac2afc07c8d3 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Tue, 23 Jul 2024 17:16:40 +0800 Subject: [PATCH] refactor: move cross compile to seperate flake attribute --- flake.lock | 8 ++++---- flake.nix | 54 +++++++++++++++++++++--------------------------------- 2 files changed, 25 insertions(+), 37 deletions(-) diff --git a/flake.lock b/flake.lock index 960d1f6..4b98046 100644 --- a/flake.lock +++ b/flake.lock @@ -128,11 +128,11 @@ ] }, "locked": { - "lastModified": 1714032877, - "narHash": "sha256-6KKe4xdHPQbGtM5icLHKxgcYyFKF47a98csTQG7vkvU=", + "lastModified": 1721457008, + "narHash": "sha256-ekpve0om5hzC1Ntd3zm1cZ9oS5pnr7a2n/tueyqFOsg=", "ref": "refs/heads/master", - "rev": "f6acae14927a6df78ce2304007369095e140da9c", - "revCount": 149, + "rev": "e7aa3319d52fa987ac2192f63aef3dcb1b057e3a", + "revCount": 151, "type": "git", "url": "https://git.xinyang.life/xin/nur.git" }, diff --git a/flake.nix b/flake.nix index 69dd4e3..6fd23a0 100644 --- a/flake.nix +++ b/flake.nix @@ -13,7 +13,7 @@ }; }; - outputs = { self, ... }@inputs: with inputs; + outputs = { self, flake-utils, nixpkgs, nixpkgs-circt162, pre-commit-hooks, nur-xin }@inputs: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { @@ -26,7 +26,8 @@ }) ]; }; - crossPkgs = import nixpkgs { + + rv32CrossConfig = import nixpkgs { localSystem = system; crossSystem = { config = "riscv32-none-elf"; @@ -53,33 +54,17 @@ }; }; - packages.nemu = pkgs.callPackage ./nemu { am-kernels = self.packages.${system}.am-kernels; }; - packages.nemu-lib = pkgs.callPackage ./nemu { am-kernels = self.packages.${system}.am-kernels; defconfig = "riscv32-lib_defconfig"; }; - packages.abstract-machine = crossPkgs.callPackage ./abstract-machine { isa = "riscv"; platform = [ "nemu" "npc" ]; }; - packages.abstract-machine-native = pkgs.callPackage ./abstract-machine { isa = "native"; }; + packages = rec { + abstract-machine = pkgs.callPackage ./abstract-machine { isa = "native"; }; + nemu = pkgs.callPackage ./nemu { }; + nemu-lib = pkgs.callPackage ./nemu { }; + am-kernels = pkgs.callPackage ./am-kernels { abstract-machine = abstract-machine; arch = "native"; }; - packages.am-kernels = crossPkgs.stdenv.mkDerivation rec { - pname = "am-kernels-cmake"; - version = "2024.02.18"; - - src = ./am-kernels; - - nativeBuildInputs = [ - pkgs.cmake - pkgs.gcc # Generate expr tests - ]; - - cmakeFlags = [ - (pkgs.lib.cmakeFeature "ARCH" "riscv-nemu") - ]; - - buildInputs = [ - # SDL2 - self.packages.${system}.abstract-machine - ]; - - cmakeBuildType = "RelWithDebInfo"; - dontStrip = true; + rv32Cross = rec { + abstract-machine = rv32CrossConfig.callPackage ./abstract-machine { isa = "riscv"; platform = [ "nemu" "npc" ]; }; + am-kernels-npc = rv32CrossConfig.callPackage ./am-kernels { inherit abstract-machine; arch = "riscv-npc"; }; + am-kernels-nemu = rv32CrossConfig.callPackage ./am-kernels { inherit abstract-machine; arch = "riscv-nemu"; }; + }; }; devShells.nemu = pkgs.mkShell { @@ -101,13 +86,14 @@ self.packages.${system}.nemu ]; NEMU_HOME = "/home/xin/repo/ysyx-workbench/nemu"; - NEMU_IMAGES_PATH = self.packages.${system}.am-kernels + "/share/am-kernels"; + NEMU_IMAGES_PATH = self.packages.${system}.rv32Cross.am-kernels-nemu + "/share/am-kernels"; }; - devShells.npc = with pkgs; mkShell.override { stdenv = ccacheStdenv; } { + devShells.npc = pkgs.mkShell.override { stdenv = pkgs.ccacheStdenv; } { inherit (self.checks.${system}.pre-commit-check) shellHook; CHISEL_FIRTOOL_PATH = "${nixpkgs-circt162.legacyPackages.${system}.circt}/bin"; - packages = [ + NPC_IMAGES_DIR="${self.packages.${system}.am-kernels-npc}/share/am-kernels"; + packages = with pkgs; [ clang-tools cmake coursier @@ -120,7 +106,7 @@ gtkwave ]; - nativeBuildInputs = [ + nativeBuildInputs = with pkgs; [ cmake sbt nvboard @@ -130,14 +116,16 @@ flex bison verilator + self.packages.${system}.am-kernels-npc ]; - buildInputs = [ + buildInputs = with pkgs; [ nvboard openssl libllvm libxml2 readline + mini-gdbstub ] ++ self.checks.${system}.pre-commit-check.enabledPackages; cmakeFlags = [