nix-build: + xo-object + use clang 18 [WIP]

This commit is contained in:
Roland Conybeare 2026-02-27 11:36:20 +11:00
commit 1322a97a8b
2 changed files with 84 additions and 26 deletions

View file

@ -84,13 +84,19 @@ let
# };
# Problem: builds *everything* with llvm18 toolchain, exposes too many compiler nits
llvm-overlay = self: super: {
llvm-overlay = self: super:
# use 'super' when you want to override the terms of a package.
# use 'self' when pointing to an existing package
#
llvmPackages = super.llvmPackages_18;
};
let
llvmPackages = super.llvmPackages_18;
in let
clangStdenv = super.overrideCC super.stdenv super.llvmPackages_18.clang;
in let
jitStdenv = if super.stdenv.isDarwin then clangStdenv else super.stdenv;
in
{ inherit llvmPackages clangStdenv jitStdenv; };
# tests excruciatingly slow
mailutils-overlay = self: super: {
@ -133,30 +139,31 @@ let
in
{
xo-cmake = self.callPackage pkgs/xo-cmake.nix {};
xo-indentlog = self.callPackage pkgs/xo-indentlog.nix { buildDocs = true; buildExamples = true; };
xo-subsys = self.callPackage pkgs/xo-subsys.nix {};
xo-randomgen = self.callPackage pkgs/xo-randomgen.nix { buildExamples = true; };
xo-reflectutil = self.callPackage pkgs/xo-reflectutil.nix {};
xo-arena = self.callPackage pkgs/xo-arena.nix { buildDocs = true; };
xo-facet = self.callPackage pkgs/xo-facet.nix {};
xo-allocutil = self.callPackage pkgs/xo-allocutil.nix {};
xo-alloc = self.callPackage pkgs/xo-alloc.nix { buildDocs = true; };
xo-alloc2 = self.callPackage pkgs/xo-alloc2.nix { buildDocs = true; };
xo-gc = self.callPackage pkgs/xo-gc.nix { buildDocs = true; };
xo-refcnt = self.callPackage pkgs/xo-refcnt.nix {};
xo-ordinaltree = self.callPackage pkgs/xo-ordinaltree.nix {};
xo-flatstring = self.callPackage pkgs/xo-flatstring.nix { buildDocs = true; buildExamples = true; };
xo-pyutil = self.callPackage pkgs/xo-pyutil.nix {};
xo-reflect = self.callPackage pkgs/xo-reflect.nix {};
xo-pyreflect = self.callPackage pkgs/xo-pyreflect.nix {};
xo-ratio = self.callPackage pkgs/xo-ratio.nix { buildDocs = true; buildExamples = true; };
xo-unit = self.callPackage pkgs/xo-unit.nix { buildDocs = true; buildExamples = true; };
xo-pyunit = self.callPackage pkgs/xo-pyunit.nix {};
xo-cmake = self.callPackage pkgs/xo-cmake.nix { stdenv = jitStdenv; };
xo-indentlog = self.callPackage pkgs/xo-indentlog.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };
xo-subsys = self.callPackage pkgs/xo-subsys.nix { stdenv = jitStdenv; };
xo-randomgen = self.callPackage pkgs/xo-randomgen.nix { stdenv = jitStdenv; buildExamples = true; };
xo-reflectutil = self.callPackage pkgs/xo-reflectutil.nix { stdenv = jitStdenv; };
xo-flatstring = self.callPackage pkgs/xo-flatstring.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };
xo-arena = self.callPackage pkgs/xo-arena.nix { stdenv = jitStdenv; buildDocs = true; };
xo-facet = self.callPackage pkgs/xo-facet.nix { stdenv = jitStdenv; };
xo-allocutil = self.callPackage pkgs/xo-allocutil.nix { stdenv = jitStdenv; };
xo-alloc = self.callPackage pkgs/xo-alloc.nix { stdenv = jitStdenv; buildDocs = true; };
xo-alloc2 = self.callPackage pkgs/xo-alloc2.nix { stdenv = jitStdenv; buildDocs = true; };
xo-gc = self.callPackage pkgs/xo-gc.nix { stdenv = jitStdenv; buildDocs = true; };
xo-object = self.callPackage pkgs/xo-object.nix { stdenv = jitStdenv; };
xo-refcnt = self.callPackage pkgs/xo-refcnt.nix { stdenv = jitStdenv; };
xo-ordinaltree = self.callPackage pkgs/xo-ordinaltree.nix { stdenv = jitStdenv; };
xo-pyutil = self.callPackage pkgs/xo-pyutil.nix { stdenv = jitStdenv; };
xo-reflect = self.callPackage pkgs/xo-reflect.nix { stdenv = jitStdenv; };
xo-pyreflect = self.callPackage pkgs/xo-pyreflect.nix { stdenv = jitStdenv; };
xo-ratio = self.callPackage pkgs/xo-ratio.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };
xo-unit = self.callPackage pkgs/xo-unit.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };
xo-pyunit = self.callPackage pkgs/xo-pyunit.nix { stdenv = jitStdenv; };
#
xo-callback = self.callPackage pkgs/xo-callback.nix {};
xo-printable2 = self.callPackage pkgs/xo-printable2.nix {};
xo-webutil = self.callPackage pkgs/xo-webutil.nix {};
xo-callback = self.callPackage pkgs/xo-callback.nix { stdenv = jitStdenv; };
xo-printable2 = self.callPackage pkgs/xo-printable2.nix { stdenv = jitStdenv; };
xo-webutil = self.callPackage pkgs/xo-webutil.nix { stdenv = jitStdenv; };
xo-pywebutil = self.callPackage pkgs/xo-pywebutil.nix {};
xo-printjson = self.callPackage pkgs/xo-printjson.nix {};
xo-pyprintjson = self.callPackage pkgs/xo-pyprintjson.nix {};
@ -493,6 +500,7 @@ in
alloc = pkgs.xo-alloc;
alloc2 = pkgs.xo-alloc2;
gc = pkgs.xo-gc;
object = pkgs.xo-object;
ordinaltree = pkgs.xo-ordinaltree;
flatstring = pkgs.xo-flatstring;
pyutil = pkgs.xo-pyutil;
@ -741,6 +749,7 @@ in
# 1 - get this to work as standalone copy of shell4-assembly
# 2 - merge to look like shell4-wsl / shell4-nvidia
#
#shell4-osx = pkgs.mkShell.override { stdenv = pkgs.jitStdenv; } { .. } # very high attack surface area
shell4-osx = pkgs.mkShell {
buildInputs = docutils ++ xodeps ++ devutils ++ ideutils ++ x11utils ++ gldeps ++ vkdeps ++ imguideps;

49
pkgs/xo-object.nix Normal file
View file

@ -0,0 +1,49 @@
{
# nixpkgs dependencies
lib, stdenv, cmake, catch2,
# xo dependencies
# xo-reflect,
# xo-webutil,
xo-callback,
xo-unit,
xo-refcnt,
xo-reflectutil,
xo-alloc,
xo-randomgen,
xo-cmake,
# xo-printjson,
# xo-ordinaltree,
xo-indentlog,
doCheck ? true,
} :
stdenv.mkDerivation (finalattrs:
{
name = "xo-object";
src = ../xo-object;
cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"]
++ lib.optionals doCheck ["-DENABLE_TESTING=1"];
inherit doCheck;
nativeBuildInputs = [
cmake catch2
xo-randomgen
xo-cmake
];
propagatedBuildInputs = [
xo-callback
xo-unit
xo-refcnt
# xo-reflect
# xo-webutil
# xo-printjson
# xo-ordinaltree
xo-alloc
xo-reflectutil
xo-indentlog
];
})