Schematika tokenizer (facet object model version)
  • C++ 96.6%
  • CMake 3.4%
Find a file
2025-06-22 16:14:30 -05:00
.github/workflows github: + jsoncpp-dev dependency 2025-05-11 15:38:44 -05:00
pkgs nix: bugfix: xo-userenv-slow patch shebangs 2025-06-12 07:46:01 -05:00
xo-callback Add 'xo-callback/' from commit '4e1849c726' 2025-05-11 14:45:05 -05:00
xo-cmake xo-cmake: doxygen+sphinx working for umbrella2 submodule build 2025-06-22 16:13:37 -05:00
xo-distribution Add 'xo-distribution/' from commit '036ca5d817' 2025-05-11 15:52:36 -05:00
xo-expression Add 'xo-expression/' from commit '5ac3c03a0c' 2025-05-11 01:22:16 -05:00
xo-flatstring Add 'xo-flatstring/' from commit 'ebbe45e5e7' 2025-05-10 19:15:08 -05:00
xo-indentlog xo-indentlog: comment nit 2025-06-22 16:14:08 -05:00
xo-jit build: suppress redundant-move complaing from gcc 13.3 for llvm-18 2025-05-11 12:33:46 -05:00
xo-kalmanfilter Add 'xo-kalmanfilter/' from commit '2ced8429c0' 2025-05-11 16:22:42 -05:00
xo-ordinaltree Add 'xo-ordinaltree/' from commit 'e40dc2daab' 2025-05-10 18:59:48 -05:00
xo-printjson Add 'xo-printjson/' from commit '6743b9ef18' 2025-05-11 14:58:48 -05:00
xo-process Add 'xo-process/' from commit '7cfc560f02' 2025-05-11 16:10:34 -05:00
xo-pydistribution Add 'xo-pydistribution/' from commit 'a142a0044c' 2025-05-11 15:57:32 -05:00
xo-pyexpression Add 'xo-pyexpression/' from commit '734ead4807' 2025-05-11 01:31:16 -05:00
xo-pyjit Add 'xo-pyjit/' from commit 'ee20e79906' 2025-05-11 14:38:02 -05:00
xo-pykalmanfilter Add 'xo-pykalmanfilter/' from commit 'a9daaa3278' 2025-05-11 16:27:01 -05:00
xo-pyprintjson Add 'xo-pyprintjson/' from commit '36797a419a' 2025-05-11 15:05:03 -05:00
xo-pyprocess Add 'xo-pyprocess/' from commit 'c4af12c625' 2025-05-11 16:19:35 -05:00
xo-pyreactor Add 'xo-pyreactor/' from commit '50b8d529a7' 2025-05-11 15:14:43 -05:00
xo-pyreflect Add 'xo-pyreflect/' from commit '54d11b31a5' 2025-05-10 21:04:13 -05:00
xo-pyrprintjson Add 'xo-pyrprintjson/' from commit '36797a419a' 2025-05-11 15:02:26 -05:00
xo-pysimulator Add 'xo-pysimulator/' from commit 'f940051411' 2025-05-11 16:06:48 -05:00
xo-pyunit Add 'xo-pyunit/' from commit '4d0e708ea4' 2025-05-11 00:58:27 -05:00
xo-pyutil Add 'xo-pyutil/' from commit 'a2cb8ae60f' 2025-05-10 19:38:21 -05:00
xo-pywebsock + xo-pywebsock 2025-05-11 15:27:53 -05:00
xo-pywebutil Add 'xo-pywebutil/' from commit '578b3d724a' 2025-05-11 14:55:44 -05:00
xo-randomgen Add 'xo-randomgen/' from commit '44a31724ec' 2025-05-10 18:54:18 -05:00
xo-ratio xo-ratio: missing build dep9 2025-06-22 16:14:30 -05:00
xo-reactor Add 'xo-reactor/' from commit 'e3a53d10e6' 2025-05-11 15:11:22 -05:00
xo-reader Add 'xo-reader/' from commit 'c46c0f1cc4' 2025-05-11 01:40:20 -05:00
xo-refcnt Add 'xo-refcnt/' from commit 'bcd86e5324' 2025-05-10 18:31:14 -05:00
xo-reflect Add 'xo-reflect/' from commit '5dce303fe1' 2025-05-10 20:21:40 -05:00
xo-reflectutil Add 'xo-reflectutil/' from commit '37ff6c2b01' 2025-05-10 20:12:01 -05:00
xo-simulator Add 'xo-simulator/' from commit '3452e68e0c' 2025-05-11 16:00:50 -05:00
xo-statistics Add 'xo-statistics/' from commit 'ae49d8896a' 2025-05-11 15:42:06 -05:00
xo-subsys Add 'xo-subsys/' from commit '57eee82fa5' 2025-05-10 18:38:12 -05:00
xo-tokenizer xo-tokenizer: tag explicit fallthrough in switch 2025-05-11 01:52:58 -05:00
xo-unit Add 'xo-unit/' from commit 'b531e382c2' 2025-05-10 21:29:43 -05:00
xo-websock Add 'xo-websock/' from commit '57bf06a68f' 2025-05-11 15:08:51 -05:00
xo-webutil Add 'xo-webutil/' from commit '8e75838950' 2025-05-11 14:48:17 -05:00
.gitignore + .gitignore 2025-05-10 12:17:19 -05:00
CMakeLists.txt + xo-pykalmanfilter 2025-05-11 16:31:00 -05:00
default.nix nix: xo-ratio xo-unit build docs 2025-06-12 07:45:00 -05:00
README.md docs: ++ README cover building docs w/ nix 2025-06-12 07:46:39 -05:00

