mdufaud / sihd

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SIHD

Simple Input Handler Displayer

Aimed to be a simple C++ library with some python and/or LUA bindings that gets, parse and displays data.


Dependencies

C++ 17

Used by core application.

SCons 4.1.0

Manages compilation rules with python.

apt install scons

or

pip install scons

python-pip

If conan is installed from python-pip, don't forget to add to ~/.bashrc:

export PATH=$PATH:$HOME/.local/bin

To find binary from python-pip binaries folder.

VCPKG

Not needed if dependencies are directly installed on the building system.

Needed for Windows cross building to get DLLs or Emscripten building to get static libraries.

make dep
make dep mod COMMA_SEPARATED_MODULES

Will install vcpkg inside the repository

Using MSYS2

pacman -S --needed git mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gcc

Compilers

g++ 7.5.0

apt install g++

clang++ 6.0.0

apt install clang libc++-dev libc++abi-dev llvm

g++-mingw 7.3-posix

apt install g++-mingw-w64-x86-64
# configure mingw32 to posix
update-alternatives --config x86_64-w64-mingw32-g++

emscripten 3.0.0

apt install emscripten

External libraries

All dependencies are listed in app.py file, only few are needed for each modules

Get dependencies from conan.io center if not installed on your system

# to get all dependencies for every modules
make dep
# to be able to run unit tests
make dep test=1
# to get dependencies for single/multiple module.s
make dep mod COMMA_SEPARATED_MODULES
# to get windows dll dependencies
make dep platform=win

Get system external libraries list

scons pkgdep=[apt|pacman] test=[0|1] modules=COMMA_SEPARATED_MODULES

Build

To build binaries and compile shared libraries with scons

make

To compile module.s

make mod COMMA_SEPARATED_MODULES

Add to command line for:

  • static libraries: "static=1"
  • address sanatizer: "asan=1"
  • no debug symbols: "mode=release"
  • use clang compiler: "compiler=clang"
  • use mingw compiler: "compiler=mingw"
  • use emscripten compiler: "compiler=em" (automatically builds with static libraries)

Python bindings build

python-3.6.7

It is recommended to install it on your system with a packet manager: python3-dev

Add to your command line "py=1"

make py=1
# or
make mod core,py

/!\ not available with mingw windows cross compilation /!\

Lua bindings build

lua-5.3.5

It is recommended to install it on your system with a packet manager: lua5.3-dev

Add to your command line "lua=1"

make lua=1
# or
make mod core,lua

Demo

Create demo for each for the compiled module

make dep mod util demo=1
make mod util demo=1

Tests

To compile and run tests

# Run all tests
make test
# Run some modules tests
make test COMMA_SEPARATED_MODULES

List tests

# For all modules
make test ls
# For some modules
make test COMMA_SEPARATED_MODULES ls

Filter tests

make test COMMA_SEPARATED_MODULES FILTER

Distribution

To create pacman distribution PKGBUILD file

make dist_pacman
# for a single/multiple module.s
make dist_pacman mod COMMA_SEPARATED_MODULES

To create apt distribution .deb file

make dist_apt
# for a single/multiple module.s
make dist_apt mod COMMA_SEPARATED_MODULES

To create a tar.gz with current build

make dist_tar
# for a single/multiple module.s
make dist_tar mod COMMA_SEPARATED_MODULES

Installation

To install build into your system /usr/local

make install
# to change default install directory from /usr/local/lib -> pkg/usr/local/lib ...
make install INSTALL_DESTDIR=pkg
# to change default /usr/local to /usr
make install INSTALL_PREFIX=/usr

This will create into Makefile's folder a '.installed' containing every file installed

This file is used by 'uninstall' makefile rule to remove what has been installed.

make uninstall

About

License:GNU General Public License v3.0


Languages

Language:C++ 91.3%Language:Python 5.8%Language:Makefile 1.3%Language:Lua 0.6%Language:Shell 0.5%Language:C 0.2%Language:HTML 0.2%Language:JavaScript 0.1%Language:CSS 0.0%