202 lines
5.9 KiB
ReStructuredText
202 lines
5.9 KiB
ReStructuredText
.. _install:
|
|
|
|
.. toctree:
|
|
:maxdepth: 2
|
|
|
|
Source
|
|
======
|
|
|
|
Source code lives on github `here`_
|
|
|
|
.. _here: https://github.com/rconybea/xo-interpreter
|
|
|
|
To clone from git:
|
|
|
|
.. code-block:: bash
|
|
|
|
git clone https://github.com/rconybea/xo-interpreter
|
|
|
|
Tested with gcc 14.2
|
|
|
|
Install
|
|
=======
|
|
|
|
One-step Install
|
|
----------------
|
|
|
|
Install xo-interpreter along with the rest of *XO* from `xo-umbrella2 source`_:
|
|
see install instructions for xo-umbrella2.
|
|
|
|
.. _xo-umbrella2 source: https://github.com/rconybea/xo-umbrella2
|
|
|
|
Essential Xo Dependencies
|
|
-------------------------
|
|
|
|
``xo-interpreter`` uses several supporting libraries from elsewhere in the *XO* project:
|
|
|
|
- `xo-reader source`_ (Schematika expression parser)
|
|
- `xo-expression source`_ (Schematika AST representation)
|
|
- `xo-tokenizer source`_ (Schematika lexer)
|
|
- `xo-object source`_ (gc-eligible runtime polymorphism)
|
|
- `xo-randomgen source`_ (fast pseudo-random number generators)
|
|
- `xo-alloc source`_ (arena allocators, garbage collector)
|
|
- `xo-unit source`_ (dimension checking library)
|
|
- `xo-ratio source`_ (exact ratio library)
|
|
- `xo-flatstring source`_ (no-allocation string library)
|
|
- `xo-callback source`_ (callback library)
|
|
- `xo-reflectutil source`_ (reflection utils for participating libs)
|
|
- `xo-reflect source`_ (reflection library)
|
|
- `xo-refcnt source`_ (reference-counting library)
|
|
- `xo-subsys source`_ (utility library)
|
|
- `xo-indentlog source`_ (structured logging, pretty-printing)
|
|
- `xo-cmake source`_ (shared cmake macros)
|
|
|
|
.. _xo-reader source: https://github.com/rconybea/xo-reader
|
|
.. _xo-expression source: https://github.com/rconybea/xo-expression
|
|
.. _xo-tokenizer source: https://github.com/rconybea/xo-tokenizer
|
|
.. _xo-object source: https://github.com/rconybea/xo-object
|
|
.. _xo-randomgen source: https://github.com/rconybea/xo-randomgen
|
|
.. _xo-alloc source: https://github.com/rconybea/xo-alloc
|
|
.. _xo-unit source: https://github.com/rconybea/xo-unit
|
|
.. _xo-ratio source: https://github.com/rconybea/xo-ratio
|
|
.. _xo-flatstring source: https://github.comr/rconybea/xo-flatstring
|
|
.. _xo-callback source: https://github.com/rconybea/xo-callback
|
|
.. _xo-reflect source: https://github.com/rconybea/xo-reflect
|
|
.. _xo-refcnt source: https://github.com/rconybea/refcnt
|
|
.. _xo-subsys source: https://github.com/rconybea/subsys
|
|
.. _xo-indentlog source: https://github.com/rconybea/indentlog
|
|
.. _xo-cmake source: https://github.com/rconybea/xo-cmake
|
|
|
|
Building from source
|
|
--------------------
|
|
|
|
Instructions for building xo-interpreter from source, along with only its essential dependencies.
|
|
|
|
Install scripts for XO libraries depend on helper scripts installed from `xo-cmake`.
|
|
|
|
Preamble:
|
|
|
|
.. code-block:: bash
|
|
|
|
mkdir -p ~/proj/xo
|
|
cd ~/proj/xo
|
|
|
|
git clone https://github.com/rconybea/xo-cmake
|
|
|
|
PREFIX=$HOME/local # or desired installation path
|
|
|
|
# will want PREFIX/bin in PATH to use xo-cmake helpers
|
|
PATH=$PREFIX/bin:$PATH
|
|
|
|
Isntall `xo-cmake`:
|
|
|
|
.. code-block:: bash
|
|
|
|
cmake -B xo-cmake/.build -S xo-cmake
|
|
cmake --install xo-cmake/.build
|
|
|
|
Now that we have xo-build in PATH, can build+install XO components in topological order:
|
|
|
|
.. code-block:: bash
|
|
|
|
xo-build --clone --configure --build --install xo-indentlog
|
|
xo-build --clone --configure --build --install xo-subsys
|
|
xo-build --clone --configure --build --install xo-refcnt
|
|
xo-build --clone --configure --build --install xo-reflect
|
|
xo-build --clone --configure --build --install xo-reflectutil
|
|
xo-build --clone --configure --build --install xo-callback
|
|
xo-build --clone --configure --build --install xo-flatstring
|
|
xo-build --clone --configure --build --install xo-ratio
|
|
xo-build --clone --configure --build --install xo-unit
|
|
xo-build --clone --configure --build --install xo-alloc
|
|
xo-build --clone --configure --build --install xo-randomgen
|
|
xo-build --clone --configure --build --install xo-object
|
|
xo-build --clone --configure --build --install xo-tokenizer
|
|
xo-build --clone --configure --build --install xo-expression
|
|
xo-build --clone --configure --build --install xo-reader
|
|
|
|
Directories under ``PREFIX`` will then contain something like:
|
|
|
|
.. code-block::
|
|
|
|
PREFIX
|
|
+= bin
|
|
| +- xo-build
|
|
│ +- xo-cmake-config
|
|
│ \- xo-cmake-lcov-harness
|
|
+─ include
|
|
| \- xo
|
|
│ +- alloc/
|
|
| +- callback/
|
|
| +- cxxutil/
|
|
| +- expression/
|
|
| | +- typeinf/
|
|
| | ..
|
|
| +- flatstring/
|
|
| +- indentlog/
|
|
| | +- machdep/
|
|
| | +- print/
|
|
| | +- timeutil/
|
|
| | ..
|
|
| +- object/
|
|
| +- randomgen/
|
|
| +- ratio/
|
|
| +- reader/
|
|
| +- refcnt/
|
|
| +- reflect/
|
|
| | +- atomic/
|
|
| | +- function/
|
|
| | +- pointer/
|
|
| | +- struct/
|
|
| | +- vector/
|
|
| | ..
|
|
| +- reflectutil/
|
|
| +- subsys/
|
|
| +- tokenizer/
|
|
| \- unit/
|
|
+- lib
|
|
| +- cmake
|
|
| | +- callback/
|
|
| | +- indentlog/
|
|
| | +- randomgen/
|
|
| | +- refcnt/
|
|
| | +- reflect/
|
|
| | +- subsys/
|
|
| | +- xo_alloc/
|
|
| | +- xo_expression/
|
|
| | +- xo_flatstring/
|
|
| | +- xo_object/
|
|
| | +- xo_ratio/
|
|
| | +- xo_reader/
|
|
| | +- xo_reflectutil/
|
|
| | +- xo_tokenizer/
|
|
| | \- xo_unit/
|
|
| +- librefcnt.so
|
|
| ..
|
|
\- share
|
|
+- cmake
|
|
| \- xo-macros
|
|
| +- code-coverage.cmake
|
|
| +- xo_cxx.cmake
|
|
| \- xo-project-macros.cmake
|
|
+- etc
|
|
| \- xo
|
|
| \- subsystem_list
|
|
+- xo-macros
|
|
+- Doxyfile.in
|
|
+- gen-ccov.in
|
|
\- xo-bootstrap-macros.cmake
|
|
|
|
CMake Support
|
|
-------------
|
|
|
|
To use built-in cmake support, when using ``xo-interpreter`` from another project:
|
|
|
|
Make sure ``PREFIX/lib/cmake`` is searched by cmake (for example include it in ``CMAKE_PREFIX_PATH``)
|
|
|
|
Add to your ``CMakeLists.txt``:
|
|
|
|
.. code-block:: cmake
|
|
|
|
FindPackage(xo_interpreter CONFIG REQUIRED)
|
|
target_link_libraries(mytarget PUBLIC xo_interpreter)
|