Introduction

Local nix build for xo libraries. Intended for local development work, with source in immediate subdirectories.

Features

  • native c++
  • deterministic simulation
  • reflection
  • python bindings

Getting Started

Cmake build

If nix is available, you probably prefer the nix build. Otherwise continue reading..

The cmake build has two phases, because it needs to bootstrap generated xo-cmake-config, xo-build helpers.

$ cd xo
$ PREFIX=/path/to/say/usr/local
# phase 1
$ cmake -B .build0 -S xo-cmake -DCMAKE_INSTALL_PREFIX=${PREFIX}
$ cmake --build .build0
$ cmake --install .build0
# phase 2
$ cmake -B .build -S . -DCMAKE_INSTALL_PREFIX=${PREFIX}
$ cmake --build .build
$ cmake --install .build

Nix Build

Nix build uses toplevel default.nix, along with top-level pkgs/xo-foo.nix for each subproject foo. It doesn't interact with toplevel CMakeLists.txt.

$ nix-build -A xo-userenv

This builds all xo subprojects, assembles sandbox under ./result.

$ tree -L 1 ./result
./result
├── bin
│   ├── xo-build
│   ├── xo-cmake-config
│   └── xo-cmake-lcov-harness
└── share
    ├── cmake
    │   └── xo_macros
    │       ├── code-coverage.cmake
    │       ├── xo-project-macros.cmake
    │       └── xo_cxx.cmake
    ├── etc
    │   └── xo
    │       └── subsystem-list
    └── xo-macros
        ├── Doxyfile.in
        ├── gen-ccov.in
        └── xo-bootstrap-macros.cmake

For completeness' sake: can also use

$ nix-build -A xo-userenv-slow

Same result as $nix-build -A xo-userenv, but builds each package serially using xo-build.

To view docs from WSL

  1. find wsl IP address
$ hostname -I
  1. run nix build
$ nix-build -A xo-userenv
  1. serve docs from some available port
$ (cd result && python3 -m http.server 3000)
  1. browse to ":3000/share/doc/xo-flatstring/html" from windows

To add a new satellite repo

  1. check clone in clean state (all local changes committed or unwound)

  2. add satellite as remote

$ git remote add xo-foo git@github.com:Rconybea/xo-foo.git
$ git fetch xo-foo
  1. checkout satellite repo
$ git subtree add --prefix=xo-foo xo-foo main