Skip to content

RemotelyChaotic/JOIPEngine

Repository files navigation

JOIPEngine

Building

Prerequisites:

  • Building requires CMake and the builds have been tested with Ninja (with MSVC 2022) and Clang.
  • Building QtAV with CMake also requires pkg-config for easy installation, see how-to-install-pkg-config-in-windows.
  • Building intiface-engine and buttplug-rs-ffi requires Rust
  • A version of Pearl is also required for building the highlight definitions. Recommended for Windows is: Strawberry Pearl
  • Get Qt 5.14+.* and either install a pre-built version or build all required modules from source ( Core Multimedia MultimediaWidgets Network PrintSupport Qml Quick QuickControls2 QuickWidgets Svg Widgets WebChannel Xml XmlPatterns). Qt 6 is not fully supported as some libraries do not support it and a lot of the API has changed.
  • Build the provided QtAV fork for your target platform with FFmpeg and OpenAL support. A CMake build is recommended. If you want to build it with qmake and have trubble building for Android, follow this guide and build all architectures separately. Don't forget, that mingw32-make.exe must be in the Path for qmake builds.
  • Build the provided protobuf fork for your target platform and install into your main project build directory ([...]/protobuf/install). Use the following build flags:
"-Dprotobuf_ABSL_PROVIDER:STRING=module"
"-Dprotobuf_BUILD_TESTS=OFF"
"-Dprotobuf_BUILD_EXAMPLES:BOOL=OFF"
"-Dprotobuf_BUILD_LIBPROTOC=ON"
"-Dprotobuf_INSTALL=ON"
"-Dprotobuf_WITH_ZLIB=OFF"
"-Dprotobuf_MSVC_STATIC_RUNTIME=OFF"
"-Dutf8_range_ENABLE_INSTALL:BOOL=ON"
  • Get a pre-built version of OpenSSL 1.1.*, build it from source, or use the provided version in 3rd-party (1.1.1g was used for testing but newer versions should work).
  • Optionally build intiface-engine and buttplug-rs-ffi or download the releases from the respective repositories

Build:

Make sure you recursively update all submodules before building, as the dependencies are kept as separate repos.

git submodule update --init --recursive

For Android, add jom.exe to your PATH, be it in the Qt-Creator Project settings, or in the console. It's typically in a path like [...]\Qt5.14.1\Tools\QtCreator\bin\ if you downloaded Qt. On startup, if you get an error that libavutil.so or similar was not found, check if /android-build/libs// contains the av libraries and if not, rerun cmake.

Next you can build the Application.

Building in QtCreator

Open src_dir/CMakeList.txt in QtCreator -> Run CMake and build

Building and installing in Console with Ninja

cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DQTDIR=C:\Qt\5.14.2\msvc2017 src_dir
cmake --build . --target install

Deploying

Install creates a directory in your build directory called deploy.

Now you can:

  • copy all license files from the sources to deploy/license
  • copy your built version of intiface-engine and buttplug-rs-ffi into the bin directory

And you are done.