gisogrimm / ov-client

Clients (headless and GUI) to share and receive spatial realtime audio on Linux and MacOS using JACK, zita-njbridge and TASCAR
GNU General Public License v3.0
24 stars 7 forks source link

Compiling Errors on MacOS #34

Closed RealNobser closed 2 years ago

RealNobser commented 3 years ago

I tried to compile the most recent version of the OV-Client on MacOS (Catalina, 10.15.7) regarding the corresponding installation instructions. Installations of all preconditions worked fine.

Unfortunately I'm facing a compiler error when starting the make process in ov-client:

cd ov-client
make
grep: libov/Makefile: No such file or directory
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
git submodule init && git submodule update
fatal: not a git repository (or any of the parent directories): .git
make: *** [libov/Makefile] Error 128

The libov folder is empty, indeed. Any advice?

gisogrimm commented 3 years ago

you probably tried to install from a zip download (or similar), not from a cloned repository. Currently the compilation requires the git version history and toolchain for compilation (installation of sub-modules, determination of version number). Solution: Download source code with

git clone https://github.com/gisogrimm/ov-client.git
cd ov-client
make
RealNobser commented 3 years ago

Ok, that's it. Now it starts the build! Thanks a lot.

But now I'm facing linker errors.

ld: library not found for -lcpprest

Can be fixed by adding

brew install cpprestsdk

to the preconditions. After that I'm hitting

ld: library not found for -lcrypto

Which cryptographic library is used here, respectively which brew packet do I have to add?

gisogrimm commented 3 years ago

Please try building it with ./build_osx.sh This should set some paths for cpprest and nlohmann/json libaries

RealNobser commented 3 years ago

OK, again, one step forward. But I guess we are getting some deeper problems now. Something is not compatible with the boost library.

First I get


In file included from src/receivermod_itu51.cc:1:
In file included from /usr/local/include/boost/geometry.hpp:17:
/usr/local/include/boost/geometry/geometry.hpp:28:1: warning: CAUTION: Define BOOST_GEOMETRY_DISABLE_DEPRECATED_03_WARNING to suppress this message.
      [-W#pragma-messages]
BOOST_PRAGMA_MESSAGE("CAUTION: Define BOOST_GEOMETRY_DISABLE_DEPRECATED_03_WARNING to suppress this message.")
^

Which leads to a bunch of errors afterwards:

/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/type_traits:530:33: note: 'conditional' declared here
    struct _LIBCPP_TEMPLATE_VIS conditional {typedef _If type;};
                                ^
In file included from src/receivermod_itu51.cc:1:
In file included from /usr/local/include/boost/geometry.hpp:17:
In file included from /usr/local/include/boost/geometry/geometry.hpp:34:
In file included from /usr/local/include/boost/geometry/core/closure.hpp:24:
/usr/local/include/boost/geometry/core/ring_type.hpp:111:18: error: no template named 'conditional_t' in namespace 'std'; did you mean 'conditional'?
            std::conditional_t
            ~~~~~^~~~~~~~~~~~~
                 conditional

and ends in

/usr/local/include/boost/geometry/core/coordinate_dimension.hpp:101:23: error: constexpr function's return type 'void' is not a literal type
constexpr inline void assert_dimension()
                      ^
/usr/local/include/boost/geometry/core/coordinate_dimension.hpp:111:23: error: constexpr function's return type 'void' is not a literal type
constexpr inline void assert_dimension_less_equal()
                      ^
/usr/local/include/boost/geometry/core/coordinate_dimension.hpp:117:23: error: constexpr function's return type 'void' is not a literal type
constexpr inline void assert_dimension_greater_equal()
                      ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
make[1]: *** [build/ovclienttascarreceiver_itu51.dylib] Error 1
make: *** [tscplug] Error 2

Maybe this helps:


c++ -v
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

BTW: Thanks for the great support!

gisogrimm commented 3 years ago

The MacOS build is still experimental, please switch to the development branch with

git checkout development
git pull
git submodule update

(the problem should be fixed there by deactivating the ITU 5.1 output plugin which is broken on MacOS, but that is not needed for headphone listening anyway)

delude88 commented 3 years ago

I usually refer to the github actions file for building on macos: https://github.com/gisogrimm/ov-client/blob/703843a25f5d7e44b29835a7656ac16358d40dfa/.github/workflows/macos.yml#L16

But I updated the build_osx.sh script these days to compile even on an Apple Silicon M1.

But the boost compatibility issue is new to me -.-

ive used the boost lib provided by brew and it worked for me

RealNobser commented 3 years ago

It is a "virgin device", I've never worked with brew on that macbook, so I did it all step by step as written in the installation documentation.

OK, but, the good news, after installing two additional packages:

brew install nlohmann-json cmake

I finally got an executable file I can play around with, now! (using the development branch as told by Giso).

So if you want me to do some further tests or test new releases, feel free to contact me! I'll install the ovbox in parallel.

gisogrimm commented 3 years ago

On MacOS you will probably need to start jack manually before starting ov-client, and in the device settings dialog of the web frontend (currently box.orlandoviols.com) switch your device to use a manually started jack server.

RealNobser commented 3 years ago

I was finally able to jam in one of your rooms. Great concept! Keep up the cool work!

RealNobser commented 3 years ago

Just to make the brew list complete: "node" package also is needed for the local mixer. But now anything works!

gisogrimm commented 3 years ago

Thank you, I updated the installation instructions. In the github action we don't need node, because it is not needed for compilation, only at run-time.

gisogrimm commented 2 years ago

Latest github actions document how to compile with make or cmake on MacOS