Building SAIL

This page covers building SAIL from source. Prefer using package managers to install SAIL, see installation.
CMake options overview
  • BUILD_SHARED_LIBS=ON|OFF - Build shared libraries. When disabled, automatically sets SAIL_COMBINE_CODECS to ON. Default: ON.
  • SAIL_BUILD_APPS=ON|OFF - Build client applications. Default: ON.
  • SAIL_BUILD_BINDINGS=ON|OFF - Build C++ and other bindings. Default: ON.
  • SAIL_BUILD_EXAMPLES=ON|OFF - Build examples. Default: ON.
  • SAIL_COLORED_OUTPUT=ON|OFF - Enable colored console output on Windows 10+ and Unix platforms. Default: ON.
  • SAIL_COMBINE_CODECS=ON|OFF - Combine all codecs into a single library. Static builds automatically set this to ON. Default: OFF.
  • SAIL_DEV=ON|OFF - Enable developer mode with pedantic warnings and optional ASAN for examples. Default: OFF.
  • SAIL_DISABLE_CODECS="a;b;c" - Disable the codecs specified in this ';'-separated list. Supports individual codecs and codec groups by priority (e.g., highest-priority;xbm). Default: empty list.
  • SAIL_ENABLE_CODECS="a;b;c" - Force-enable the codecs specified in this ';'-separated list. Configuration fails if an enabled codec cannot find its dependencies. Supports individual codecs and codec groups by priority (e.g., highest-priority;xbm). Other codecs may be enabled or disabled based on available dependencies. When set, SAIL_ONLY_CODECS is ignored. Default: empty list.
  • SAIL_ENABLE_OPENMP=ON|OFF - Enable OpenMP support if available in the compiler. Default: ON.
  • SAIL_ONLY_CODECS="a;b;c" - Force-enable only the codecs specified in this ';'-separated list and disable all others. Configuration fails if an enabled codec cannot find its dependencies. Supports individual codecs and codec groups by priority (e.g., highest-priority;xbm). Default: empty list.
  • SAIL_OPENMP_SCHEDULE="dynamic" - OpenMP scheduling algorithm. Default: dynamic.
  • SAIL_THIRD_PARTY_CODECS_PATH=ON|OFF - Enable loading custom codecs from ';'-separated paths specified in the SAIL_THIRD_PARTY_CODECS_PATH environment variable. Default: ON.
  • SAIL_THREAD_SAFE=ON|OFF - Enable thread-safe operations by locking the internal context with a mutex. Default: ON.
  • SAIL_WINDOWS_INSTALL_PDB=ON|OFF - Install PDB debug files along with libraries (MSVC only). Default: ON.
  • SAIL_WINDOWS_STATIC_CRT=ON|OFF - Use static CRT (/MT) instead of dynamic CRT (/MD) for static builds (MSVC only). Default: ON.
  • SAIL_WINDOWS_UTF8_PATHS=ON|OFF - Convert file paths to UTF-8 on Windows. Default: ON.
Windows
Build requirements
  • Git
  • CMake 3.18 or later
  • MSVC 2019 or later
Build steps
Open Git Bash (installed with Git) and execute the following commands:
git clone --recursive https://github.com/HappySeaFox/sail.git
cd sail

# Compile third-party dependencies
cd extra
./build
cd ..

# Compile SAIL
mkdir build
cd build
cmake -A x64 -DCMAKE_INSTALL_PREFIX="C:\SAIL" ..
cmake --build . --config Release

# Install
cmake --build . --config Release --target install
Linux
Build requirements
  • Git
  • CMake 3.18 or later
  • GCC and G++ 7.5 or later
  • Standard C/C++ development files (usually installed by metapackages like build-essential)
  • Codec-specific development libraries. See .github/workflows/build-and-test.yml for the complete list
Build steps
git clone --recursive https://github.com/HappySeaFox/sail.git
cd sail

# Install the required dependencies from .github/workflows/build-and-test.yml
sudo apt install ...

# Compile SAIL
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

# Install (distro-specific)
sudo make install