Coder Social home page Coder Social logo

aisouard / libwebrtc Goto Github PK

View Code? Open in Web Editor NEW
632.0 40.0 192.0 278 KB

:package: Google's WebRTC implementation in a single static library.

Home Page: https://axel.isouard.fr/libwebrtc

License: Apache License 2.0

CMake 100.00%
cmake libwebrtc webrtc macos windows linux

libwebrtc's Introduction

libwebrtc License Join the chat at https://gitter.im/aisouard/libwebrtc Build Status Build Status

This repository contains a collection of CMake scripts to help you embed Google's native WebRTC implementation inside your project as simple as this:

cmake_minimum_required(VERSION 3.3)
project(sample)

find_package(LibWebRTC REQUIRED)
include(${LIBWEBRTC_USE_FILE})

set(SOURCE_FILES main.cpp)
add_executable(sample ${SOURCE_FILES})
target_link_libraries(sample ${LIBWEBRTC_LIBRARIES})

It also produces a pkg-config file if you prefer the classic way:

$ g++ `pkg-config --cflags LibWebRTC` main.cpp -o main `pkg-config --libs LibWebRTC`

Status

The following table displays the current state of this project, including supported platforms and architectures.

x86 x64 arm arm64
Linux
macOS - - -
Windows

Prerequisites

  • CMake 3.3 or later
  • Python 2.7 (optional for Windows since it will use the interpreter located inside the depot_tools installation)

Debian & Ubuntu

  • Required development packages:
# apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxtst-dev \
                  libxss-dev libpci-dev libdbus-1-dev libgconf2-dev \
                  libgnome-keyring-dev libnss3-dev libasound2-dev libpulse-dev \
                  libudev-dev
  • GCC & G++ 4.8 or later, for C++11 support

macOS

  • OS X 10.11 or later
  • Xcode 7.3.1 or later

Windows

  • Windows 7 x64 or later

  • Visual Studio 2015 with updates - Download the Installer

    Make sure that you install the following components:

    • Visual C++, which will select three sub-categories including MFC
    • Universal Windows Apps Development Tools
      • Tools (1.4.1) and Windows 10 SDK (10.0.14393)
  • Windows 10 SDK with Debugging Tools for Windows or Windows Driver Kit 10 installed in the same Windows 10 SDK installation directory.

Compiling

Clone the repository, create an output directory, browse inside it, then run CMake.

$ git clone https://github.com/aisouard/libwebrtc.git
$ cd libwebrtc
$ mkdir out
$ cd out
$ cmake ..

Windows users must add the Win64 suffix to their Visual Studio generator name if they want to build the library for 64-bit platforms, they'll omit it for 32-bit builds and define the TARGET_CPU variable accordingly.

> cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86
> cmake -G "Visual Studio 14 2015 Win64"

Then they'll have to open the libwebrtc.sln located inside the current output directory and build the ALL_BUILD project.

Unix users will just have to run the following make commands.

$ make
# make install

The library will be located inside the lib folder of the current output directory. The include folder will contain the header files. CMake scripts will be placed inside the lib/cmake/LibWebRTC directory.

Debug and Release configurations

If you are using XCode or Visual Studio, you can simply switch between the Debug and Release configuration from your IDE. The debugging flags will be appended to the generator's parameters.

Otherwise, you must define the CMAKE_BUILD_TYPE variable to Debug.

$ cmake -DCMAKE_BUILD_TYPE=Debug ..

Using WebRTC in your project

At the time of writing this README file, there's no proper way to detect any installation of the WebRTC library and header files. In the meantime, this CMake script generates and declares a LibWebRTC package that will be very easy to use for your projects.

All you have to do is include the package, then embed the "use file" that will automatically find the required libraries, define the proper compiling flags and include directories.

find_package(LibWebRTC REQUIRED)
include(${LIBWEBRTC_USE_FILE})

target_link_libraries(my-app ${LIBWEBRTC_LIBRARIES})

A pkg-config file is also provided, you can obtain the required compiler and linker flags by specifying LibWebRTC as the package name.

$ pkg-config --cflags --libs LibWebRTC

Fetching a specific revision

The latest working release will be fetched by default, unless you decide to retrieve a specific commit by setting it's hash into the WEBRTC_REVISION CMake variable, or another branch head ref into the WEBRTC_BRANCH_HEAD variable.

$ cmake -DWEBRTC_REVISION=be22d51 ..
$ cmake -DWEBRTC_BRANCH_HEAD=refs/branch-heads/57 ..

If both variables are set, it will focus on fetching the commit defined inside WEBRTC_REVISION.

Managing depot_tools

CMake will retrieve the latest revision of the depot_tools repository. It will get the WebRTC repository's commit date, then check-out depot_tools to the commit having the closest date to WebRTC's, in order to ensure a high compatibility with gclient and other tools.

