mirror of
https://github.com/Feliix42/mlir.nix.git
synced 2024-11-22 10:46:29 +00:00
Add CIRCT
This commit is contained in:
parent
904defc1d0
commit
dec3d61037
1 changed files with 76 additions and 10 deletions
86
flake.nix
86
flake.nix
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
description = "Custom-Built MLIR";
|
description = "Custom-Built MLIR Tools";
|
||||||
|
|
||||||
# Nixpkgs / NixOS version to use.
|
# Nixpkgs / NixOS version to use.
|
||||||
inputs.nixpkgs.url = "nixpkgs/nixos-22.11";
|
inputs.nixpkgs.url = "nixpkgs/nixos-22.11";
|
||||||
|
@ -8,15 +8,16 @@
|
||||||
let
|
let
|
||||||
|
|
||||||
# git revision to use (for version and git pull
|
# git revision to use (for version and git pull
|
||||||
gitRevision = "llvmorg-17-init";
|
#llvmRevision = "llvmorg-17-init";
|
||||||
# gitRevision = "603c286334b07f568d39f6706c848f576914f323";
|
llvmRevision = "010a97974a158ebca0bdb58346a2b303ab8a401e";
|
||||||
|
circtRevision = "4937a94071b4a3e15c740ae445e14b47e1f8154e";
|
||||||
|
|
||||||
# to work with older version of flakes
|
# to work with older version of flakes
|
||||||
lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
|
lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
|
||||||
|
|
||||||
# Generate a user-friendly version number.
|
# Generate a user-friendly version number.
|
||||||
#version = builtins.substring 0 8 lastModifiedDate;
|
#version = builtins.substring 0 8 lastModifiedDate;
|
||||||
version = gitRevision;
|
version = circtRevision;
|
||||||
|
|
||||||
# System types to support.
|
# System types to support.
|
||||||
supportedSystems = [ "x86_64-linux" ]; #"x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
|
supportedSystems = [ "x86_64-linux" ]; #"x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
|
||||||
|
@ -40,8 +41,8 @@
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "llvm";
|
owner = "llvm";
|
||||||
repo = "llvm-project";
|
repo = "llvm-project";
|
||||||
rev = gitRevision;
|
rev = llvmRevision;
|
||||||
sha256 = "sha256-IAiG7pM+j3dGRb7WzkhWNu0aBgC2plXV0D0DpyuM9tc=";
|
sha256 = "sha256-iZBZcHYW/rJm+4KAcNZGwryKsYsEQNi1LTpS0Mnm08A=";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = "source/llvm";
|
sourceRoot = "source/llvm";
|
||||||
|
@ -61,11 +62,10 @@
|
||||||
|
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
# "-DGCC_INSTALL_PREFIX=${gcc}"
|
|
||||||
#"-DC_INCLUDE_DIRS=${stdenv.cc.libc.dev}/include"
|
|
||||||
"-GNinja"
|
"-GNinja"
|
||||||
# Debug for debug builds
|
# Debug for debug builds
|
||||||
"-DCMAKE_BUILD_TYPE=Release"
|
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||||
|
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
||||||
# from the original LLVM expr
|
# from the original LLVM expr
|
||||||
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||||
# inst will be our installation prefix
|
# inst will be our installation prefix
|
||||||
|
@ -100,18 +100,74 @@
|
||||||
# '';
|
# '';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
circt = with final; llvmPackages_14.stdenv.mkDerivation rec {
|
||||||
|
name = "circt-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "llvm";
|
||||||
|
repo = "circt";
|
||||||
|
rev = circtRevision;
|
||||||
|
sha256 = "sha256-jptvNvrTF52vh0NyLqo4Iv6Ov9qttluERZgXsnayKa8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "source/";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
python3
|
||||||
|
ninja
|
||||||
|
cmake
|
||||||
|
#ncurses
|
||||||
|
#zlib
|
||||||
|
#llvmPackages_14.llvm
|
||||||
|
llvmPackages_14.clang
|
||||||
|
llvmPackages_14.bintools
|
||||||
|
mlir
|
||||||
|
lit
|
||||||
|
];
|
||||||
|
|
||||||
|
#buildInputs = [ libxml2 ];
|
||||||
|
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-GNinja"
|
||||||
|
"-DMLIR_DIR=${mlir}/lib/cmake/mlir"
|
||||||
|
"-DLLVM_DIR=${mlir}/lib/cmake/llvm"
|
||||||
|
|
||||||
|
# Debug for debug builds
|
||||||
|
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||||
|
# from the original LLVM expr
|
||||||
|
"-DLLVM_LINK_LLVM_DYLIB=ON"
|
||||||
|
# this makes llvm only to produce code for the current platform, this saves CPU time, change it to what you need
|
||||||
|
"-DLLVM_TARGETS_TO_BUILD=X86"
|
||||||
|
# NOTE(feliix42): THIS IS ABI BREAKING!!
|
||||||
|
"-DLLVM_ENABLE_ASSERTIONS=ON"
|
||||||
|
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
||||||
|
# Using clang and lld speeds up the build, we recomment adding:
|
||||||
|
"-DCMAKE_C_COMPILER=clang"
|
||||||
|
"-DCMAKE_CXX_COMPILER=clang++"
|
||||||
|
"-DLLVM_ENABLE_LLD=ON"
|
||||||
|
"-DLLVM_EXTERNAL_LIT=${lit}/bin/lit"
|
||||||
|
];
|
||||||
|
|
||||||
|
# TODO(feliix42): Fix this, as it requires the python package `lit`
|
||||||
|
# postInstall = ''
|
||||||
|
# cp bin/llvm-lit $out/bin
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Provide some binary packages for selected system types.
|
# Provide some binary packages for selected system types.
|
||||||
packages = forAllSystems (system:
|
packages = forAllSystems (system:
|
||||||
{
|
{
|
||||||
inherit (nixpkgsFor.${system}) mlir;
|
inherit (nixpkgsFor.${system}) mlir;
|
||||||
|
inherit (nixpkgsFor.${system}) circt;
|
||||||
});
|
});
|
||||||
|
|
||||||
# The default package for 'nix build'. This makes sense if the
|
# The default package for 'nix build'. This makes sense if the
|
||||||
# flake provides only one package or there is a clear "main"
|
# flake provides only one package or there is a clear "main"
|
||||||
# package.
|
# package.
|
||||||
defaultPackage = forAllSystems (system: self.packages.${system}.mlir);
|
# defaultPackage = forAllSystems (system: self.packages.${system}.mlir self.packages.${system}.circt);
|
||||||
|
|
||||||
# A NixOS module, if applicable (e.g. if the package provides a system service).
|
# A NixOS module, if applicable (e.g. if the package provides a system service).
|
||||||
nixosModules.mlir =
|
nixosModules.mlir =
|
||||||
|
@ -124,6 +180,16 @@
|
||||||
#systemd.services = { ... };
|
#systemd.services = { ... };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixosModules.circt =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [ self.overlay ];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.circt ];
|
||||||
|
|
||||||
|
#systemd.services = { ... };
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue