Schematika interpreter
  • C++ 95.3%
  • CMake 4.7%
Find a file
Roland Conybeare afbc21d143 Add 'xo-webutil/' from commit '8e75838950'
git-subtree-dir: xo-webutil
git-subtree-mainline: 86cd0a812b
git-subtree-split: 8e75838950
2025-05-11 14:48:17 -05:00
.github/workflows + xo-pyjit + ::endgroup in github workflow 2025-05-11 14:41:21 -05:00
pkgs + xo-callback 2025-05-11 14:46:04 -05:00
xo-callback Add 'xo-callback/' from commit '4e1849c726' 2025-05-11 14:45:05 -05:00
xo-cmake
xo-expression Add 'xo-expression/' from commit '5ac3c03a0c' 2025-05-11 01:22:16 -05:00
xo-flatstring
xo-indentlog
xo-jit build: suppress redundant-move complaing from gcc 13.3 for llvm-18 2025-05-11 12:33:46 -05:00
xo-ordinaltree
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-pyreflect
xo-pyunit Add 'xo-pyunit/' from commit '4d0e708ea4' 2025-05-11 00:58:27 -05:00
xo-pyutil
xo-randomgen
xo-ratio Add 'xo-ratio/' from commit 'd18e9afc1d' 2025-05-10 21:26:39 -05:00
xo-reader Add 'xo-reader/' from commit 'c46c0f1cc4' 2025-05-11 01:40:20 -05:00
xo-refcnt
xo-reflect
xo-reflectutil
xo-subsys
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-webutil Add 'xo-webutil/' from commit '8e75838950' 2025-05-11 14:48:17 -05:00
.gitignore
CMakeLists.txt + xo-callback 2025-05-11 14:46:04 -05:00
default.nix + xo-callback 2025-05-11 14:46:04 -05:00
README.md

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