arena allocator + incremental garbage collector
  • C++ 98.4%
  • CMake 1.6%
Find a file
Roland Conybeare 06314a84aa Add 'xo-pyunit/' from commit '4d0e708ea4'
git-subtree-dir: xo-pyunit
git-subtree-mainline: cb2ce5a5b8
git-subtree-split: 4d0e708ea4
2025-05-11 00:58:27 -05:00
.github/workflows + xo-unit 2025-05-11 00:57:37 -05:00
pkgs + xo-unit 2025-05-11 00:57:37 -05:00
xo-cmake Add 'xo-cmake/' from commit 'f510700b99' 2025-05-10 16:23:49 -05:00
xo-flatstring Add 'xo-flatstring/' from commit 'ebbe45e5e7' 2025-05-10 19:15:08 -05:00
xo-indentlog Add 'xo-indentlog/' from commit 'd43c4af0b4' 2025-05-10 17:00:33 -05:00
xo-ordinaltree Add 'xo-ordinaltree/' from commit 'e40dc2daab' 2025-05-10 18:59:48 -05:00
xo-pyreflect Add 'xo-pyreflect/' from commit '54d11b31a5' 2025-05-10 21:04:13 -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-randomgen Add 'xo-randomgen/' from commit '44a31724ec' 2025-05-10 18:54:18 -05:00
xo-ratio Add 'xo-ratio/' from commit 'd18e9afc1d' 2025-05-10 21:26:39 -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-subsys Add 'xo-subsys/' from commit '57eee82fa5' 2025-05-10 18:38:12 -05:00
xo-unit Add 'xo-unit/' from commit 'b531e382c2' 2025-05-10 21:29:43 -05:00
.gitignore + .gitignore 2025-05-10 12:17:19 -05:00
CMakeLists.txt + xo-unit 2025-05-11 00:57:37 -05:00
default.nix + xo-unit 2025-05-11 00:57:37 -05:00
README.md doc: bugfix: fix subtree example 2025-05-10 17:00:09 -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

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