# Main SHS SDK libraries repo

## Introduction

This repo contains PIP, QAD and derived projects:
* cd_utils - PIP-based client/server library for read, transmit and use custom structures of coefficients
* qcd_utils - Qt bindings to CDUtils and "CD Pult" executable - full-featured CD client 
* piqt - helpers to convert PIP <-> Qt types
* piqt_utils - Gui libraries and executables to edit PIConnection configs and watch PIIntrospection
* qglview - old Qt-base OpenGL engine
* qglengine - new Qt-base OpenGL engine

## Compile
This repo can be compile with GCC/MinGW/Clang, for Qt 4/5.

If there is no Qt found, builds only PIP and cd_utils.

CMake options:
* **LIB** - if 1 then install to system directories: MinGW on Windows, /usr/local on Linux/MacOS, ${ANDROID_SYSTEM_LIBRARY_PATH} on Android. If 0 then install to ${CMAKE_INSTALL_PREFIX}. Enabled by default
* **UTILS** - build or not executable utilites, enabled by default
* **DESIGNER_PLUGINS** - build or not Qt Designer plugins, enabled by default
* **QGLVIEW** - build or not QGLView, disabled by default
* **QGLENGINE** - build or not QGLEngine, disabled by default

## Windows scripts
Build steps for i686 architecture:
1. unzip mingw.7z to C:\mingw
2. unzip qt.7z to C:\qt
3. download and install cmake from https://cmake.org/download/
4. Prepare environment
	- set prefix for mingw e.g.: for C:\mingw\7_1_x32\
		set SDK_MINGW_DIR=C:\mingw\7_1_x
	- set prefix for Qt5 e.g.: for C:\qt\qt5120_win32\
		set SDK_QT5_DIR=C:\qt\qt5120_win
	- set SDK_CMAKE_DIR=C:\cmake
5. run make_libs32.bat

Build steps for amd64 architecture:
 -- follow previos steps, but replace '32' to '64'
 
Build steps for both architectures:
	-- follow previos steps, but on '4' state run make_libs_all.bat

## Non-Windows scripts
Script "make_libs.sh" compile and install SDK for current environment, e.g.
`./make_libs.sh -j4`

## Docker
This repo provide Dockerfile, so you can exec `docker build -t libs .` in this directory
and make docker image "libs" with installed SHS SDK for:
* Debian 10
* Windows x64
* MacOS
* Android ndk 21 armeabi-v71, arm64-v8a, x86, x86_64