It is possible to prevent this behavior by specifying the location to your own depot_tools repository by defining the DEPOT_TOOLS_PATH variable.

$ cmake -DDEPOT_TOOLS_PATH=/opt/depot_tools ..

Configuration

The library will be compiled and usable on the same host's platform and architecture. Here are some CMake flags which could be useful if you need to perform cross-compiling.

  • BUILD_DEB_PACKAGE

    Generate Debian package, defaults to OFF, available under Linux only.

  • BUILD_RPM_PACKAGE

    Generate Red Hat package, defaults to OFF, available under Linux only.

  • BUILD_TESTS

    Build WebRTC unit tests and mocked classes such as FakeAudioCaptureModule.

  • BUILD_SAMPLE

    Build an executable located inside the sample folder.

  • DEPOT_TOOLS_PATH

    Set this variable to your own depot_tools directory. This will prevent CMake from fetching the one matching with the desired WebRTC revision.

  • GN_EXTRA_ARGS

    Add extra arguments to the gn gen --args parameter.

  • NINJA_ARGS

    Arguments to pass while executing the ninja command.

  • TARGET_OS

    Target operating system, the value will be used inside the --target_os argument of the gn gen command. The value must be one of the following:

    • android
    • chromeos
    • ios
    • linux
    • mac
    • nacl
    • win
  • TARGET_CPU

    Target architecture, the value will be used inside the --target_cpu argument of the gn gen command. The value must be one of the following:

    • x86
    • x64
    • arm
    • arm64
    • mipsel
  • WEBRTC_BRANCH_HEAD

    Set the branch head ref to retrieve, it is set to the latest working one. This variable is ignored if WEBRTC_REVISION is set.

  • WEBRTC_REVISION

    Set a specific commit hash to check-out.

Contributing

Feel free to open an issue if you wish a bug to be fixed, to discuss a new feature or to ask a question. I'm open to pull requests, as long as your modifications are working on the three major OS (Windows, macOS and Linux).

Don't forget to put your name and e-mail address inside the AUTHORS file! You can also reach me on Twitter for further discussion.

Acknowledgements

Many thanks to Dr. Alex Gouaillard for being an excellent mentor for this project.

Everything started from his « Automating libwebrtc build with CMake » blog article, which was a great source of inspiration for me to create the easiest way to link the WebRTC library in any native project.

License

Apache License 2.0 © Axel Isouard

libwebrtc's People

Contributors

aisouard avatar gitter-badger avatar mayeut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libwebrtc's Issues

Manage depot_tools as an external project

First step for #30

  • Retrieve the depot_tools repository with CMake
  • Set the environment variable inside prefix.sh to disable auto-update
  • Use gclient to retrieve WebRTC with the desired commit / release branch head
  • Checkout depot_tools to a commit having the closest date with WebRTC's

Prepare the 0.1 release

We're almost there, fix the remaining issues such as #27, #22, #23, #28, then publish the 0.1 version with the following packages:

Windows

  • libwebrtc-0.1-win-x86.msi
  • libwebrtc-0.1-win-x64.zip
  • libwebrtc-0.1-win-x64.msi
  • libwebrtc-0.1-win-x86.zip

macOS

  • libwebrtc-0.1-mac-x86.tar.gz
  • libwebrtc-0.1-mac-x64.tar.gz
  • libwebrtc-0.1-x86.dmg
  • libwebrtc-0.1-x64.dmg

Linux

  • libwebrtc-0.1-linux-x86.tar.gz
  • libwebrtc-0.1-linux-x64.tar.gz
  • libwebrtc-0.1-linux-i386.deb
  • libwebrtc-0.1-linux-i686.rpm
  • libwebrtc-0.1-linux-amd64.deb
  • libwebrtc-0.1-linux-x86_64.rpm

libwebrtc.a for iOS

I tried to build a libwebrtc.a for iOS using the following command set:

Command:
cmake -DCMAKE_BUILD_TYPE=Release -DWEBRTC_BRANCH_HEAD=refs/branch-heads/60 -DDEPOT_TOOLS_PATH=$PATH -DTARGET_OS=ios -DTARGET_CPU=arm64 ..
Result:
-- Building for ios (arm64)
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hussainsajid/Documents/libwebrtc/out

