https://github.com/kanocomputing/mercury
A cross-platform base layer for configuring the system
https://github.com/kanocomputing/mercury
kano-os
Last synced: 3 months ago
JSON representation
A cross-platform base layer for configuring the system
- Host: GitHub
- URL: https://github.com/kanocomputing/mercury
- Owner: KanoComputing
- Created: 2019-04-01T17:32:55.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-12-12T11:51:38.000Z (over 6 years ago)
- Last Synced: 2025-03-03T01:41:52.555Z (about 1 year ago)
- Topics: kano-os
- Language: CMake
- Homepage:
- Size: 1.17 MB
- Stars: 1
- Watchers: 14
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
README
============
Introduction
============
.. image:: https://www.codefactor.io/repository/github/kanocomputing/mercury/badge
:target: https://www.codefactor.io/repository/github/kanocomputing/mercury
:alt: CodeFactor
Mercury provides a cross-platform base layer for configuring the system.
Etymology
=========
"Why Mercury?" I hear you say. Primarily because `Mercury `_ was the Roman god of boundaries, communication and travel which aligns with this project's main goals:
* Boundaries: Project Mercury will form the boundary between hardware and what a consumer wants to do, abstracting away platform-specifics.
* Communication: Project Mercury provides a translation abstraction layer between the consumers and the base hardware, regardless of what that may be.
* Travel: Project Mercury is designed to be cross-platform from the beginning, allowing the same apps to be delivered across multiple different platforms by providing the base abstraction upon which all functionality can be leveraged.
Additionally, `Project Mercury `_ was the first United States human spaceflight program and likewise this is our first foray into colonising other planets (well, hardware).
Finally, `Mercury `_ is an element known to send people mad when they inhale too much of the fumes: hopefully not a sign of things to come with this project.
===============
Getting Started
===============
The technologies which are used in this project are:
.. code:: bash
c++11
cmake
conan
cpplint
doxygen
googletest
lcov
make
qt
sphinx
Install the tools
=================
OS X
----
.. code:: bash
pip3 install -r requirements-dev.txt
brew install cmake doxygen lcov qt
Linux
-----
.. code:: bash
pip3 install -r requirements-dev.txt
apt-get install cmake doxygen lcov qt
Building and running
====================
Build
-----
.. code:: bash
make
`CMake `_ (3.10.0 minimum to allow us to use some of the newer goodies) is used to build both the project and the tests.
If your linux system is based on Debian Stretch, you can use the `backports `_ repositories to pull the latest CMake version. Alternatively, you can point your APT sources to Debian Buster.
Test
-----
.. code:: bash
make test
Tests are written with `Google Test `_. Conan will handle installing all the dependencies here. Coverage reports are generated with ``lcov`` and a report can be found in ``coverage/index.html`` after running the tests.
make test-library will only cover the core library tests, explained above
make test-python to run the Python3 tests only. Note that these tests can also run on the target installation system. You need to have ``make`` and ``python-pytest`` tools installed.
Lint
----
.. code:: bash
make lint
C++ linting is performed by the `CppLint `_ tool. The configuration is in the ``CPPLINT.cfg`` file.
Automatic checking of the linting is performed by `CodeFactor `_ for your convenience.
Documentation
-------------
.. code:: bash
make docs
The base documentation files can be found in the ``docs/source`` directory.
C++ code is marked up with `Doxygen `_ which integrates with `Sphinx `_ using `Breathe `_.