Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated WebRTC library for Linux to version 5387. #1714

Merged
merged 35 commits into from
Nov 22, 2022
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4704278
Updated Linux WebRTC library to version 5387,
namark Nov 4, 2022
fb97f26
Fixed an undefined reference in octree library.
namark Nov 4, 2022
bcbeaff
Fixed directory structure of the WebRTC package for Linux.
namark Nov 4, 2022
91efd79
GHA build config for Ubuntu 20.04.
namark Nov 7, 2022
1cf52bc
Fixed dependency package version for Ubuntu 20.04 GHA build.
namark Nov 7, 2022
3164ade
Fixed Ubuntu 20.04 GHA build malformed apt install command.
namark Nov 7, 2022
eb76dbe
Added a server deb package steps to the Ubuntu 20.04 GHA build.
namark Nov 7, 2022
c198c64
Fixing server deb package build in GHA setup.
namark Nov 7, 2022
b26cdec
Building oven and ICE server for Ubuntu 20.04 deb package in GHA.
namark Nov 7, 2022
a23c7cd
Enabled tools in GHA full builds for Ubuntu,
namark Nov 7, 2022
c4a7b82
Skipping Build Installer step on Ubuntu GHA builds.
namark Nov 7, 2022
654c21f
Fixed PR build GHA installer conditional.
namark Nov 8, 2022
152c434
Fixed server deb package step included in GHA android build.
namark Nov 8, 2022
23449cc
Skip upload full build step in GHA ubuntu builds.
namark Nov 8, 2022
93bb05e
Fixed a syntax error in GHA PR build script.
namark Nov 8, 2022
e5d21d7
Added capabilities object to domain server -> metaverse heartbeat req…
namark Nov 8, 2022
0c00420
WebRTC build instruction for Ubuntu 20.04
namark Nov 8, 2022
9ed7fc7
Minor fixes in WebRTC build instructions for Ubuntu.
namark Nov 8, 2022
9b12f92
A minor formatting fix in WebRTC build instructions for Ubuntu.
namark Nov 8, 2022
f9333d7
Some fixes in the makefile for building WebRTC on Ubuntu.
namark Nov 10, 2022
6f5ccd6
Added some copyright in some headers.
namark Nov 10, 2022
e6bfc83
Added a copyright statement.
namark Nov 10, 2022
93ad995
Merge branch 'master' into linux-webrtc-update-5387
namark Nov 11, 2022
39ba703
Minor typo fix,
namark Nov 14, 2022
3261694
Reverted copyright date update.
namark Nov 14, 2022
0b97e72
Reverted copyright date update.
namark Nov 14, 2022
00cde06
Coding style fix.
namark Nov 14, 2022
d849fdd
Merge branch 'master' into metaverse-heartbeat-capabilities
namark Nov 14, 2022
7e03bad
Clarifying what "prometheus" refers to in domain server code.
namark Nov 17, 2022
ad7560a
Merge branch 'metaverse-heartbeat-capabilities' of github.com-namark:…
namark Nov 17, 2022
e9280b7
Added Ubuntu 20.04 server packaging steps to GHA master build script.
namark Nov 20, 2022
9b179e2
Merge branch 'metaverse-heartbeat-capabilities' of github.com-namark:…
namark Nov 20, 2022
21e5c22
Reading version information from a file in GHA master builds.
namark Nov 20, 2022
91e4322
Small improvements in GHA Ubuntu 20.04 server packaging steps.
namark Nov 20, 2022
1f8f57b
Merge branch 'linux-webrtc-update-5387' of github.com-namark:namark/v…
namark Nov 20, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 69 additions & 13 deletions .github/workflows/pr_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ jobs:
- os: ubuntu-18.04
build_type: full
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3
- os: ubuntu-20.04
build_type: full
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion3 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3
- os: ubuntu-18.04
build_type: android
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
Expand All @@ -58,18 +61,33 @@ jobs:
echo "JOB_NAME=build (${{matrix.os}}, ${{matrix.build_type}})" >> $GITHUB_ENV
echo "APP_TARGET_NAME=$APP_NAME" >> $GITHUB_ENV

