4 comments on “Making WebRTC source building not suck (Alex Gouaillard)

  1. Its not all that difficult to build, but it is a pain-in-the-butt IMHO. You have to install a bunch of tools etc and do some research, but all in all its nice that it works so well once its built. I assume its also smart to build on a unix based os; building on anything other than Linux is probably a nightmare.

    • Sorry for the late reply, i do not get notifications on this.

      Building in itself is not the problem, but one commit out of 7 is broken, and you might not see it at compilation time. Running the tests is NOT easy.

      Then, as time pass, libwebrtc continues to build, but it introduces a ton of non-backward compatibility changes. The google tests, examples, chrome, the iOS and android wrappings and all other internal projects (meet, …) are modified accordingly as they go, but your (my) application is not. Maintenance of applications based on libwebrtc is HARD, and is the source of many questions on discuss-webrtc mailing list. To the point that google open a bug about it: https://bugs.chromium.org/p/webrtc/issues/detail?id=7372

    • For historical reasons, I define usable as “a gifted master student could do it”. In many aspects, while the default compilation of libwebrtc fits this definition, using and maintaining libwebrtc (1) and compiling for non-default parameters (2) is not.

      You can see some of my comments about (1) above in response to paul. In your case I would had: how much do you test your compile library? While google achieve 80+% coverage, the original vsimon scripts did not test at all.

      Importing google unit test is challenging at best. Linking against an application requires you to maintain the application, and to pass around not only the includes directories, but also the compilation flags. While it s almost trivial under linux (pkgconfig), it’s quite difficult on other platform. Your test hardcode the compilation flags for mac, e.g.

      Now some example of difficult questions:

      1. before henrik and I put a flag for RTTI in january, how would have you compile libwebrtc with RTTI (to add an additional video Capturer for example.
      https://bugs.chromium.org/p/webrtc/issues/detail?id=6468

      2. How do you compile libwebrtc as a shared lib?
      https://bugs.chromium.org/p/webrtc/issues/detail?id=7368

      3. How do you compile an external shared lib (DLL) linked against libwebrtc as a static lib while having the right runtime library on windows (i.e. how do you switch between the /MT, /MTd, /MD, /MDd, …)

      and really hard:

      4. How do you handle private modifications of libwebrtc in your project/script

      5. How do you handle using your own modified libwebrtc in chrome, when chrome’s libwebrtc and libwebrtc are different git subtrees:

      https://chromium.googlesource.com/external/webrtc/trunk/webrtc.git
      https://chromium.googlesource.com/external/webrtc.git

      Your project is great, and I think it’s already addressing the need of many, just like Axel Isouard project addresses the need of those who want to build in travis, or use a npm package (https://github.com/aisouard/libwebrtc).

      However, there are still a lot to do to make libwebrtc really usable as a library, and integrated in a CI/CD system.

Leave a Reply

Your email address will not be published. Required fields are marked *