Command:
make
Result:
-- The C compiler identification is AppleClang 9.0.0.9000037
-- The CXX compiler identification is AppleClang 9.0.0.9000037
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.13.5 (Apple Git-94)")
-- Retrieving current git tag
-- Building for ios (arm64)
-- Found DepotTools: /Users/hussainsajid/Documents/depot_tools/gclient
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 (found suitable version "2.7.13", minimum required is "2.7")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hussainsajid/Documents/libwebrtc/out
BigMac:out hussainsajid$ make
Scanning dependencies of target webrtc-src
[ 6%] Creating directories for 'webrtc-src'
[ 12%] Performing download step (git clone) for 'webrtc-src'
Cloning into 'src'...
Checking out files: 100% (5286/5286), done.
Already on 'master'
Your branch is up-to-date with 'origin/master'.
[ 18%] Performing patch step for 'webrtc-src'
[ 25%] No update step for 'webrtc-src'
[ 31%] Performing configure step for 'webrtc-src'
-- The C compiler identification is AppleClang 9.0.0.9000037
-- The CXX compiler identification is AppleClang 9.0.0.9000037
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.13.5 (Apple Git-94)")
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 (found suitable version "2.7.13", minimum required is "2.7")
-- Setting up branch-heads refspecs
-- Fetching refs/branch-heads/60
From https://chromium.googlesource.com/external/webrtc

  • branch refs/branch-heads/60 -> FETCH_HEAD
  • [new ref] refs/branch-heads/60 -> branch-heads/60
    -- Checking out refs/branch-heads/60
    Note: checking out 'FETCH_HEAD'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b

HEAD is now at 6294a7eb7... Merge WebRTC r18998 and r19018 to M60 branch
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/hussainsajid/Documents/libwebrtc/out/webrtc/build
[ 37%] Performing build step for 'webrtc-src'
Scanning dependencies of target webrtc-sync
[ 16%] Synchronizing WebRTC
________ running '/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python src/cleanup_links.py' in '/Users/hussainsajid/Documents/libwebrtc/out/webrtc'
Syncing projects: 38% (12/31) src/tools/gyp
[0:03:00] Still working on:
[0:03:00] src/third_party
.
.
.
Syncing projects: 100% (31/31), done.
[ 16%] Built target webrtc-sync
Scanning dependencies of target webrtc-gn
[ 33%] Fetching gn for darwin
0> Downloading src/buildtools/mac/gn...
Downloading 1 files took 7.391865 second(s)
[ 33%] Built target webrtc-gn
Scanning dependencies of target webrtc-clang-format
[ 50%] Fetching clang-format for darwin
0> Downloading src/buildtools/mac/clang-format...
Downloading 1 files took 8.533577 second(s)
[ 50%] Built target webrtc-clang-format
Scanning dependencies of target webrtc-clang
[ 66%] Updating clang
Updating Clang to 303369-1...
Creating directory /Users/hussainsajid/Documents/libwebrtc/out/webrtc/src/third_party/llvm-build
Downloading prebuilt clang
Downloading https://commondatastorage.googleapis.com/chromium-browser-clang/Mac/clang-303369-1.tgz .......... Done.
Creating directory /Users/hussainsajid/Documents/libwebrtc/out/webrtc/src/third_party/llvm-build/Release+Asserts
clang 303369-1 unpacked
[ 66%] Built target webrtc-clang
Scanning dependencies of target webrtc-generate
[ 83%] Generating build files
Warning: Multiple codesigning identities match "iPhone Developer"
Warning: - CDDF80FF2C1D2BDBAEA42E78A73CAC88DFEAD150 (selected)
Warning: - C72198A192D0E5C8A6F09182B3DA4F874B5BE009
Warning: - 6F975446661F67C5EE89E15D0DE95A436A6BB7E6
Warning: Please use either ios_code_signing_identity or
Warning: ios_code_signing_identity_description variable to
Warning: control which identity is selected.

