diff --git a/CMakeLists.txt b/CMakeLists.txt index bff25696..5a52f109 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,7 +100,8 @@ add_subdirectory(xo-type) # experiment w/ facet object model add_subdirectory(xo-procedure2) # schematika procedure abstraction + runtime context (fomo) add_subdirectory(xo-numeric) # schematika poly arithmetic w/ facet object model add_subdirectory(xo-tokenizer2) # schematika tokenizer (w/ fomo) - +add_subdirectory(xo-expression2) # schematika expressions (fomo) +# add_subdirectory(xo-allocutil) # xo-alloc api add_subdirectory(xo-alloc) # arena allocator + incremental gc add_subdirectory(xo-ratio) @@ -111,7 +112,6 @@ add_subdirectory(xo-callback) add_subdirectory(xo-object) add_subdirectory(xo-ordinaltree) # -add_subdirectory(xo-expression2) # schematika expressions (fomo) add_subdirectory(xo-reader2) # schematika expression parser (fomo) add_subdirectory(xo-interpreter2) # schematika interpreter (fomo) # diff --git a/ci.nix b/ci.nix index 300e3854..a7b8b6a2 100644 --- a/ci.nix +++ b/ci.nix @@ -34,6 +34,7 @@ in xo-procedure2 xo-numeric xo-tokenizer2 + xo-expression2 xo-allocutil xo-alloc xo-ratio diff --git a/pkgs/xo-expression2.nix b/pkgs/xo-expression2.nix new file mode 100644 index 00000000..a821464d --- /dev/null +++ b/pkgs/xo-expression2.nix @@ -0,0 +1,45 @@ +{ + # nixpkgs dependencies + lib, stdenv, cmake, catch2, + + # xo dependencies + xo-gc, + xo-type, + xo-reflect, + xo-procedure2, + xo-printable2, + xo-flatstring, + xo-subsys, + xo-indentlog, + xo-cmake, + + # config arguments + doCheck ? true +} : + +stdenv.mmkDerivation (finalattrs : + { + name = "xo-expression2"; + + src = ../xo-expression2; + + cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"] + ++ lib.optionals doCheck ["-DENABLE_TESTING=1"]; + + inherit doCheck; + + nativeBuildInputs = [ + cmake catch2 + xo-cmake + ]; + propagatedBuildInputs = [ + xo-gc + xo-type + xo-reflect + xo-procedure2 + xo-printable2 + xo-flatstring + xo-subsys + xo-indentlog + ]; + }) diff --git a/shells.nix b/shells.nix index fb9a4dd8..7d563043 100644 --- a/shells.nix +++ b/shells.nix @@ -314,6 +314,9 @@ in { inherit pkgs; + # load-bearing for + # $ nix-build -A xo.foo + # xo = { cmake = pkgs.xo-cmake; subsys = pkgs.xo-subsys; @@ -337,6 +340,7 @@ in procedure2 = pkgs.xo-procedure2; numeric = pkgs.xo-numeric; tokenizer2 = pkgs.xo-tokenizer2; + expression2 = pkgs.xo-expression2; allocutil = pkgs.xo-allocutil; alloc = pkgs.xo-alloc; diff --git a/xo-cmake/etc/xo/subsystem-list b/xo-cmake/etc/xo/subsystem-list index 6568ccbc..eea49525 100644 --- a/xo-cmake/etc/xo/subsystem-list +++ b/xo-cmake/etc/xo/subsystem-list @@ -20,6 +20,7 @@ xo-type xo-procedure2 xo-numeric xo-tokenizer2 +xo-expression2 xo-allocutil xo-alloc xo-object diff --git a/xo.nix b/xo.nix index c2e832b7..454e4081 100644 --- a/xo.nix +++ b/xo.nix @@ -47,6 +47,7 @@ let xo-procedure2 = callPackage pkgs/xo-procedure2.nix { stdenv = jitStdenv; }; xo-numeric = callPackage pkgs/xo-numeric.nix { stdenv = jitStdenv; }; xo-tokenizer2 = callPackage pkgs/xo-tokenizer2.nix { stdenv = jitStdenv; buildExamples = true; }; + xo-expression2 = callPackage pkgs/xo-expression2.nix { stdenv = jitStdenv; }; xo-allocutil = callPackage pkgs/xo-allocutil.nix { stdenv = jitStdenv; }; xo-alloc = callPackage pkgs/xo-alloc.nix { stdenv = jitStdenv; buildDocs = true; }; xo-ratio = callPackage pkgs/xo-ratio.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };