libwebrtc
libwebrtc copied to clipboard
Compilation with Conan on Ubuntu 20.04
Hello everyone, I'm currently trying to build the library using the provided conanfile.py and I am encountering several compilation errors.
I first wanted to build the project on Ubuntu 22.04 but it raises an error on the supported distros when running the install-sysroot.py --arch=i386
ERROR: The only supported distros are
Ubuntu 14.04 LTS (trusty with EoL April 2022)
Ubuntu 16.04 LTS (xenial with EoL April 2024)
Ubuntu 18.04 LTS (bionic with EoL April 2028)
Ubuntu 20.04 LTS (focal with Eol April 2030)
Ubuntu 20.10 (groovy)
Debian 10 (buster) or later
I defaulted back to ubuntu 20.04 with a clean environment, I execute conan create .
on the release branch m114_release
as per the readme instructions I encounter the following errors:
ninja: Entering directory `out'
[153/5245] CXX obj/api/rtp_sender_interface/rtp_sender_interface.o
FAILED: obj/api/rtp_sender_interface/rtp_sender_interface.o
../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/api/rtp_sender_interface/rtp_sender_interface.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DCR_CLANG_REVISION=\"llvmorg-17-init-8029-g27f27d15-3\" -DCR_SYSROOT_KEY=20230329T085712Z-1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_ENABLE_PROTOBUF=1 -DWEBRTC_STRICT_FIELD_TRIALS=0 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DRTC_ENABLE_VP9 -DRTC_DAV1D_IN_INTERNAL_DECODER_FACTORY -DWEBRTC_HAVE_SCTP -DWEBRTC_USE_H264 -DWEBRTC_LIBRARY_IMPL -DWEBRTC_ENABLE_AVX2 -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_POSIX -DWEBRTC_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DLIBYUV_DISABLE_NEON -I.. -Igen -I../third_party/abseil-cpp -I../third_party/libyuv/include -Wall -Werror -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -Wno-bitfield-constant-conversion -Wno-deprecated-this-capture -Wshadow -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -m64 -msse3 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wexit-time-destructors -Wglobal-constructors -Wno-shadow -Wctad-maybe-unsupported -Wc++11-narrowing -Wundef -Wunused-lambda-capture -std=c++20 -Wno-trigraphs -gsimple-template-names -fno-exceptions -fno-rtti --sysroot=../build/linux/debian_bullseye_amd64-sysroot -fvisibility-inlines-hidden -Wnon-virtual-dtor -Woverloaded-virtual -c ../api/rtp_sender_interface.cc -o obj/api/rtp_sender_interface/rtp_sender_interface.o
In file included from ../api/rtp_sender_interface.cc:11:
In file included from ../api/rtp_sender_interface.h:25:
In file included from ../api/frame_transformer_interface.h:18:
In file included from ../api/video/encoded_frame.h:19:
In file included from ../modules/video_coding/encoded_frame.h:18:
../modules/video_coding/include/video_codec_interface.h:54:20: error: 'is_pod<webrtc::CodecSpecificInfoVP8>' is deprecated: use is_standard_layout && is_trivial instead [-Werror,-Wdeprecated-declarations]
static_assert(std::is_pod<CodecSpecificInfoVP8>::value, "");
(logs shortened as they are several pages of the same error)
My machine's profile for added info:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=9
os=Linux
os_build=Linux
Specifying a C++17 compiler with Conan yields the same result via conan create . -s compiler.cppstd=gnu17
:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=gnu17
compiler.libcxx=libstdc++11
compiler.version=9
os=Linux
os_build=Linux
After some digging, it seems C++20 has deprecated std::is_pod
in favour of std::is_standard_layout
and std::is_trivial
. Is there any configuration I might be missing perhaps in the .gclient
file ?
Thanks in advance !