Done. Made 357 targets from 109 files in 10229ms
[ 83%] Built target webrtc-generate
Scanning dependencies of target webrtc-build
[100%] Running ninja
ninja: Entering directory `out/Release'
[2054/2054] LIBTOOL-STATIC obj/webrtc/libwebrtc.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning same member name (arith_routines.o) in output file used for input files: obj/webrtc/modules/audio_coding/isac_c/arith_routines.o and: obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines.o (due to use of basename, truncation, blank padding or duplicate input files)
.
.
.
[100%] Built target webrtc-build
[ 43%] No install step for 'webrtc-src'
[ 50%] Completed 'webrtc-src'
[ 50%] Built target webrtc-src
Scanning dependencies of target libwebrtc
[ 56%] Creating directories for 'libwebrtc'
[ 62%] No download step for 'libwebrtc'
[ 68%] No patch step for 'libwebrtc'
[ 75%] No update step for 'libwebrtc'
[ 81%] Performing configure step for 'libwebrtc'
-- The C compiler identification is AppleClang 9.0.0.9000037
-- The CXX compiler identification is AppleClang 9.0.0.9000037
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

TARGET_OS

-- Build files have been written to: /Users/hussainsajid/Documents/libwebrtc/out/libwebrtc
[ 87%] Performing build step for 'libwebrtc'
Scanning dependencies of target webrtc
[100%] Linking C static library libwebrtc.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive member: libwebrtc.a(any.o) cputype (16777223) does not match previous archive members cputype (16777228) (all members must match)
.
.
.
make[5]: *** [libwebrtc.a] Error 1
make[5]: *** Deleting file `libwebrtc.a'
make[4]: *** [CMakeFiles/webrtc.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [libwebrtc-prefix/src/libwebrtc-stamp/libwebrtc-build] Error 2
make[1]: *** [CMakeFiles/libwebrtc.dir/all] Error 2
make: *** [all] Error 2

Any help to resolve the issue would be appreciated

Windows ws2def & winsock2 redefinition errors

I am getting a number of errors when attempting to build in WIndows, all appear to be emanating from winsock2.h and ws2def.h and are redefinition; different linkage, is there a flag I should be passing in Windows build to avoid this?

As an example:

2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(103): warning C4005: 'AF_IPX': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(457): note: see previous definition of 'AF_IPX'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(147): warning C4005: 'AF_MAX': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(476): note: see previous definition of 'AF_MAX'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(185): warning C4005: 'SO_DONTLINGER': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(399): note: see previous definition of 'SO_DONTLINGER'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(235): error C2011: 'sockaddr': 'struct' type redefinition
2>  C:\Qt_5.6.2_32\5.6\msvc2015\include\QtNetwork/qhostaddress.h(42): note: see declaration of 'sockaddr'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(437): error C2059: syntax error: 'constant'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(437): error C3805: 'constant': unexpected token, expected either '}' or a ','
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(572): warning C4005: 'IN_CLASSA': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(284): note: see previous definition of 'IN_CLASSA'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(578): warning C4005: 'IN_CLASSB': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(290): note: see previous definition of 'IN_CLASSB'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(584): warning C4005: 'IN_CLASSC': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(296): note: see previous definition of 'IN_CLASSC'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(595): warning C4005: 'INADDR_ANY': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(301): note: see previous definition of 'INADDR_ANY'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(597): warning C4005: 'INADDR_BROADCAST': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(303): note: see previous definition of 'INADDR_BROADCAST'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\ws2def.h(633): error C2011: 'sockaddr_in': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1011): note: see declaration of 'sockaddr_in'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(136): error C2011: 'fd_set': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1019): note: see declaration of 'fd_set'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(156): warning C4005: 'FD_CLR': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(94): note: see previous definition of 'FD_CLR'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(171): warning C4005: 'FD_SET': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(99): note: see previous definition of 'FD_SET'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(180): error C2011: 'timeval': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1035): note: see declaration of 'timeval'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(236): error C2011: 'hostent': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1023): note: see declaration of 'hostent'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(249): error C2011: 'netent': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(177): note: see declaration of 'netent'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(256): error C2011: 'servent': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1027): note: see declaration of 'servent'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(268): error C2011: 'protoent': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1031): note: see declaration of 'protoent'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(364): error C2011: 'WSAData': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(319): note: see declaration of 'WSAData'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(462): error C2011: 'sockproto': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(491): note: see declaration of 'sockproto'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(504): error C2011: 'linger': 'struct' type redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(1015): note: see declaration of 'linger'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(517): warning C4005: 'SOMAXCONN': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(541): note: see previous definition of 'SOMAXCONN'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(551): warning C4005: 'FD_READ': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(559): note: see previous definition of 'FD_READ'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(554): warning C4005: 'FD_WRITE': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(560): note: see previous definition of 'FD_WRITE'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(557): warning C4005: 'FD_OOB': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(561): note: see previous definition of 'FD_OOB'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(560): warning C4005: 'FD_ACCEPT': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(562): note: see previous definition of 'FD_ACCEPT'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(563): warning C4005: 'FD_CONNECT': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(563): note: see previous definition of 'FD_CONNECT'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(566): warning C4005: 'FD_CLOSE': macro redefinition
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(564): note: see previous definition of 'FD_CLOSE'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1624): error C2375: 'accept': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(739): note: see declaration of 'accept'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1646): error C2375: 'bind': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(744): note: see declaration of 'bind'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1667): error C2375: 'closesocket': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(749): note: see declaration of 'closesocket'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1684): error C2375: 'connect': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(751): note: see declaration of 'connect'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1705): error C2375: 'ioctlsocket': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(756): note: see declaration of 'ioctlsocket'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1726): error C2375: 'getpeername': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(761): note: see declaration of 'getpeername'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1747): error C2375: 'getsockname': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(766): note: see declaration of 'getsockname'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1768): error C2375: 'getsockopt': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(771): note: see declaration of 'getsockopt'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1793): error C2375: 'htonl': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(778): note: see declaration of 'htonl'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1810): error C2375: 'htons': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(780): note: see declaration of 'htons'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1828): error C2375: 'inet_addr': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(782): note: see declaration of 'inet_addr'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1846): error C2375: 'inet_ntoa': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(784): note: see declaration of 'inet_ntoa'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1946): error C2375: 'listen': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(786): note: see declaration of 'listen'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1965): error C2375: 'ntohl': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(790): note: see declaration of 'ntohl'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1982): error C2375: 'ntohs': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(792): note: see declaration of 'ntohs'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(1999): error C2375: 'recv': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(794): note: see declaration of 'recv'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2022): error C2375: 'recvfrom': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(800): note: see declaration of 'recvfrom'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2049): error C2375: 'select': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(808): note: see declaration of 'select'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2074): error C2375: 'send': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(815): note: see declaration of 'send'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2097): error C2375: 'sendto': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(821): note: see declaration of 'sendto'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2124): error C2375: 'setsockopt': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(829): note: see declaration of 'setsockopt'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2149): error C2375: 'shutdown': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(836): note: see declaration of 'shutdown'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2169): error C2375: 'socket': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(840): note: see declaration of 'socket'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2194): error C2375: 'gethostbyaddr': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(847): note: see declaration of 'gethostbyaddr'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2216): error C2375: 'gethostbyname': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(852): note: see declaration of 'gethostbyname'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2233): error C2375: 'gethostname': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(854): note: see declaration of 'gethostname'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2273): error C2375: 'getservbyport': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(858): note: see declaration of 'getservbyport'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2292): error C2375: 'getservbyname': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(862): note: see declaration of 'getservbyname'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2311): error C2375: 'getprotobynumber': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(866): note: see declaration of 'getprotobynumber'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2328): error C2375: 'getprotobyname': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(868): note: see declaration of 'getprotobyname'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2348): error C2375: 'WSAStartup': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(872): note: see declaration of 'WSAStartup'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2368): error C2375: 'WSACleanup': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(876): note: see declaration of 'WSACleanup'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2385): error C2375: 'WSASetLastError': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(878): note: see declaration of 'WSASetLastError'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2402): error C2375: 'WSAGetLastError': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(880): note: see declaration of 'WSAGetLastError'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2423): error C2375: 'WSAIsBlocking': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(882): note: see declaration of 'WSAIsBlocking'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2441): error C2375: 'WSAUnhookBlockingHook': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(884): note: see declaration of 'WSAUnhookBlockingHook'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2459): error C2375: 'WSASetBlockingHook': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(886): note: see declaration of 'WSASetBlockingHook'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2477): error C2375: 'WSACancelBlockingCall': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(888): note: see declaration of 'WSACancelBlockingCall'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2495): error C2375: 'WSAAsyncGetServByName': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(890): note: see declaration of 'WSAAsyncGetServByName'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2523): error C2375: 'WSAAsyncGetServByPort': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(898): note: see declaration of 'WSAAsyncGetServByPort'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2551): error C2375: 'WSAAsyncGetProtoByName': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(906): note: see declaration of 'WSAAsyncGetProtoByName'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2577): error C2375: 'WSAAsyncGetProtoByNumber': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(913): note: see declaration of 'WSAAsyncGetProtoByNumber'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2603): error C2375: 'WSAAsyncGetHostByName': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(920): note: see declaration of 'WSAAsyncGetHostByName'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2629): error C2375: 'WSAAsyncGetHostByAddr': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(927): note: see declaration of 'WSAAsyncGetHostByAddr'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2659): error C2375: 'WSACancelAsyncRequest': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(936): note: see declaration of 'WSACancelAsyncRequest'
2>C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock2.h(2677): error C2375: 'WSAAsyncSelect': redefinition; different linkage
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winsock.h(938): note: see declaration of 'WSAAsyncSelect'

