Commit Graph
29 Commits
Author SHA1 Message Date
username223 31f92df4b1 Change Linux build docs
libpulse-dev does not exist on Manjaro.
2020-04-15 20:00:11 +02:00
username223 a1cae11256 Update docs for building on Ubuntu 2020-04-13 12:54:30 +02:00
Vasily bb30a7c041 Add framework for implementing Linux AudioManager
Source outputs must all be moved to new default source.
Reference topic
https://askubuntu.com/a/72076

* Adds microphone controls on Linux via PulseAudio (PA) for several
points in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/43.

It can not be overstated how unsuited the public AudioManager API is for
using the PA API.

It can also not be overstated how undocumented and horrible the PA API
is. The PA way of doing audio is very unlike the Windows way of doing
audio, which the AudioManager is heavily influenced by.

Since I don't have a Linux machine I have not been able to personally
test this. https://github.com/feilen/ has graciously helped with
testing.

PulseAudio is very undocumented and not very widely used for what we
need outside of official utilities. As such there's most likely a better
way of doing things than I've done.
Additional information can be found at
https://github.com/username223/pulseaudio-device-changing.

The "complex" PA API is asynchronous. Since our current AudioManager is
running synchronously and would not work asynchronously (functions are
expected to return valid data on function return) it is necessary to
massage the PA API until it runs synchronously.

This is done with a general workflow of

1. Register a callback function (`pa_context_get_source_info_list()`,
        for example).
2. Run the PA loop through `customPulseLoop()`. This will trigger
any registered callbacks. Sometimes a `void*` is passed through the
callback that can be used for custom data. `successCallback()` uses
this to set the success variable.
3. Run the callback function and do required work.
4. Return to original function, do work or return values.

It is not possible to run a `customPulseLoop()` inside of an already
running loop (inside a callback), as this will lead to a PA assert
error on runtime.
2020-04-08 22:44:12 +02:00
Vasily 016e5ebc4a Add switch for enabling debug symbols and logs
Enabling the switch on release builds will optimize the binaries as
normal, but will still include debug symbols. This is advantageous for
bugs that do not show up in debug builds without optimizations.
2020-01-15 14:01:47 +01:00
Vasily 5498424889 Add libudev0-shim to Manjaro TL;DR
OVRAS will runtime error without libudev.so.0, this package provides
that file.
2020-01-15 14:01:47 +01:00
Vasily ac4b01273e Add basic PKGBUILD for building on Arch/Manjaro
PKGBUILD format is described on the Arch wiki
https://wiki.archlinux.org/index.php/Creating_packages

Arch User Repository is described here
https://wiki.archlinux.org/index.php/Arch_User_Repository

The AUR package can be found here
https://aur.archlinux.org/packages/ovras/
2020-01-15 14:01:47 +01:00
Vasily bda3cc0aa2 Update docs for building for Manjaro 2020-01-07 23:31:48 +01:00
Vasily 70d5675119 Update Linux build docs with required SteamVR libraries
https://github.com/ValveSoftware/openvr/issues/549#issuecomment-570911998

Program would not run without `libSDL2-2.0.so.0` and `libvulkan.so.1`
adding the below packages solved the issue on both 1804 and 1910.
2020-01-07 23:31:48 +01:00
Vasily a21c42ef3d Update Linux build docs for 1604 and 1804 2020-01-07 23:31:48 +01:00
Vasily f315b8c182 Add qtchooser to Ubuntu 1904 TLDR 2020-01-07 23:31:48 +01:00
Vasily 7340a7468e Update TOC in building for linux 2020-01-07 23:31:48 +01:00
Vasily 01972546af Update Linux build docs with Git 2020-01-07 23:31:48 +01:00
Vasily 6cdb461af3 Update Qt version in Linux build docs to 5.12.6 2020-01-07 23:31:48 +01:00
Vasily 2a935895e9 Update Linux build docs for Arch/Ubuntu, add logging calls to Qmake
The page was not made with Arch in mind.

The currently required were tested on Manjaro, more packages may be
explicitly required due to the bare-bones nature of Arch.

Adds simple logging calls makes debugging easier.

The initial build script was basically ported over directly from
Windows. It was written because I at the time didn't understand
compiling on Linux, and the existing standards, very well.

Moving as many build components into a program specifically made for
building C++ makes everything much easier.

The old build script is still used on CI where control flow can only be
changed using environment variables.

`bear` and `clang-format` are only used on the CI, there's no reason to
include them here.
2019-08-23 15:12:58 +02:00
Vasily 8d5a9656db Remove unnecessary line from building on linux docs
Linux builds have an rpath in the executable directory, meaning this is
no longer necessary.
2019-08-07 12:53:20 +02:00
Vasily 730e633d07 Add naive make install for Linux
This enables a `sudo make install` that copies the build directory to
the PREFIX directory (/opt/OpenVR-AdvancedSettings/AdvancedSettings by
default).

The entire directory is being copied because Qt is incredibly weird
about how the INSTALLS variable works. From testing it appears that only
files that exist before the build process has started (even the
file_copy process) will be eligible for installation.

If the /OpenVR-AdvancedSettings/ directory is excluded, Qt will attempt
to remove the /opt/ folder on `make uninstall`, this is obviously not
desirable.
2019-08-07 12:53:20 +02:00
Vasily 329b4e7331 Add SVG support to AppImage, move files instead of copying 2019-07-04 16:44:31 +02:00
Vasily 201cb40359 Add variable for clang-tidy name when building on Linux
Travis has the correct clang-tidy version of 7, while CircleCI needs
clang-tidy-7.
2019-06-24 19:21:14 +02:00
Vasily e8af73db28 Make CircleCI have feature parity with TravisCI and update docs
Unnecessary line from Bionic 18.04 was removed.

A proper version guard was included for clang. Xenial currently ships
3.8.
2019-06-24 19:21:14 +02:00
Vasily 8e34e9edca Update documentation for DBUS on Linux 2019-06-05 19:57:44 +02:00
Vasily bf5ccd69ca Update Linux build docs for Ubuntu 19.04 2019-04-22 09:56:50 +02:00
Vasily f6c2bab116 Add Linux build docs describing qtchooser for official installer
The official installer does not add itself to qtchooser.
2019-04-22 09:56:50 +02:00
Vasily 4ec1fbf201 Add noX11 flag to Linux compilations
This allows users that are not using X11 to still compile the
application.
2019-04-22 09:56:50 +02:00
Vasily e83363052a Add QT_SELECT to TL;DR: versions 2019-04-17 20:51:34 +02:00
Vasily 5fad6ca4d1 Add table of contents and reduce indentation of headers
The #### headers do not look very distinct in Github markup, reducing
the header indentation will make them stand out more.
2019-04-17 20:51:34 +02:00
Vasily 1cbfd7173b Update documentation for packages required on Linux 2019-04-17 20:51:34 +02:00
Vasily 24196e9940 Update Linux building docs 2019-03-19 16:10:35 +01:00
Goofybud16 70d6b45ea6 Specify the path that QT will search in (#113) 2019-03-16 14:56:50 -05:00
Vasily 1ea554ccb4 Update docs on building on Linux 2019-02-28 21:16:53 +01:00