https://livekit.io logo
Title
e

enough-zebra-80131

05/25/2023, 7:32 AM
Q: I'm trying to compile (in a mac) the
libwebrtc
bundled in
webrtc-sys
- I'm setting the
LK_CUSTOM_WEBRTC
flag, but it seems to require
libwebrtc
to already have been built before. By running
build_macos.sh
it downloads depot_tools and attempts to compile, but I'm getting a
fatal error: 'cxxabi.h' file not found
error. Which steps am I missing?
I guess it should be cross-compiled?
FileNotFoundError: [Errno 2] No such file or directory: 'xcodebuild'
nope, seems to expect to run on a mac
AFAICT things changed on the macos sdk since 13+
I'm afraid the solution is "build using macos < 13"
are you using a more recent macos?
b

boundless-energy-78552

05/25/2023, 3:02 PM
Hey, I’m using MacOS 13.4 so it should work, but
build_macos.sh
is not intended to work with
LK_CUSTOM_WEBRTC
. When developing it is just easier to build webrtc yourself without the script. This part is not documented, I’m going to make a PR
Oh you’re using an older version of MacOS?
e

enough-zebra-80131

05/25/2023, 3:08 PM
nope, latest version, but it doesn't build 😢
b

boundless-energy-78552

05/25/2023, 3:10 PM
You can try to remove this line, I remember having the same issue
e

enough-zebra-80131

05/25/2023, 3:10 PM
would you mind sharing some notes on how you are doing to compile
libwebrtc
in this workflow (I'm developing inside the
client-sdk-rust
)?
👍 1
uhhh will give it a try!
b

boundless-energy-78552

05/25/2023, 3:10 PM
Yes, I’ll do that inside the webrtc-sys readme
🙌 1
e

enough-zebra-80131

05/25/2023, 3:13 PM
awesome! thank you!
I'm currently doing everything on linux because I managed to get it building there
btw: is there any resource you recommend to use to learn these libwebrtc api's / architecture / inner workings?
b

boundless-energy-78552

05/25/2023, 3:16 PM
There is this doc but unfortunately, I don’t think there is a detailed documentation, I think the best way to understand things is to read the code.
👍 1
e

enough-zebra-80131

05/25/2023, 3:17 PM
awesome, thank you theo!
🙏 1
out of curiosity: for how long have you been working with this codebase? you kick butt!
😀 1
well... managed to compile libwebrtc on mac, but then it fails to link to the
wgpu_room
example
linker error I'm getting when attempting to compile `wgpu_room`:
...
  = note: Undefined symbols for architecture arm64:
            "rtc::TaskQueue::PostTask(std::__1::unique_ptr<webrtc::QueuedTask, std::__1::default_delete<webrtc::QueuedTask>>)", referenced from:
                void rtc::TaskQueue::PostTask<livekit::AudioDevice::Terminate()::$_2, (void*)0>(livekit::AudioDevice::Terminate()::$_2&&) in libwebrtc_sys-d1e5496f9c87a1b6.rlib(audio_device.o)
            "rtc::TaskQueue::TaskQueue(std::__1::unique_ptr<webrtc::TaskQueueBase, webrtc::TaskQueueDeleter>)", referenced from:
                std::__1::__unique_if<rtc::TaskQueue>::__unique_single std::__1::make_unique[abi:v15006]<rtc::TaskQueue, std::__1::unique_ptr<webrtc::TaskQueueBase, webrtc::TaskQueueDeleter>>(std::__1::unique_ptr<webrtc::TaskQueueBase, webrtc::TaskQueueDeleter>&&) in libwebrtc_sys-d1e5496f9c87a1b6.rlib(audio_device.o)
            "webrtc::CreateIceCandidate(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, int, cricket::Candidate const&)", referenced from:
                livekit::NativePeerConnectionObserver::OnIceCandidate(webrtc::IceCandidateInterface const*) in libwebrtc_sys-d1e5496f9c87a1b6.rlib(peer_connection.o)
            "webrtc::CreateIceCandidate(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, webrtc::SdpParseError*)", referenced from:
                livekit::create_ice_candidate(rust::cxxbridge1::String, int, rust::cxxbridge1::String) in libwebrtc_sys-d1e5496f9c87a1b6.rlib(jsep.o)
            "webrtc::CreateSessionDescription(webrtc::SdpType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, webrtc::SdpParseError*)", referenced from:
                livekit::create_session_description(livekit::SdpType, rust::cxxbridge1::String) in libwebrtc_sys-d1e5496f9c87a1b6.rlib(jsep.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)