diff --git a/default.nix b/default.nix index 07182293..f4897bf6 100644 --- a/default.nix +++ b/default.nix @@ -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; diff --git a/pkgs/xo-object.nix b/pkgs/xo-object.nix new file mode 100644 index 00000000..7d65efe7 --- /dev/null +++ b/pkgs/xo-object.nix @@ -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 + ]; + })