RTTI not set on linux/macos build?

if you try to subclass a VideoCapturer or Thread you get

undefined reference to `typeinfo for cricket::VideoCapturer'
undefined reference to `typeinfo for rtc::Thread'

This seems to be because RTTI was not enabled in the build. It should be enabled by default for linux and macos.

-fno-rtti must be set on your app to avoid the problem. But there should at least be an option to include RTTI.

libwebrtc.a missing some classes

linux 64bit, ubuntu 14.04 lts
I tried to link webrtc-streamer with libwebrtc.a and I had to provide following to linked to succeed:
/usr/local/src/libwebrtc/out/webrtc/src/out/Release/obj/webrtc/system_wrappers/libmetrics_default.a
/usr/local/src/libwebrtc/out/webrtc/src/out/Release/obj/webrtc/system_wrappers/field_trial_default/field_trial_default.o
Looks this also should go into lib.

BR,
Tihomir

component has been deprecated

if you set component_build to true in a standalone libwebrtc build, it will yell at you.

There is no current supported way to compile a shared library.

Remove Chromium dependencies

Latest WebRTC revisions don't need to retrieve Chromium dependencies anymore, that's wonderful!
However, we still need to provide gn and clang_format binaries inside WebRTC's buildtools folder.

README.md: Write it

Add a README.md file describing the pre-requisites for each supported platform.
Draw a table showing the project's status.