# Linux build variables
if [[ "${{ matrix.os }}" = "ubuntu-"* || "${{ matrix.os }}" = *"debian"* ]]; then
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
# Ununti 20.04 build variables
namark marked this conversation as resolved.
Show resolved Hide resolved
if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]]; then
echo "INSTALLER_EXT=*" >> $GITHUB_ENV
echo "VIRCADIA_QT_PATH=/opt/qt515" >> $GITHUB_ENV
echo "CMAKE_BUILD_EXTRA=-- -j$(nproc)" >> $GITHUB_ENV
if [[ "${{ matrix.os }}" = *"aarch64" ]]; then
echo "VCPKG_FORCE_SYSTEM_BINARIES=true" >> $GITHUB_ENV
fi
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE= -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE=" >> $GITHUB_ENV
else
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE= -DCLIENT_ONLY=1 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE= -DCLIENT_ONLY=1 -DBUILD_TOOLS:BOOLEAN=FALSE" >> $GITHUB_ENV
fi
else
# other Linux build variables
if [[ "${{ matrix.os }}" = "ubuntu-"* || "${{ matrix.os }}" = *"debian"* ]]; then
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
echo "INSTALLER_EXT=*" >> $GITHUB_ENV
echo "CMAKE_BUILD_EXTRA=-- -j$(nproc)" >> $GITHUB_ENV
if [[ "${{ matrix.os }}" = *"aarch64" ]]; then
echo "VCPKG_FORCE_SYSTEM_BINARIES=true" >> $GITHUB_ENV
fi
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE= -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
else
echo "CMAKE_EXTRA=-DVIRCADIA_CPU_ARCHITECTURE= -DCLIENT_ONLY=1 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
fi
fi
fi
# Mac build variables
Expand Down Expand Up @@ -145,6 +163,17 @@ jobs:
echo "Installing apt packages"
sudo apt install -y ${{ matrix.apt-dependencies }} || exit 1

if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]]; then

sudo apt-add-repository ppa:beineri/opt-qt-5.15.2-focal
sudo apt update
sudo apt upgrade

sudo apt install cmake g++ zip libgl-dev libssl-dev

sudo apt install qt5153d qt5153d-dbg qt515base qt515base-dbg qt515charts-no-lgpl qt515connectivity qt515connectivity-dbg qt515datavis3d-no-lgpl qt515declarative qt515declarative-dbg qt515doc qt515gamepad qt515graphicaleffects qt515graphicaleffects-dbg qt515imageformats qt515imageformats-dbg qt515location qt515location-dbg qt515lottie-no-lgpl qt515multimedia qt515multimedia-dbg qt515networkauth-no-lgpl qt515opcua qt515opcua-dbg qt515quick3d-no-lgpl qt515quickcontrols qt515quickcontrols-dbg qt515quickcontrols2 qt515quickcontrols2-dbg qt515quicktimeline-no-lgpl qt515remoteobjects qt515remoteobjects-dbg qt515script qt515script-dbg qt515scxml qt515scxml-dbg qt515sensors qt515sensors-dbg qt515serialbus qt515serialbus-dbg qt515serialport qt515serialport-dbg qt515speech qt515speech-dbg qt515svg qt515svg-dbg qt515tools qt515tools-dbg qt515translations qt515wayland qt515wayland-dbg qt515webchannel qt515webchannel-dbg qt515webengine qt515webengine-dbg qt515webglplugin-no-lgpl qt515websockets qt515websockets-dbg qt515x11extras qt515x11extras-dbg qt515xmlpatterns qt515xmlpatterns-dbg
fi

else # macOS
echo "Downloading MacOSX10.12 SDK.."
# TODO: do this in cmake or python build scripts to make use of centralized external asset configuration with fallback gateways.
Expand Down Expand Up @@ -200,12 +229,6 @@ jobs:
path: ${{ runner.workspace }}/cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz
if-no-files-found: error

- name: Build Application
if: matrix.build_type == 'full' || matrix.build_type == 'client'
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target $APP_TARGET_NAME $CMAKE_BUILD_EXTRA

- name: Build Domain Server
if: matrix.build_type == 'full'
working-directory: ${{runner.workspace}}/build
Expand All @@ -218,14 +241,38 @@ jobs:
shell: bash
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA

