Migrate to llvm18

This commit is contained in:
Sameer Rahmani 2024-04-06 20:05:01 +01:00
parent 8f46ca7744
commit 45b2a7805b
Signed by: lxsameer
GPG Key ID: 8741FACBF412FFA5
3 changed files with 78 additions and 65 deletions

View File

@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@ -20,18 +20,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1705092417,
"narHash": "sha256-01pTqprf3NvQijvxkQjwx2c6uevB4MZKooIcf+RTYHA=",
"owner": "lxsameer",
"repo": "nixpkgs",
"rev": "e1f7865bce4d52d30dd1d61e79798ee2765cc2b0",
"type": "github"
"dirtyRev": "1681ff1c67b9e337c204178d4cd85c9327e35eff-dirty",
"dirtyShortRev": "1681ff1c67b9-dirty",
"lastModified": 1712254141,
"narHash": "sha256-r283uWBsHhcmTMIcAlGbM8c9wnc8b9AFweeNXnggbD8=",
"type": "git",
"url": "file:///home/lxsameer/src/nixpkgs"
},
"original": {
"owner": "lxsameer",
"repo": "nixpkgs",
"rev": "e1f7865bce4d52d30dd1d61e79798ee2765cc2b0",
"type": "github"
"type": "git",
"url": "file:///home/lxsameer/src/nixpkgs"
}
},
"root": {

View File

@ -17,17 +17,14 @@
description = "Serene programming language";
#inputs.nixpkgs.url = "github:NixOS/nixpkgs/bcb1a9c7e1d8568c5e58316fe3254eb8f4455439";
inputs.nixpkgs.url = "github:lxsameer/nixpkgs/e1f7865bce4d52d30dd1d61e79798ee2765cc2b0";
#inputs.nixpkgs.url = "/home/lxsameer/src/nixpkgs/";
#inputs.nixpkgs.url = "github:lxsameer/nixpkgs/e1f7865bce4d52d30dd1d61e79798ee2765cc2b0";
inputs.nixpkgs.url = "/home/lxsameer/src/nixpkgs/";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = inputs@{ self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
# Out zsh configuration directory. mkShell will pick up the .zshrc
# from this directory.
zshDir = ./scripts;
version = "1.0.0";
# Most of these overlays are do to bugs and problems
# in upstream nixpkgs. But thanks to their design
# We can fix them using these overlays and contribuete
@ -70,8 +67,8 @@
});
#=============================================================
# Since we're using lld-17, and --no-undefined-version is the
# default in lld-17. We need to explicitely turn it off for
# Since we're using lld-18, and --no-undefined-version is the
# default in lld-18. We need to explicitly turn it off for
# these problematic packages untill they fix it upstream.
libgcrypt = prev.libgcrypt.overrideAttrs (old: {
NIX_LDFLAGS = if prev.stdenv.cc.isClang
@ -89,32 +86,45 @@
else [];
});
libbsd = prev.libbsd.overrideAttrs (old: { #old.NIX_LDFLAGS ++
libbsd = prev.libbsd.overrideAttrs (old: { #
NIX_LDFLAGS = if prev.stdenv.cc.isClang
then [ "--undefined-version" ]
else [];
});
binutils = prev.binutils.overrideAttrs (old: {
NIX_LDFLAGS = [ "-Wl,--undefined-version" ]# if prev.stdenv.cc.isClang
# then
# else []
;
});
libidn2 = prev.libidn2.overrideAttrs (old: { #old.NIX_LDFLAGS ++
NIX_LDFLAGS = if prev.stdenv.cc.isClang
then [ "--undefined-version" ]
else [];
});
nghttp2 = prev.nghttp2.overrideAttrs (old: {
buildInputs = old.buildInputs ++ [ final.zlib ];
});
#==============================================================
iwyu = (prev.include-what-you-use.overrideAttrs (old:
let
version = "0.21";
version = "0.22";
in {
inherit version;
src = prev.fetchurl {
url = "${old.meta.homepage}/downloads/${old.pname}-${version}.src.tar.gz";
hash = "sha256-ajUZGf+JvafJXIlUcmAYaNs9qrlqlYs44DYokNWHYLY=";
hash = "sha256-hZB0tGHqS4MlpzQYwgfKM7XmVmsI5rWH65FkQWVppt0=";
};
cmakeFlags = [ "-DCMAKE_PREFIX_PATH=${prev.llvmPackages_17.llvm.dev}" ];
cmakeFlags = [ "-DCMAKE_PREFIX_PATH=${prev.llvmPackages_18.llvm.dev}" ];
})).override {
llvmPackages = prev.__splicedPackages.llvmPackages_17;
llvmPackages = prev.__splicedPackages.llvmPackages_18;
};
})
];
@ -123,12 +133,14 @@
utils = import ./nix/utils.nix { inherit nixpkgs; };
# Create a package set based on the build system
pkgs = utils.get_pkgs system overlays;
pkgs_set = utils.get_pkgs system overlays;
hostPkgs = pkgs_set.host;
pkgs = pkgs_set.target;
nativePkgs = import nixpkgs { inherit system overlays; };
# Create a stdenv based on LLVM 17
stdenv = pkgs.stdenvAdapters.overrideCC pkgs.stdenv pkgs.llvmPackages_17.clangUseLLVM;
# Create a stdenv based on LLVM
stdenv = pkgs.stdenvAdapters.overrideCC pkgs.stdenv pkgs.llvmPackages_18.clangUseLLVM;
gc = pkgs.callPackage ./nix/boehmgc.nix { inherit stdenv; };
@ -149,7 +161,7 @@
clang' = stdenv.cc.overrideAttrs (old: {
propagatedBuildInputs = [ stdenv.cc.bintools ] ++ [ zlib' ];
});
llvm = pkgs.llvmPackages_17.llvm.overrideAttrs (old: {
llvm = pkgs.llvmPackages_18.llvm.overrideAttrs (old: {
propagatedBuildInputs = [ zlib' ];
});
@ -167,12 +179,18 @@
old.preInstallCheck;
});
nativeBuildToolsDeps = (with hostPkgs; [
cmake
ninja
ccache
git
python3
]);
buildToolsDeps = (with pkgs; [
cmake
ninja
llvm
llvmPackages_17.mlir
llvmPackages_17.clang
llvmPackages_18.mlir
llvmPackages_18.clang
iwyu
]);
@ -183,28 +201,20 @@
zsh-syntax-highlighting
]);
buildDevToolsDeps = (with pkgs; [
ccache
git'
python3
]);
buildDeps = (with pkgs; [
gc
zlib'
llvm
llvmPackages_17.mlir
llvmPackages_17.clang
llvmPackages_18.mlir
llvmPackages_18.clang
]);
testDeps = (with pkgs; [
testDeps = (with hostPkgs; [
gtest
gmock
gbenchmark
]);
tex = nativePkgs.texlive.combine {
inherit (nativePkgs.texlive)
scheme-minimal
@ -242,12 +252,9 @@
in {
inherit pkgs;
devShells.default = (pkgs.mkShell.override { stdenv = stdenv';}) {
nativeBuildInputs = buildDevToolsDeps ++ buildToolsDeps ++ shellTools;
nativeBuildInputs = nativeBuildToolsDeps ++ buildToolsDeps ++ shellTools;
buildInputs = buildDeps ++ testDeps;
shellHook =
''
BUILDER= ZDOTDIR=${zshDir} zsh -d && exit
'';
CPP_LS = "serene-clangd";
};
# This shell is gcc based and we use it only
@ -255,13 +262,17 @@
devShells.math = nativePkgs.mkShell {
#nativeBuildInputs = mathDeps;
buildInputs = mathDeps;
shellHook =
''
BUILDER=Math ZDOTDIR=${zshDir} zsh -d && exit
'';
};
#packages.llvm = llvm;
packages.devshell = stdenv'.mkDerivation {
inherit version;
name = "devshell";
doUnpack = false;
doCheck = false;
nativeBuildInputs = nativeBuildToolsDeps ++ buildToolsDeps ++ shellTools;
buildInputs = buildDeps ++ testDeps;
} ;
}
);
}

View File

@ -16,15 +16,19 @@
{ nixpkgs }:
{
get_pkgs = system: overlays:
if system == "x86_64-linux"
then import nixpkgs {
inherit system overlays;
linker = "lld";
crossSystem = nixpkgs.lib.systems.examples.musl64 // { useLLVM = true; };
# config.replaceCrossStdenv = { buildPackages, baseStdenv }:
# buildPackages.stdenvAdapters.overrideCC baseStdenv buildPackages.llvmPackages_17.clangUseLLVM;
}
else import nixpkgs {
inherit system overlays;
{
host = import nixpkgs { inherit system; };
target =
if system == "x86_64-linux"
then import nixpkgs {
inherit system overlays;
linker = "lld";
crossSystem = nixpkgs.lib.systems.examples.musl64 // { useLLVM = true; };
# config.replaceCrossStdenv = { buildPackages, baseStdenv }:
# buildPackages.stdenvAdapters.overrideCC baseStdenv buildPackages.llvmPackages_17.clangUseLLVM;
}
else import nixpkgs {
inherit system overlays;
};
};
}