CMake: Remove Common.cmake

We are using CMake 3.0, it's time to remove Common.cmake since we can use the cmake -E env command prefix.

Failed to fetch file gs://chromium-clang-format

It's happening more frequently with Travis under macOS.
Perhaps it doesn't like fetching multiple binaries in parallel ?

0> Failed to fetch file gs://chromium-clang-format/c44ad67f6d04cdd2e321d980488afa3e71a8ec79 for src/buildtools/mac/clang-format, skipping. [Err: Traceback (most recent call last):
  File "/Users/travis/build/aisouard/libwebrtc/out/depot_tools/src/depot-tools/gsutil.py", line 160, in <module>
    sys.exit(main())
  File "/Users/travis/build/aisouard/libwebrtc/out/depot_tools/src/depot-tools/gsutil.py", line 157, in main
    clean=args.clean)
  File "/Users/travis/build/aisouard/libwebrtc/out/depot_tools/src/depot-tools/gsutil.py", line 125, in run_gsutil
    gsutil_bin = ensure_gsutil(force_version, target, clean)
  File "/Users/travis/build/aisouard/libwebrtc/out/depot_tools/src/depot-tools/gsutil.py", line 95, in ensure_gsutil
    os.makedirs(target)
  File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: '/Users/travis/build/aisouard/libwebrtc/out/depot_tools/src/depot-tools/external_bin/gsutil'
]

You might not want to pass -j to ninja

it is internally multithreaded and is doing a good job at finding the maximum number of thread.
Passing -j should then only be used to reduce the number of thread ninja would normally use, in case you are using the computer to do something else. Any number passed above the optimal number would result in decreased performance. The -j option is dangerous ...

windows10-vs2015-build-error

when build the webrtc source, it appears like this
...
1> Synchronizing WebRTC
1> %1 is not a valid Win32 application

Issue building c project with LibWebRTC

Hi,

I'm working with WebRTC on Ubuntu 16.04, installed as you explain.

My problem is when I try to build client peerconnection with cmake, I get:

webrtcbridge_node.cc:(.text+0x41): undefined reference to `gtk_init'
webrtcbridge_node.cc:(.text+0xee): undefined reference to `GtkMainWnd::GtkMainWnd(char const*, > int, bool, bool)' 
webrtcbridge_node.cc:(.text+0xfd): undefined reference to `GtkMainWnd::Create()'
webrtcbridge_node.cc:(.text+0x148): undefined reference to`PeerConnectionClient::PeerConnectionClient()' 
webrtcbridge_node.cc:(.text+0x1fa): undefined reference to`GtkMainWnd::Destroy()' 
webrtcbridge_node.cc:(.text+0x222): undefined reference to `PeerConnectionClient::~PeerConnectionClient()'
webrtcbridge_node.cc:(.text+0x24f): undefined reference to `GtkMainWnd::~GtkMainWnd()'
webrtcbridge_node.cc:(.text+0x29c): undefined reference to `PeerConnectionClient::~PeerConnectionClient()'
webrtcbridge_node.cc:(.text+0x2d8): undefined reference to `GtkMainWnd::~GtkMainWnd()'

This is my CMakeLists.txt

cmake_minimum_required(VERSION 3.3)
project(webrtcbridge)

add_compile_options(-std=c++11)

find_package(LibWebRTC REQUIRED)
include (${LIBWEBRTC_USE_FILE})

find_package(PkgConfig REQUIRED) 
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})

add_executable(${PROJECT_NAME}_node src/webrtcbridge_node.cc)

target_link_libraries(${PROJECT_NAME}_node
  ${LIBWEBRTC_LIBRARIES}
)

target_link_libraries(${PROJECT_NAME}_node
  ${GTK_LIBRARIES}
)

Trying to find out where is the problem, I've tried to build with gcc, and when I use pkg-config with LibWebRTC, it returns this error:

Error: -lwebrtc not found (which is in pkg-config --libs) and I dont know exactly how to fix this.

Any idea? Thanks

Build problems due to ABI macros

Hi,

I'm getting some issues when I try to build webrtc libraries and peer connection example with my code.

This is an example:

CMakeFiles/window_manager.dir/src/startingWindow.cpp.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > cricket::VectorToString<cricket::AudioCodec>(std::vector<cricket::AudioCodec, std::allocator<cricket::AudioCodec> > const&)':
startingWindow.cpp:(.text+0x1d41): undefined reference to `cricket::AudioCodec::ToString[abi:cxx11]() const'
CMakeFiles/window_manager.dir/src/startingWindow.cpp.o: In function`std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > cricket::VectorToString<webrtc::RtpExtension>(std::vector<webrtc::RtpExtension, std::allocator<webrtc::RtpExtension> > const&)':
startingWindow.cpp:(.text+0x1edb): undefined reference to `webrtc::RtpExtension::ToString[abi:cxx11]() const'
CMakeFiles/window_manager.dir/src/startingWindow.cpp.o: In function`std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > cricket::VectorToString<cricket::DataCodec>(std::vector<cricket::DataCodec, std::allocator<cricket::DataCodec> > const&)':
startingWindow.cpp:(.text+0x2075): undefined reference to `cricket::DataCodec::ToString[abi:cxx11]() const'
collect2: error: ld returned 1 exit status