- name: Build Oven
if: matrix.build_type == 'full' && (matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-18.04')
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target oven $CMAKE_BUILD_EXTRA

- name: Build ICE Server
if: matrix.build_type == 'full' && (matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-18.04')
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target ice-server $CMAKE_BUILD_EXTRA

- name: Build Deb Package
if: matrix.build_type == 'full' && (matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-18.04')
working-directory: ${{runner.workspace}}/vircadia
shell: bash
run: DEBVERSION=$RELEASE_NUMBER DEBEMAIL="[email protected]" DEBFULLNAME="Na Mark" DEBBUILDDIR="../build" ./pkg-scripts/make-deb-server

- name: Build Application
if: matrix.build_type == 'full' || matrix.build_type == 'client'
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target $APP_TARGET_NAME $CMAKE_BUILD_EXTRA

- name: Build Console
if: matrix.build_type == 'full' || matrix.os == 'windows-2019'
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA

- name: Build Installer
if: matrix.build_type != 'android'
if: matrix.build_type != 'android' && (matrix.os != 'ubuntu-20.04' && matrix.os != 'ubuntu-18.04')
working-directory: ${{runner.workspace}}/build
shell: bash
run: |
Expand Down Expand Up @@ -291,7 +338,7 @@ jobs:
run: cat ./_CPack_Packages/win64/NSIS/NSISOutput.log

- name: Upload full build
if: matrix.build_type == 'full'
if: matrix.build_type == 'full' && matrix.os != 'ubuntu-18.04' && matrix.os != 'ubuntu-20.04'
uses: actions/upload-artifact@v3
with:
name: build-full-${{ matrix.os }}-${{ github.event.number }}
Expand All @@ -305,3 +352,12 @@ jobs:
name: build-interface-${{ matrix.os }}-${{ github.event.number }}
path: ${{ runner.workspace }}/build/Vircadia-Interface-PR${{ github.event.number }}-*.${{ env.INSTALLER_EXT }}
if-no-files-found: error

- name: Upload Deb Packages
if: matrix.os == 'ubuntu-20.04'
uses: actions/upload-artifact@v3
with:
name: build-server-${{ matrix.os }}-${{ github.event.number }}
path: ${{ runner.workspace }}/vircadia/*.deb
if-no-files-found: error

6 changes: 3 additions & 3 deletions cmake/ExternalAssetsConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,9 @@ set(EXTERNAL_WEBRTC_WIN_MD5 "2a87b2a9c2708699551c9ada959dd217")
define_external_asset_urls(WEBRTC_WIN)

set(EXTERNAL_WEBRTC_LINUX_PATH "dependencies/vcpkg/webrtc-m84-gcc-linux.tar.xz")
set(EXTERNAL_WEBRTC_LINUX_IPFS_CID "QmT6neDQBSTADbyov3NUgWF9amhwPhbHLi6RCkYe54BJkZ")
set(EXTERNAL_WEBRTC_LINUX_SHA512 "f7c5f93566e2e79241cbb9628ab47302dd48739bb6a022c351be75553060fac4221892d094306a572cb3ec94c5031d7e812f07e7b3c0102be8c01b8c231f8ea0")
set(EXTERNAL_WEBRTC_LINUX_MD5 "8874b956d996ddcf84da96b596499e7b")
set(EXTERNAL_WEBRTC_LINUX_IPFS_CID "QmdfYZ4pKDu1cHtVZwP5o4DhAQwvBtR9T1o8WEoUb3HYF4")
set(EXTERNAL_WEBRTC_LINUX_SHA512 "d1456b132a9ace055c40222348afef84eb239b16d5b38f828803f9a1bf99e036914c1796ebd1cfbbffe8dcb61785a3c1ee490346c9bf3a42d0765f5fadfe20d0")
set(EXTERNAL_WEBRTC_LINUX_MD5 "0bea264a29cf63ee1481187596f8a5af")
define_external_asset_urls(WEBRTC_LINUX)

set(EXTERNAL_VHACD_PATH "dependencies/v-hacd-master.zip")
Expand Down
12 changes: 6 additions & 6 deletions cmake/compiler.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
Expand Down Expand Up @@ -58,9 +58,9 @@ endif()

if (ANDROID)
# assume that the toolchain selected for android has C++11 support
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
elseif(APPLE)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++")
if (CMAKE_GENERATOR STREQUAL "Xcode")
Expand All @@ -71,9 +71,9 @@ elseif(APPLE)
endif()
elseif ((NOT MSVC12) AND (NOT MSVC14))
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
if (COMPILER_SUPPORTS_CXX14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17)
if (COMPILER_SUPPORTS_CXX17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
Expand Down
95 changes: 85 additions & 10 deletions cmake/ports/webrtc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Configure depot_tools.
- Set an environment variable `GYP_MSVS_VERSION=2019`

Initialize depot_tools.
- VS2019 developer command prompt in the directory where the source tree will be created.
- VS2019 developer command prompt in the directory where the source tree will be created.
- `gclient`

### Get the Code
Expand All @@ -46,7 +46,7 @@ Switch to the M84 branch.
- `cd src`
- `git checkout branch-heads/4147`

Fetch all the subrepositories.
Fetch all the subrepositories.
- `gclient sync -D -r branch-heads/4147`

### Patch the Code
Expand Down Expand Up @@ -75,7 +75,7 @@ Fetch all the subrepositories.
}
```

#### H265 Codec Fixes
#### H265 Codec Fixes
https://bugs.webrtc.org/9213#c13
- Edit the following files:
- *modules\video_coding\codecs\h264\h264_color_space.h*
Expand Down Expand Up @@ -142,13 +142,13 @@ The following patches are needed even though SSL is excluded in the `gn gen` bui
if (true) {
```
- Edit *rtc_base\BUILD.gn*:\
Change:
Change:
```
if (rtc_build_ssl) {
deps += [ "//third_party/boringssl" ]
} else {
```
To:
To:
```
if (rtc_build_ssl) {
# deps += [ "//third_party/boringssl" ]
Expand All @@ -158,9 +158,9 @@ The following patches are needed even though SSL is excluded in the `gn gen` bui
### Set Up OpenSSL

Do one of the following to provide OpenSSL for building against:
a. If you have built Vircadia, find the **HIFI_VCPKG_BASE** subdirectory used in your build and make note of the path to and
a. If you have built Vircadia, find the **HIFI_VCPKG_BASE** subdirectory used in your build and make note of the path to and
including the *installed\x64-windows\include* directory (which includes an *openssl* directory).
a. Follow https://github.com/vircadia/vcpkg to install *vcpkg* and then *openssl*. Make note of the path to and including the
a. Follow https://github.com/vircadia/vcpkg to install *vcpkg* and then *openssl*. Make note of the path to and including the
*packages\openssl-windows_x64-windows\include* directory (which includes an *openssl* directory).

Copy the *\<path\>\openssl* directory to the following locations (i.e., add as *openssl* subdirectories):
Expand All @@ -182,10 +182,10 @@ Create a debug build of the WebRTC library:
- `ninja -C out\Debug`

Create VCPKG file:
- Assemble files in VCPKG directory structure: Use the *copy-VCPKG-files-win.cmd* batch file per instructions in it.
- Assemble files in VCPKG directory structure: Use the *copy-VCPKG-files-win.cmd* batch file per instructions in it.
`cd ..`\
`copy-VCPKG-files-win`
- Zip up the VCPKG *webrtc* directory created by the batch file.
- Zip up the VCPKG *webrtc* directory created by the batch file.
`cd vcpkg`\
`7z a -tzip webrtc-m84-yyyymmdd-windows.zip webrtc`
- Calculate the SHA512 of the zip file. E.g., using a Windows PowerShell command window:\
Expand All @@ -197,7 +197,7 @@ Create VCPKG file:
### Tidying up

Disable the depot_tools:
- Rename the *depot_tools* directory so that these tools don't interfere with the rest of your development environment for
- Rename the *depot_tools* directory so that these tools don't interfere with the rest of your development environment for
other work.


Expand All @@ -207,6 +207,81 @@ The original, High Fidelity-provided WebRTC VCPKG library is used for AEC (audio

**TODO:** Update to M84 and include WebRTC components per Windows WebRTC.

## Ubuntu 20.04 - 5387

### Install prerequisite software
```
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update
sudo apt install git libssl-dev pkg-config libglib2.0-dev \
libpipewire-0.3-dev libgbm-dev libegl*-dev libepoxy-dev libdrm-dev clang \
libasound2-dev libpulse-dev libxdamage-dev libxrandr-dev libxtst-dev \
libxcomposite-dev
```

### Setup depot_tools

Clone depot_tools repository and set PATH.
```
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$HOME/depot_tools:$PATH
```

### Setup WebRTC project
Fetch it with depot tools:
```
fetch webrtc
```
This will create an `src` directory, from this point on we will be working there:
```
cd src
```
Checkout the relevant release branch:
```
git checkout branch-heads/5387
```
Synchronize the third party dependencies with depot tools:
```
gclient sync
```

#### BoringSLL replacement
Remove BoringSSL library to make sure it's not included in the build:
```
rm -rf third_party/boringssl
```
This will break several other dependencies, so they need to be updated to use the system OpenSSL library instead of BoringSSL. The commands below that generate build configurations will give errors for relevant third party sub projects. Each of these has a BUILD.gn file in its root, this is configuration file that specifies dependency on boringssl in arrays called `deps` with a path string `//third_party/boringssl`. All those need to be removed. Additionally under `config("<projectname>_config")` OpenSSL libraries linkage parameters need to be added, these are specified in another array called `libs`, that should include `"ssl", "crypto"` to link against libssl and libcrypto. In version 5387 affected third party projects are `grpc` and `libsrtp`, and necessary modification are available in a diff format [here](./linux/patches/5387/replace_boringssl.diff).

#### Building the library

Generate release and debug build configurations:
```
gn gen out/Release --args='use_custom_libcxx=false target_sysroot="/" rtc_include_tests=false rtc_build_examples=false use_debug_fission=false is_debug=false use_rtti=true rtc_use_h264=true proprietary_codecs=true rtc_build_ssl=false rtc_ssl_root=" "'

gn gen out/Debug --args='use_custom_libcxx=false target_sysroot="/" rtc_include_tests=false rtc_build_examples=false use_debug_fission=false is_debug=true rtc_use_h264=true proprietary_codecs=true rtc_build_ssl=false rtc_ssl_root=" "'
```
Build release and debug static libraries:
```
PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/ ninja -C out/Release
PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/ ninja -C out/Debug
```

### Assembling the VCPKG package
The VCPKG is a tar.xz archive with the following directories:
* webrtc/lib/ - contains release static library
* webrtc/debug/lib/ - contains debug static library
* webrtc/share/webrtc - contains copyright file
* webrtc/include/webrtc - contains library header files

The release and debug static libraries can be copied over from `src/out/Release/obj/libwebrtc.a` and `src/out/Debug/obj/libwebrtc.a` respectivly. As a copyright file the `src/LICENSE` is copied. For the include firectory all the headers files from the following directories need to be copied over form the `src` directory, preserving the structure: api, rtc_base, modules, system_wrappers, common_video, common_audio, call, media, video, p2p, logging. Additionally all the headers files from `src/third_party/abseil-cpp` also need to be copied, also presercing the strecture.

### Automation

The [linux](./linux) directory contains a Makefile and patches to automate the entire process from installing prerequisits to creating the VCPKG package, tested on Ubuntu 20.04 server, WebRTC version 5387. To use it copy the contents to a folder to where WebRTC should be built and invoke `make`. The Makefile has the following parameters:
* VERSION - the version of webrtc to checkout, this is just the number, will be prefixed with "branch_heads/" for the git checkout command. (default: 5387)
* DESTDIR - the output directory in which to build the package VCPKG package (default: package)

If the process completes succsessfully the VCPKG package will be available under `DESTDIR` as `webrtc-VERSION-linux.tar.xz`. The [patches](./linux/patches) directory contains a directory per version which contain diff files to apply to `src` folder berfore building. This way if different changes are required for future versions of WebRTC they can be added there as diff files under appropriate directories.

## MacOS - M78

Expand Down
Loading