xo-gc: docs build [WIP] + misc fixes + works w/ nix

This commit is contained in:
Roland Conybeare 2026-02-26 14:27:02 +11:00
commit d8d8781068
11 changed files with 117 additions and 11 deletions

View file

@ -98,7 +98,7 @@ add_subdirectory(xo-callback)
add_subdirectory(xo-printable2) # experiment w/ facet object model
add_subdirectory(xo-alloc)
add_subdirectory(xo-alloc2) # experiment w/ facet object model
add_subdirectory(xo-gc)
add_subdirectory(xo-gc) # experiment w/ facet object model
add_subdirectory(xo-object)
add_subdirectory(xo-object2) # experiment w/ facet object model
add_subdirectory(xo-procedure2) # schematika procedure abstraction + runtime context (fomo)

View file

@ -141,8 +141,9 @@ let
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-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; };
@ -491,6 +492,7 @@ in
allocutil = pkgs.xo-allocutil;
alloc = pkgs.xo-alloc;
alloc2 = pkgs.xo-alloc2;
gc = pkgs.xo-gc;
ordinaltree = pkgs.xo-ordinaltree;
flatstring = pkgs.xo-flatstring;
pyutil = pkgs.xo-pyutil;

View file

@ -20,6 +20,7 @@ Some features: kalman filters, stochastic processes, complex event processing, s
xo-flatstring/docs/index
xo-ratio/docs/index
xo-unit/docs/index
xo-gc/docs/index
xo-tokenizer/docs/index
xo-reader/docs/index
xo-jit/docs/index

61
pkgs/xo-gc.nix Normal file
View file

@ -0,0 +1,61 @@
{
# nixpkgs dependencies
lib, stdenv, cmake, catch2,
doxygen,
python3Packages,
sphinx, graphviz,
# xo dependencies
xo-alloc2,
xo-facet,
xo-randomgen,
xo-subsys,
# xo-reflectutil,
# xo-indentlog,
xo-cmake,
buildDocs ? false,
doCheck ? true,
} :
stdenv.mkDerivation (finalattrs:
{
name = "xo-gc";
src = ../xo-gc;
cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"]
++ lib.optionals buildDocs ["-DXO_ENABLE_DOCS=on"]
++ lib.optionals doCheck ["-DENABLE_TESTING=1"];
inherit buildDocs;
inherit doCheck;
postBuild = lib.optionalString buildDocs ''
cmake --build . -- docs
'';
nativeBuildInputs = [
cmake catch2
xo-cmake
xo-randomgen
] ++ lib.optionals buildDocs [
doxygen
sphinx
graphviz
python3Packages.sphinx-rtd-theme
python3Packages.breathe
python3Packages.sphinxcontrib-ditaa
python3Packages.sphinxcontrib-plantuml
python3Packages.pillow
];
propagatedBuildInputs = [
xo-alloc2
xo-facet
xo-subsys
# xo-reflectutil
# xo-indentlog
];
})

View file

@ -2,7 +2,7 @@
include(CMakeFindDependencyMacro)
#find_dependency(indentlog)
find_depnedency(xo_arena)
find_dependency(xo_arena)
find_dependency(xo_facet)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components("@PROJECT_NAME@")

View file

@ -41,6 +41,6 @@ xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets
# docs targets depend on other library/utest/exec targets above,
# --> must come after them.
#
#add_subdirectory(docs)
add_subdirectory(docs)
# end CMakeLists.txt

View file

@ -3,6 +3,7 @@
include(CMakeFindDependencyMacro)
find_dependency(xo_alloc2)
find_dependency(xo_facet)
find_dependency(subsys)
find_dependency(indentlog)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")

1
xo-gc/docs/_static/README vendored Normal file
View file

@ -0,0 +1 @@
add any static {.html, .js, ..} files for sphinx to pickup here

BIN
xo-gc/docs/_static/img/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

39
xo-gc/docs/conf.py Normal file
View file

@ -0,0 +1,39 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = 'xo gc documentation'
copyright = '2026, Roland Conybeare'
author = 'Roland Conybeare'
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
#extensions = []
extensions = [ "breathe",
"sphinx.ext.mathjax", # inline math
"sphinx.ext.autodoc", # generate info from docstrings
"sphinxcontrib.ditaa", # diagrams-through-ascii-art
"sphinxcontrib.plantuml" # text -> uml diagrams
]
# note: breathe requires doxygen xml output -> must have GENERATE_XML = YES in Doxyfile.in
# match project name in Doxyfile.in
breathe_default_project = "xodoxxml"
templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
pygments_style = 'sphinx'
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
#html_theme = 'alabaster'
html_theme = 'sphinx_rtd_theme'
html_static_path = ['_static']
html_favicon = '_static/img/favicon.ico'

View file

@ -21,4 +21,5 @@ xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 $
# note: deps here must also appear in cmake/xo_alloc2Config.cmake.in
xo_dependency(${SELF_LIB} xo_alloc2)
xo_dependency(${SELF_LIB} xo_facet)
xo_dependency(${SELF_LIB} subsys)
xo_dependency(${SELF_LIB} indentlog)