I've google it and it is due to changes between different versions of c++ libraries.

Also, I've seen that libwebrtc defines ABI macro = 0 so, if I didn't missunderstand, it uses old version of ABI macros.

Is there any way to build this libraries with ABI = 1?

Thanks

Build and run a sample under Travis and Appveyor

After running tests, continuous integration services should clone the libwebrtc-sample repository, compile it with the previously installed CMake package then run the sample to initiate a connection and check if everything has been linked properly.

Prevent Visual Studio from generating PDB files

PDB files shouldn't be generated under Release mode. Debugging info should be embedded directly inside the resulting lib file, otherwise it will output the following message during link:

webrtc.lib(webrtcsdp.obj) : warning LNK4099: PDB 'libjingle_peerconnection_cc.pdb'
  was not found with 'webrtc.lib(webrtcsdp.obj)' or at 'C:\projects\node-webrtc\build\
  Release\libjingle_peerconnection_cc.pdb'; linking object as if no debug info
  [C:\projects\node-webrtc\build\webrtc.vcxproj]

Support older WebRTC releases

As discussed in #29, older releases using dependencies from the Chromium repository must be supported.

It should be done in two parts:

  • Execute sync_chromium.py and setup_links.py scripts when they are present. It will take a long time to download (approx. 40 minutes), but it will fix the issue quickly before doing the second part.
  • Bring the libwebrtc-chromium-deps repository back, the classic way. It will only contain the necessary files to compile WebRTC with this project.

Debug build failing under Windows x86 uuid.lib

