circt: fix build failure on darwin platform and refactor (#348019)

This commit is contained in:
Weijia Wang
2024-11-06 01:32:35 +01:00
committed by GitHub
3 changed files with 57 additions and 28 deletions
@@ -1,17 +1,23 @@
{ lib
, stdenv
, cmake
, ninja
, circt
, llvm
, python3
}: stdenv.mkDerivation {
{
lib,
stdenv,
cmake,
ninja,
circt,
llvm,
python3,
}:
stdenv.mkDerivation {
pname = circt.pname + "-llvm";
inherit (circt) version src;
requiredSystemFeatures = [ "big-parallel" ];
nativeBuildInputs = [ cmake ninja python3 ];
nativeBuildInputs = [
cmake
ninja
python3
];
preConfigure = ''
cd llvm/llvm
@@ -30,7 +36,11 @@
"-DLLVM_INSTALL_UTILS=ON"
];
outputs = [ "out" "lib" "dev" ];
outputs = [
"out"
"lib"
"dev"
];
# Get rid of ${extra_libdir} (which ends up containing a path to circt-llvm.dev
# in circt) so that we only have to remove the one fixed rpath.
@@ -70,7 +80,7 @@
#
# Inspired by fixDarwinDylibNames.
postFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
local flags=(-delete_rpath @loader_path/../lib)
local flags
for file in "$lib"/lib/*.dylib; do
flags+=(-change @rpath/"$(basename "$file")" "$file")
done
@@ -1,15 +1,16 @@
{ stdenv
, lib
, cmake
, coreutils
, python3
, git
, fetchFromGitHub
, ninja
, lit
, z3
, gitUpdater
, callPackage
{
stdenv,
lib,
cmake,
coreutils,
python3,
git,
fetchFromGitHub,
ninja,
lit,
z3,
gitUpdater,
callPackage,
}:
let
@@ -29,7 +30,13 @@ stdenv.mkDerivation rec {
requiredSystemFeatures = [ "big-parallel" ];
nativeBuildInputs = [ cmake ninja git pythonEnv z3 ];
nativeBuildInputs = [
cmake
ninja
git
pythonEnv
z3
];
buildInputs = [ circt-llvm ];
cmakeFlags = [
@@ -65,7 +72,17 @@ stdenv.mkDerivation rec {
doCheck = true;
checkTarget = "check-circt check-circt-integration";
outputs = [ "out" "lib" "dev" ];
preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
echo moving libarc-jit-env.dylib to '$lib' before check because archilator links to the output path
mkdir -pv $lib/lib
cp -v ./lib/libarc-jit-env.dylib $lib/lib
'';
outputs = [
"out"
"lib"
"dev"
];
# Copy circt-llvm's postFixup stage so that it can make all our dylib references
# absolute as well.
@@ -89,7 +106,11 @@ stdenv.mkDerivation rec {
description = "Circuit IR compilers and tools";
homepage = "https://circt.org/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ sharzy pineapplehunter sequencer ];
maintainers = with lib.maintainers; [
sharzy
pineapplehunter
sequencer
];
platforms = lib.platforms.all;
};
}
-2
View File
@@ -446,8 +446,6 @@ with pkgs;
ciel = callPackage ../tools/package-management/ciel { };
circt = callPackage ../development/compilers/circt { };
clang-uml = callPackage ../by-name/cl/clang-uml/package.nix {
stdenv = clangStdenv;
};