8>  [2279/2367] LINK force_mic_volume_max.exe force_mic_volume_max.exe.pdb
8>  FAILED: force_mic_volume_max.exe force_mic_volume_max.exe.pdb
8>  C:/Users/VM/Desktop/libwebrtc/depot_tools/python276_bin/python.exe ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 False link.exe /nologo /OUT:./force_mic_volume_max.exe /PDB:./force_mic_volume_max.exe.pdb @./force_mic_volume_max.exe.rsp
8>  uuid.lib(unknwn_i.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
8>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
8>LINK : error LNK1218: warning treated as error; no output file generated

Issues compiling on OSX.

OSX: 10.12.3
Xcode: 8.2.1

During compilation i get the following two errors.

debug_dump_writer.cc:108:3: error: [chromium-style] auto variable type must not deduce to a raw pointer type.
audio_network_adaptor_impl.cc:67:8: error: [chromium-style] auto variable type must not deduce to a raw pointer type

Has anyone seen this before and might be able to recommend a fix?

VS 2015: how to change /MD, /MT flags

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease'

how to change this flags? changing them in CMAKE seems doesn't apply changes

Peerconnection_client example segmentation fault

Hello,
I tried to run peerconnection_client example linked with libwebrtc.a but I end up with a segmentation fault.
I am running on a Unix machine 16.04.1-Ubuntu x86_64.

After running your script, I run the attached CMakeLists.txt in a different directory :

(dev)⚡ % cmake ..     /storage/Cosmo/libwebrtc_aisouard/libwebrtc/WorkingDir/out
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'gtk+-3.0'
-- Found gtk+-3.0, version 3.20.8
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /storage/Cosmo/libwebrtc_aisouard/libwebrtc/WorkingDir/out

Then make :

(dev)⚡ % make                                  /storage/Cosmo/libwebrtc_aisouard/libwebrtc/WorkingDir/out
Scanning dependencies of target ex_lib
[ 14%] Building CXX object CMakeFiles/ex_lib.dir/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/conductor.cc.o
[ 28%] Building CXX object CMakeFiles/ex_lib.dir/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/defaults.cc.o
[ 42%] Building CXX object CMakeFiles/ex_lib.dir/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/peer_connection_client.cc.o
[ 57%] Linking CXX static library libex_lib.a
[ 57%] Built target ex_lib
Scanning dependencies of target peerconnection_client
[ 71%] Building CXX object CMakeFiles/peerconnection_client.dir/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/linux/main.cc.o
[ 85%] Building CXX object CMakeFiles/peerconnection_client.dir/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/linux/main_wnd.cc.o
/storage/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/linux/main_wnd.cc: In member function ‘virtual void GtkMainWnd::SwitchToConnectUI()’:
/storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/linux/main_wnd.cc:248:23: warning: ‘GtkWidget* gtk_alignment_new(gfloat, gfloat, gfloat, gfloat)’ is deprecated [-Wdeprecated-declarations]
   GtkWidget* valign = gtk_alignment_new(0, 1, 0, 0);
                       ^
In file included from /usr/include/gtk-3.0/gtk/gtk.h:248:0,
                 from /storage/Cosmo/libwebrtc_aisouard/libwebrtc/out/webrtc/src/webrtc/examples/peerconnection/client/linux/main_wnd.cc:14:
/usr/include/gtk-3.0/gtk/deprecated/gtkalignment.h:79:12: note: declared here
 GtkWidget* gtk_alignment_new        (gfloat             xalign,
            ^

[More Gtk warnings]

[100%] Linking CXX executable peerconnection_client
[100%] Built target peerconnection_client

When I run the code and then I press Connect :

 (dev)⚡ % ./peerconnection_client     /storage/Cosmo/libwebrtc_aisouard/libwebrtc/WorkingDir/out
[1]    7813 segmentation fault (core dumped)  ./peerconnection_client

In gdb :

Thread 1 "peerconnection_" received signal SIGSEGV, Segmentation fault.
0x0000000000426e99 in sigslot::lock_blocksigslot::single_threaded::lock_block (this=0x7fffffffb450,
mtx=0x1329710) at /usr/local/include/webrtc/base/sigslot.h:257
257 m_mutex->lock();

Is it linked to Gtk deprecated functions ?

Thank you

CMakeLists.txt

x64 build

hello,
what params to CMake to build library for windows x64? Tips from docs seems resulting error:

C:\Users\evgo\Documents\libwebrtc>cmake -G "Visual Studio 14 2015" -DTARGET_CPU=x86
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.12.0.windows.1")
-- Building for win (x86)
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/evgo/Documents/libwebrtc

C:\Users\evgo\Documents\libwebrtc>cmake -G "Visual Studio 14 2015 Win64"
CMake Error: Error: generator : Visual Studio 14 2015 Win64
Does not match the generator used previously: Visual Studio 14 2015
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.

Win32: Add 7zip package support

The WebRTC library is huge under Windows (approx. 210MB).
We can reduce the package size with 7zip (approx. 18MB).

Add 7zip rules in CMake and Jake.

Cmake fails when WEBRTC_REVISION is set on Windows and Linux

Hi, I am using the HEAD version and stuck while setting a specific revision.

Using the cmake-gui 3.7.1 and VisualStudio 2015 x64 on Windows 8.1, I got the following messages when set WEBRTC_REVISION to 9660627c9dc3a9e53b66e6baa5417e16b964a744.

   Entering             D:/_Projects/libwebrtc/Targets
CMake Error at CMakeModules/LibWebRTCCommand.cmake:22 (add_dependencies):
  add_dependencies called with incorrect number of arguments
Call Stack (most recent call first):
  Targets/CMakeLists.txt:42 (libwebrtc_command)


   Returning to         D:/_Projects/libwebrtc
Configuring incomplete, errors occurred!

And in Ubuntu 16.04 x64 with cmake 3.5.1, I got the following messages while running this command:

juliao@server:~/tmp/libwebrtc2/build$ cmake -DWEBRTC_REVISION=9660627c9dc3a9e53b66e6baa5417e16b964a744 ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.7.4")
-- Found DepotTools: /home/juliao/webrtc/depot_tools/gclient
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- Looking for __i386__
-- Looking for __i386__ - not found
-- Looking for __x86_64__
-- Looking for __x86_64__ - found
-- Looking for __arm__
-- Looking for __arm__ - not found
-- Looking for __aarch64__
-- Looking for __aarch64__ - not found
-- Looking for __mips__
-- Looking for __mips__ - not found
CMake Error at CMakeModules/LibWebRTCCommand.cmake:22 (add_dependencies):
  add_dependencies called with incorrect number of arguments
Call Stack (most recent call first):
  Targets/CMakeLists.txt:42 (libwebrtc_command)


-- Configuring incomplete, errors occurred!
See also "/home/juliao/tmp/libwebrtc2/build/CMakeFiles/CMakeOutput.log".
See also "/home/juliao/tmp/libwebrtc2/build/CMakeFiles/CMakeError.log".

Edit: Previously I pasted the wrong message from linux, because I was on the wrong commit. I am now on the commit b668195.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.