Giter Site home page Giter Site logo

libpeer's Introduction

libpeer - Portable WebRTC Library for IoT/Embedded Device

pear-ci

libpeer is a WebRTC implementation written in C, developed with BSD socket. The library aims to integrate IoT/Embedded device video/audio streaming with WebRTC, such as ESP32 and Raspberry Pi

Features

  • Vdieo/Audio Codec
    • H264
    • G.711 PCM (A-law)
    • G.711 PCM (µ-law)
    • OPUS
  • DataChannel
  • STUN/TURN
  • Signaling

Dependencies

Getting Started

$ sudo apt -y install git cmake
$ git clone --recursive https://github.com/sepfy/libpeer
$ cd libpeer
$ ./build-third-party.sh
$ mkdir cmake
$ cd cmake
$ cmake ..
$ make
$ wget http://www.live555.com/liveMedia/public/264/test.264 # Download test video file
$ wget https://mauvecloud.net/sounds/alaw08m.wav # Download test audio file
$ ./examples/sample/sample

Examples

libpeer's People

Contributors

aarontung avatar aldoshkind avatar icemanaf avatar sepfy avatar timgates42 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

libpeer's Issues

Is usrsctp required to open the data channel for string

I'm trying to compile your library using the esp-idf framework. I'm using Ubuntu 22.04. I want to ask whether we need the usrsctp external library to send string to the other peer? I noticed that you have implemented your own stcp in case we don't have usrsctp, but I'm not sure how your sctp version works? I tried sending a string but it gives the error : "sctp not connected". I also noticed that the "connected" state is switched to true in the "sctp_incoming_data" function, but if sctp is not conencted, how can we receive data to turn "connected" to true? Love to hear your advice!

missing headers

Hello,
I've been trying to compile the latest code (I noticed the esp32s3 example, which is cool :)

I'm seeing a couple of missing header files that is making the build fail:
src/peer_signaling.c:7:10: fatal error: core_mqtt.h: No such file or directory
7 | #include <core_mqtt.h>
src/ssl_transport.h:10:10: fatal error: transport_interface.h: No such file or directory
10 | #include "transport_interface.h"

I see these errors when building the esp32 and esp32s3 examples.

thanks :)

compile issue

Hi,
Pear is a interesting project. I try to compile the project for a tour with Ubuntu16.0.4, python3.6, etc. but get link error that seems it is not compatible with OpenSSL. also It link error with Openssl-1.1.1g.
Is there any compile requirements for the project.

[ 75%] Linking C executable local_file
../../src/libpear.so: undefined reference to `BIO_set_data'
../../src/libpear.so: undefined reference to `BIO_set_data'
../../src/libpear.so: undefined reference to `BIO_set_init'
../../src/libpear.so: undefined reference to `BIO_meth_set_destroy'
../../src/libpear.so: undefined reference to `BIO_meth_set_write'
/train-data/pear/third_party/libnice/builddir/nice/libnice.so: undefined reference to `g_ptr_array_find'
../../src/libpear.so: undefined reference to `BIO_get_data'
../../src/libpear.so: undefined reference to `BIO_set_shutdown'
../../src/libpear.so: undefined reference to `BIO_meth_new'
../../src/libpear.so: undefined reference to `BIO_meth_set_create'
../../src/libpear.so: undefined reference to `BIO_meth_set_ctrl'

dtls problem on ubuntu22.04

Hi, I am newer on webrtc.

This code looks good for learning Webrtc.

I run video_on_demand and face a strange issue.

There is no dtls packets from Server on ubuntu 22.04.

Can you help me clarify this issue?

Thanks

The debug information as below:

image

image

image

image

recording example receives/records nothing

Browser asks to select screencast capture source, I choose one to share. In console it prints just:

Listening 0.0.0.0:8000

No file gets created in the directory of executable (CWD).
Tested both with google-chrome and chromium with the same result.

Support WHEP

Is there any plan to support WHEP for us to play webrtc

Windows support

Hi. I was wondering if there is any interest in adding Windows support.
I know libpeer is primarily intended for embedded devices (ESP32, rPi, etc), but I do believe it has potential for other uses.

My own use-case is to use DataChannels for video game networking. (and perhaps at some point: audio for voice chat)

I'm more than willing to contribute towards such an implementation, though I reckon I'll need your help troubleshooting.
In fact, I already worked on a port myself, and I believe I have a mostly-working version, though I get the following error:

ERROR <...>/libpeer/src/dtls_srtp.c 381 failed! mbedtls_ssl_handshake returned -0x7280

(that error code corresponds to MBEDTLS_ERR_SSL_CONN_EOF)

Update: Above issue was in Waterfox (& confirmed with Firefox), but Chrome seems to work — though only after a long delay (connection finally succeeds ~40-50 seconds after page load).

I suspect the difference between WF/FF & Chrome is one between aggressive nomination vs regular (which is the same issue affecting Firefox's non-compliance with ICE-lite, though as far as I can tell, libpeer doesn't advertise itself as ICE-lite?).
Firefox, in particular, appears to send a ton of messages with USE_CANDIDATE attribute set, which might be an indicator to help out with the problem (at least according to versatica/mediasoup#650).

Quick inspection reveals Firefox to send 30 messages with such an attribute, whereas Chrome sends none.


The good news, however, is that Chrome does work — with libpeer running in Windows! So my port was successful after all. I haven't yet tested it, but I've a sneaking suspicion Firefox would fail to work even with libpeer running on a POSIX system.

The P2P can be established, but the video and audio not display on chrome browse (despite fixing 102 h264 codecs)

Hi @sepfy @aldoshkind @icemanaf @timgates42 could you help me ?.
Your help will help me a lot at this time.

I successfully run video on demand example but with surveillance and home_camera examples I can't play video and audio on chorme.
The P2P has been established. we can see the data can be sent from device to chrome from wireshark but the video and audio doesn't display on chrome.
Even though The P2P has been established. I can see the data can be sent from device to chrome from wireshark but the video and audio doesn't display on chrome. (I fixed h264 codec to 102). (In home_camera, I only see audio data).

  • Chrome version: 107.0.5304.110 (Official Build) (64-bit).
  • I run code on Ubuntu 20.04.5 LTS.

This is SDP Offer when I run Home_camera example:

v=0 (6 more lines)
o=- 499682685197050615 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 (34 more lines) mid=0
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:f++w
a=ice-pwd:pJSBZ8xFxWCG1p5Ue4IZDCdL
a=ice-options:trickle
a=fingerprint:sha-256 AB:5A:07:9C:72:2E:EB:C0:2B:04:39:C5:FC:AA:37:3C:BF:A3:C6:63:45:E0:11:4D:7E:0D:B7:B6:42:64:B0:B7
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=sendrecv
a=msid:- c945ed4d-d989-41c0-b5f8-ca4369406ee7
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:63 red/48000/2
a=fmtp:63 111/111
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1238015745 cname:LFwx9XZ3VFIUxAJx
a=ssrc:1238015745 msid:- c945ed4d-d989-41c0-b5f8-ca4369406ee7
m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 123 127 122 125 107 108 109 124 121 39 40 45 46 98 99 100 101 120 119 114 (120 more lines) mid=1
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:f++w
a=ice-pwd:pJSBZ8xFxWCG1p5Ue4IZDCdL
a=ice-options:trickle
a=fingerprint:sha-256 AB:5A:07:9C:72:2E:EB:C0:2B:04:39:C5:FC:AA:37:3C:BF:A3:C6:63:45:E0:11:4D:7E:0D:B7:B6:42:64:B0:B7
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:123 rtx/90000
a=fmtp:123 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=124
a=rtpmap:39 H264/90000
a=rtcp-fb:39 goog-remb
a=rtcp-fb:39 transport-cc
a=rtcp-fb:39 ccm fir
a=rtcp-fb:39 nack
a=rtcp-fb:39 nack pli
a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
a=rtpmap:40 rtx/90000
a=fmtp:40 apt=39
a=rtpmap:45 AV1/90000
a=rtcp-fb:45 goog-remb
a=rtcp-fb:45 transport-cc
a=rtcp-fb:45 ccm fir
a=rtcp-fb:45 nack
a=rtcp-fb:45 nack pli
a=rtpmap:46 rtx/90000
a=fmtp:46 apt=45
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:120 red/90000
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=120
a=rtpmap:114 ulpfec/90000
a=ssrc-group:FID 2552703379 1944201314
a=ssrc:2552703379 cname:LFwx9XZ3VFIUxAJx
a=ssrc:2552703379 msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806
a=ssrc:1944201314 cname:LFwx9XZ3VFIUxAJx
a=ssrc:1944201314 msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806

This is SDP Answer when I run Home_camera example:

v=0 (5 more lines)
o=- 2023662770 2023662770 IN IP4 0.0.0.0
s=-
t=0 0
a=msid-semantic: WMS
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVP 8 (17 more lines) mid=0
a=rtpmap:8 PCMA/8000
a=ssrc:2 cname:pear
c=IN IP4 0.0.0.0
a=sendrecv
a=mid:0
a=rtcp-mux
a=ice-ufrag:5iV9
a=ice-pwd:iS1uFIj3df0oUBVG2HUcsF
a=ice-options:trickle
a=fingerprint:sha-256 87:EC:85:7F:EA:36:C4:40:59:DE:40:BD:EE:D0:46:31:51:20:A5:78:97:7B:32:8E:70:DD:04:F6:38:DE:3B:A5
a=setup:passive
a=candidate:1 1 udp 2015363327 192.168.50.154 38159 typ host
a=candidate:2 1 udp 1015021823 192.168.50.154 0 typ host
a=candidate:3 1 udp 1010827519 192.168.50.154 49283 typ host
a=candidate:7 1 udp 1679819007 116.104.141.202 5572 typ host
a=candidate:8 1 udp 847249663 116.104.141.202 0 typ host
a=candidate:9 1 udp 843055359 116.104.141.202 49283 typ host
m=video 9 UDP/TLS/RTP/SAVPF 96 102 (23 more lines) mid=1
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:96 profile-level-id=42e01f;level-asymmetry-allowed=1
a=fmtp:102 profile-level-id=42e01f;packetization-mode=1;level-asymmetry-allowed=1
a=fmtp:102 x-google-max-bitrate=6000;x-google-min-bitrate=2000;x-google-start-bitrate=4000
a=rtpmap:96 H264/90000
a=rtpmap:102 H264/90000
a=ssrc:1 cname:pear
c=IN IP4 0.0.0.0
a=sendrecv
a=mid:1
a=rtcp-mux
a=ice-ufrag:5iV9
a=ice-pwd:iS1uFIj3df0oUBVG2HUcsF
a=ice-options:trickle
a=fingerprint:sha-256 87:EC:85:7F:EA:36:C4:40:59:DE:40:BD:EE:D0:46:31:51:20:A5:78:97:7B:32:8E:70:DD:04:F6:38:DE:3B:A5
a=setup:passive
a=candidate:1 1 udp 2015363327 192.168.50.154 38159 typ host
a=candidate:2 1 udp 1015021823 192.168.50.154 0 typ host
a=candidate:3 1 udp 1010827519 192.168.50.154 49283 typ host
a=candidate:7 1 udp 1679819007 116.104.141.202 5572 typ host
a=candidate:8 1 udp 847249663 116.104.141.202 0 typ host
a=candidate:9 1 udp 843055359 116.104.141.202 49283 typ host

Stats Table

image

PIPE LINE doesn't work well on VM ubuntu

Hello @sepfy !

i run the example surveillance at my vm ubuntu.
The "PIPE_LINE" doesn't work. i google some other command and still not work well. i don't familiar with gstreamer comand.
could you provide an comand which can work well ?

thanks
Robert

Segmentation fault (core dumped)

Hello @sepfy, i often got an error: Segmentation fault (core dumped). Do you know the reason why?
Thanks you verymuch.

[INFO /home/dell/Documents/pear_19_12/src/signaling.c:21] Signaling Create
[INFO /home/dell/Documents/pear_19_12/examples/video_on_demand/main.c:193] ---------------> Create signaling service success
[INFO /home/dell/Documents/pear_19_12/src/signaling.c:60] Signaling dispatch
Segmentation fault (core dumped)

run local_file issues

I don't know how to use the local_file example, and after running it, it prints the following:

eyJ0eXBlIjogImFuc3dlciIsICJzZHAiOiAidj0wXHJcbm89LSAxNDk1Nzk5ODExMDg0OTcwIDE0OTU3OTk4MTEwODQ5NzAgSU4gSVA0IDAuMC4wLjBcclxucz1TdHJlYW1pbmcgVGVzdFxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwXHJcbmE9bXNpZC1zZW1hbnRpYzogcGVhclxyXG5tPXZpZGVvIDkgVURQL1RMUy9SVFAvU0FWUEYgMTAyXHJcbmM9SU4gSVA0IDAuMC4wLjBcclxuYT1zZW5kb25seVxyXG5hPW1pZDowXHJcbmE9cnRjcC1tdXhcclxuYT1pY2UtdWZyYWc6UXlGMVxyXG5hPWljZS1wd2Q6R3FVTHhHdTBLWU4yNGZtQk4xUVFEZ1xyXG5hPWljZS1vcHRpb25zOnRyaWNrbGVcclxuYT1maW5nZXJwcmludDpzaGEtMjU2IEE0OkU2Ojg4OkYzOjlBOkI2OjBFOkRFOkQ2OjM5Ojc5OkQxOjBEOjY5Ojc3OjAwOjc5OkE1OjE0OkFCOjczOkNEOkU3OjdCOjc0OkU4OkU2OjJDOjMzOkYwOjhEOjQ5XHJcbmE9c2V0dXA6cGFzc2l2ZVxyXG5hPXJ0cG1hcDoxMDIgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTAyIHBhY2tldGl6YXRpb24tbW9kZT0xXHJcbmE9cnRjcC1mYjoxMDIgbmFja1xyXG5hPXJ0Y3AtZmI6MTAyIG5hY2sgcGxpXHJcbmE9cnRjcC1mYjoxMDIgZ29vZy1yZW1iXHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjAxNTM2MzMyNyAxMC4xMS4xNy4xNjcgMzM4MjAgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxMDE1MDIxODIzIDEwLjExLjE3LjE2NyAwIHR5cCBob3N0XHJcbmE9Y2FuZGlkYXRlOjMgMSB1ZHAgMTAxMDgyNzUxOSAxMC4xMS4xNy4xNjcgNDIyMTUgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6NyAxIHVkcCAxNjc5ODE5MDA3IDU4LjI1MC4yMy4xOTQgMzM4MjAgdHlwIHNyZmx4XHJcbmE9Y2FuZGlkYXRlOjggMSB1ZHAgODQ3MjQ5NjYzIDU4LjI1MC4yMy4xOTQgMCB0eXAgc3JmbHhcclxuYT1jYW5kaWRhdGU6OSAxIHVkcCA4NDMwNTUzNTkgNTguMjUwLjIzLjE5NCA0MjIxNSB0eXAgc3JmbHhcclxuIn0=

** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

Documention Improvements

Documentation ( If Missing libraries and tools )

  1. CMake >3.17 needed for meson
    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
    sudo apt-get update
    sudo apt install cmake
    sudo apt install cmake-curses-gui # Recommended, includes ccmake.

  2. While running ./build-third-party.sh

While compiling add missing lib/headers
sudo apt-get install -y gnutls-bin libgupnp-igd-1.0-dev libgirepository1.0-dev libgnutls.*-dev

  1. In Get Started add "cd pear" step
    git clone --recursive https://github.com/sepfy/pear
    cd pear
    ./build-third-party.sh

Where to set ICE Candidate generate by remote?

After calling peerConnection.createAnswer() on the H5 side, the 'icecandidate' event of the peerConnection returned an ICE Candidate, like this:
{"candidate":"candidate:1 1 TCP 2105524479 10.200.0.2 9 typ host tcptype active","sdpMid":"video","sdpMLineIndex":0,"usernameFragment":"c976a1ab"}
However, I haven't found how to set the ICE Candidate data in libpeer?

Error:1420B114:SSL routines:ssl_read_internal:uninitialized

I just followed you instrictions, after starting the session this is what I get on the console

[INFO /home/ottavio/Progetti/pear/src/ice_agent.c:148] SIGNAL: state changed 1 1 failed[5]
[INFO /home/ottavio/Progetti/pear/src/ice_agent.c:148] SIGNAL: state changed 1 1 connecting[2]
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized
[ERROR /home/ottavio/Progetti/pear/src/dtls_transport.c:185] error:1420B114:SSL routines:ssl_read_internal:uninitialized

I am on Debian bullseye 64 bits and firefox.

TURN server support on esp32

I've tested the esp32 and works pretty well the only problem I have was it does not work on different internet provider maybe this is caused by NATs and would require TURN server for it to work.

Realtime messaging data channel example

I have successfully sent json data from the esp32 to the webrtc website but i dont know how we can send data from website to the esp32. is there any receive handler on the esp32 libpeer side?

The P2P can be established,but the video not display on chrome browse

Hi @sepfy
could you help me?
The description as follown:
one termination is chrome(chrome/100.0.4896.127), another termiation is that pear was run at ubuntu on virtual machine. The P2P has been established. we can see the video data can be sent frome pear to chrome from wireshark. but the video doesn't display on chrome.
the sdp offer:
:48
createOfferOnSuccess (type: "offer", 2 sections)
Copy description to clipboard
v=0 (6 more lines)
o=- 8752117117835402785 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 121 125 107 108 109 124 120 123 119 35 36 41 42 114 115 116 117 118 (133 more lines) mid=0
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:jnf4
a=ice-pwd:bd90gvRbdL46FjqTu3AQ/EqY
a=ice-options:trickle
a=fingerprint:sha-256 1D:D5:DB:DB:D7:CA:B8:AA:7F:61:9A:74:0E:04:50:EE:41:5C:21:DB:42:B2:98:3F:4D:4F:91:5B:7B:B8:71:35
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=124
a=rtpmap:123 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=123
a=rtpmap:35 H264/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=fmtp:35 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
a=rtpmap:41 AV1/90000
a=rtcp-fb:41 goog-remb
a=rtcp-fb:41 transport-cc
a=rtcp-fb:41 ccm fir
a=rtcp-fb:41 nack
a=rtcp-fb:41 nack pli
a=rtpmap:42 rtx/90000
a=fmtp:42 apt=41
a=rtpmap:114 H264/90000
a=rtcp-fb:114 goog-remb
a=rtcp-fb:114 transport-cc
a=rtcp-fb:114 ccm fir
a=rtcp-fb:114 nack
a=rtcp-fb:114 nack pli
a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 red/90000
a=rtpmap:117 rtx/90000
a=fmtp:117 apt=116
a=rtpmap:118 ulpfec/90000
a=ssrc-group:FID 2322705154 2857601720
a=ssrc:2322705154 cname:ZmMkzc9v9XyhMLOi
a=ssrc:2322705154 msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad
a=ssrc:2322705154 mslabel:-
a=ssrc:2322705154 label:4c46546f-7651-420e-b1af-8754bd3ea3ad
a=ssrc:2857601720 cname:ZmMkzc9v9XyhMLOi
a=ssrc:2857601720 msid:- 4c46546f-7651-420e-b1af-8754bd3ea3ad
a=ssrc:2857601720 mslabel:-
a=ssrc:2857601720 label:4c46546f-7651-420e-b1af-8754bd3ea3ad

the sdp answer:
setRemoteDescription (type: "answer", 2 sections)
Copy description to clipboard
v=0 (5 more lines)
o=- 1495799811084970 1495799811084970 IN IP4 0.0.0.0
s=-
t=0 0
a=msid-semantic: WMS
a=group:BUNDLE 0
m=video 9 UDP/TLS/RTP/SAVPF 127 121 (24 more lines) mid=0
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 com fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=127
c=IN IP4 0.0.0.0
a=sendonly
a=mid:0
a=rtcp-mux
a=ice-ufrag:iBLd
a=ice-pwd:s31NZ3bzksBs3+DvMAvko9
a=ice-options:trickle
a=fingerprint:sha-256 52:CB:F9:3D:51:E0:9A:94:EC:01:86:F5:11:90:17:05:C3:42:ED:A5:41:27:E2:EA:8A:B1:AC:29:BC:2F:19:C4
a=setup:passive
a=candidate:1 1 udp 2015363327 192.168.119.128 58364 typ host
a=candidate:2 1 udp 1015021823 192.168.119.128 0 typ host
a=candidate:3 1 udp 1010827519 192.168.119.128 58373 typ host
a=candidate:7 1 udp 1679819007 183.134.94.123 59217 typ srflx
a=candidate:8 1 udp 847249663 183.134.94.123 0 typ srflx
a=candidate:9 1 udp 843055359 183.134.94.123 58373 typ srflx

chrome webrtc internal debug:
image

Error during make

I cloned the repository and ran the third party installation script.
I created a build folder and ran cmake .. inside it, everything ok.
When I run the make command I find several errors, the first of which is:

dtls_srtp.c:62:3: error: unknown type name 'mbedtls_sha256_context'; did you mean 'mbedtls_sha512_context'?
   62 | mbedtls_sha256_context sha256_ctx;

the others:

dtls_srtp.c:239:53: error: unknown type name ‘mbedtls_ssl_key_export_type’; did you mean ‘mbedtls_ssl_export_keys_t’?
  239 | static void dtls_srtp_key_derivation(void *context, mbedtls_ssl_key_export_type secret_type,

dtls_srtp.c:341:51: error: ‘dtls_srtp_key_derivation’ undeclared (first use in this function)
  341 |   mbedtls_ssl_set_export_keys_cb(&dtls_srtp->ssl, dtls_srtp_key_derivation, dtls_srtp);

Stack corruption if rtp packet size is 1400

Hi @sepfy !
I found an issue in surveillance example which possibly affects overall pear usage.
Default mtu size of rtph264pay is 1400 url
RTP packet buffer size is 1400 also url
peer_connection_send_rtp_packet uses srtp_protect inside, which writes outside of provided buffer, which leads to stack corruption: note in libsrtp docs.
I think to avoid this the only option is to inreased buffer size, but I cannot deduce how huge it should be.
Please review this problem.

Permissions and candidates

Hello,
I'm playing with libpeer running on an ESP32 and I'm noticing some interesting behavior. I'm running Chrome and if I give the page permission to use the microphone, it's able to connect. It generates 8 candidates in the sdp answer, including IPV4 candidates, but it takes about 10 seconds to generate all of these candidates. But if I don't give it permission, it only generates 2 mdns candidates and 2 IPV6 candidates -- it takes very little time to generate the candidates, and it won't connect.

Digging into this some more, it has to do with mdns candidates... in ports.c in ports_resolve_mdns_host, it successfully gets the address, but returns -1. Fixing this by returning 0 the connection proceeds and I can send data. (nice! and great work btw, getting mdns working except for this tiny issue on esp32. :)

I'm curious if anyone is seeing the huge delay with generating the answer with the microphone permissions enabled. I've tried it on Chrome running in Linux and Windows and the delays are similarly long. I'm guessing it's a Chrome issue though.

thanks :)

Running Surveillance Example on Pi3

Hi Sepfy,
I started of with video on demand , got that to work just after the change was made to the h264_packetizer.c(102 --> 127) . After I went through the issue list.

Now trying the Surveillance example . I am using a C270 Logitech camera connected over USB:

This below are supported formats of camera:
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture

    [0]: 'YUYV' (YUYV 4:2:2)
    [1]: 'MJPG' (Motion-JPEG, compressed)

The gstream pipeleine setting I use is this:
const char PIPE_LINE[] = "v4l2src device=/dev/video0 ! videoconvert ! video/-raw,width=544,height=288,framerate=10/1 ! v4l2h264enc ! h264parse ! mp4mux ! appsink name=peer-connection-sink";

Just to very above setting work fine dumped stream to mp4 file and it plays back just fine like so:
gst-launch-1.0 -e v4l2src device=/dev/video0 ! videoconvert ! video/-raw,width=544,height=288,framerate=10/1 ! v4l2h264enc ! h264parse ! mp4mux ! filesink location=video.mp4

My problem now is when i run the sample I keep getting this error

./examples/surveillance/surveillance
Get offer from singaling
[INFO /home/pi/myApp/pear/src/dtls_transport.c:291] Remote fingerprint E1:24:F6:04:0E:80:B2:04:AE:3C:6C:18:1B:CD:48:63:A3:97:82:A1:DC:78:C5:E3:07:6B:70:E3:DA:8D:70:03
[INFO /home/pi/myApp/pear/src/dtls_transport.c:292] Local fingerprint 3C:7D:45:8A:DE:52:26:07:49:89:58:B4:8E:B9:E6:44:5E:CD:D4:60:88:4E:32:ED:9B:5C:8D:0C:FD:62:6C:BA
[INFO /home/pi/myApp/pear/src/dtls_transport.c:331] Created inbound SRTP session
[INFO /home/pi/myApp/pear/src/dtls_transport.c:337] Created outbound SRTP session

(surveillance:1510): GLib-GObject-CRITICAL **: 20:26:01.074: g_object_set: assertion 'G_IS_OBJECT (object)' failed

Any hints!!!!

Question

Why is it that in the video on demand application in WebRTC, when a packet is dropped, the data on the web side only experiences buffering, whereas in the surveillance application, the web side receives video with broken frames?

Not support multi-session

I see PEAR library only supports single session(tab on website).
Detail:
-session 1( 1 tab on Google Chrome: http://0.0.0.0:8000/): everything is working properly. Ex: DataChannel oke, i can send messege and receive in callback function on_message(): "Got message ..."
-session 2( 1 tab another on Google Chrome: http://0.0.0.0:8000/): error occurred.
+Work properly only with session 2.
+session 1: error. Everything stop. EX: I can't send and receive message.

==>So exactly does the library support multiple sessions?
Example help me how to create Multi-session for PeerConnection. Thank you for your help.

IPv6 support

I'm noticing that some devices (phones) only have ipv6 addresses available. What is needed to support ipv6? Here's what I see:

  1. Add ipv6 support to open, bind, sendto, etc. in udp.c, and address.c.
  2. Get ipv6 addresses (local and global?) from device.
  3. ipv6 STUN
  4. Generate ipv6 ice candidates and an ipv6 reflexive candidate if needed.
  5. Generate candidate pairs by only matching local ipv4s to remote ipv4s and local ipv6s to remote ipv6s.

I feel like I can give these a try, but there are probably other things that I haven't thought of -- let me know your thoughts :)

thanks!

Memory Leak on the gstreamer example

When running the gstreamer example on a Pi Zero W , I noticed that the application was slowly but surely increasing it's memory usage, from around 7% as displayed on the top command, to around 70% when the PI crashed after 15 minutes or so. The fix is very simple, you need to unmap the gst buffer once you are done with it.

I've opened a PR #9

mdns?

Hello,
I'm using an esp32-s3 with OV2640 camera. I have the demo working when I connect from within the local network. (pointing browser to https://sepfy.github.io/webrtc/?deviceId=esp32-xxxxxxxxxxxxxxxxxx) --- awesome :)

One problem I'm having is when I try to connect from outside the local network, I get the console message:

WARN /home/rich/ringtail/libpeer/src/ports.c 118 ESP_ERR_NOT_FOUND: Host was not found!

Which says that it's having trouble resolving the mdns address, which I guess isn't too surprising... I'm wondering the best way to try to track down what's going wrong in the connection (?)

thanks!

whip的esp32s3编译报错

作者你好,我测试whip模式,无法通过编译,帮忙看看是否有什么需要注意的地方?

以下是报错信息

[993/1005] Building C object esp-idf/peer/CMakeFiles/.../Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c.obj
FAILED: esp-idf/peer/CMakeFiles/__idf_peer.dir/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c.obj
/Users/qiuzhouwei/Sources/esp-idf/tools/tools/xtensa-esp32s3-elf/esp-12.2.0_20230208/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-gcc -DESP_PLATFORM -DHAVE_CONFIG_H -DIDF_VER="v5.1-dirty" -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3/build/config -I/Users/qiuzhouwei/Sources/libpeer/src -I/Users/qiuzhouwei/Sources/libpeer/src/transports -I/Users/qiuzhouwei/Sources/libpeer/third_party/coreHTTP/source/include -I/Users/qiuzhouwei/Sources/libpeer/third_party/coreHTTP/source/interface -I/Users/qiuzhouwei/Sources/libpeer/third_party/coreHTTP/source/dependency/3rdparty/llhttp/include -I/Users/qiuzhouwei/Sources/libpeer/third_party/coreMQTT/source/include -I/Users/qiuzhouwei/Sources/libpeer/third_party/coreMQTT/source/interface -I/Users/qiuzhouwei/Sources/esp-idf/components/newlib/platform_include -I/Users/qiuzhouwei/Sources/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/Users/qiuzhouwei/Sources/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/Users/qiuzhouwei/Sources/esp-idf/components/freertos/esp_additions/include/freertos -I/Users/qiuzhouwei/Sources/esp-idf/components/freertos/esp_additions/include -I/Users/qiuzhouwei/Sources/esp-idf/components/freertos/esp_additions/arch/xtensa/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_hw_support/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_hw_support/include/soc -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_hw_support/include/soc/esp32s3 -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_hw_support/port/esp32s3/. -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_hw_support/port/esp32s3/private_include -I/Users/qiuzhouwei/Sources/esp-idf/components/heap/include -I/Users/qiuzhouwei/Sources/esp-idf/components/log/include -I/Users/qiuzhouwei/Sources/esp-idf/components/soc/include -I/Users/qiuzhouwei/Sources/esp-idf/components/soc/esp32s3 -I/Users/qiuzhouwei/Sources/esp-idf/components/soc/esp32s3/include -I/Users/qiuzhouwei/Sources/esp-idf/components/hal/esp32s3/include -I/Users/qiuzhouwei/Sources/esp-idf/components/hal/include -I/Users/qiuzhouwei/Sources/esp-idf/components/hal/platform_port/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_rom/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_rom/include/esp32s3 -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_rom/esp32s3 -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_common/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_system/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_system/port/soc -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_system/port/include/private -I/Users/qiuzhouwei/Sources/esp-idf/components/xtensa/include -I/Users/qiuzhouwei/Sources/esp-idf/components/xtensa/esp32s3/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/include/apps -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/include/apps/sntp -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/lwip/src/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/port/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/port/freertos/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/port/esp32xx/include -I/Users/qiuzhouwei/Sources/esp-idf/components/lwip/port/esp32xx/include/arch -I/Users/qiuzhouwei/Sources/esp-idf/components/mbedtls/port/include -I/Users/qiuzhouwei/Sources/esp-idf/components/mbedtls/mbedtls/include -I/Users/qiuzhouwei/Sources/esp-idf/components/mbedtls/mbedtls/library -I/Users/qiuzhouwei/Sources/esp-idf/components/mbedtls/esp_crt_bundle/include -I/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3/components/srtp/esp-port -I/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3/components/srtp/libsrtp/include -I/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3/components/srtp/libsrtp/crypto/include -I/Users/qiuzhouwei/Sources/esp-idf/components/json/cJSON -I/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3/managed_components/espressif__mdns/include -I/Users/qiuzhouwei/Sources/esp-idf/components/console -I/Users/qiuzhouwei/Sources/esp-idf/components/vfs/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_netif/include -I/Users/qiuzhouwei/Sources/esp-idf/components/esp_event/include -mlongcalls -fdiagnostics-color=always -DESP32 -DHTTP_DO_NOT_USE_CUSTOM_CONFIG -DMQTT_DO_NOT_USE_CUSTOM_CONFIG -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fmacro-prefix-map=/Users/qiuzhouwei/Sources/libpeer/examples/esp32s3=. -fmacro-prefix-map=/Users/qiuzhouwei/Sources/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/peer/CMakeFiles/__idf_peer.dir/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c.obj -MF esp-idf/peer/CMakeFiles/__idf_peer.dir/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c.obj.d -o esp-idf/peer/CMakeFiles/__idf_peer.dir/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c.obj -c /Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c: In function 'dtls_srtp_selfsign_cert':
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:123:3: error: implicit declaration of function 'mbedtls_x509write_crt_set_serial'; did you mean 'mbedtls_x509write_crt_set_serial_raw'? [-Werror=implicit-function-declaration]
123 | mbedtls_x509write_crt_set_serial(&crt, &serial);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| mbedtls_x509write_crt_set_serial_raw
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c: In function 'dtls_srtp_init':
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:147:16: error: unknown type name 'mbedtls_ssl_srtp_profile'
147 | static const mbedtls_ssl_srtp_profile default_profiles[] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:148:4: error: 'MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80' undeclared (first use in this function)
148 | MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:148:4: note: each undeclared identifier is reported only once for each function it appears in
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:149:4: error: 'MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32' undeclared (first use in this function)
149 | MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:150:4: error: 'MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80' undeclared (first use in this function)
150 | MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:151:4: error: 'MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32' undeclared (first use in this function)
151 | MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:152:4: error: 'MBEDTLS_TLS_SRTP_UNSET' undeclared (first use in this function); did you mean 'MBEDTLS_TLS_EXT_SCT'?
152 | MBEDTLS_TLS_SRTP_UNSET
| ^~~~~~~~~~~~~~~~~~~~~~
| MBEDTLS_TLS_EXT_SCT
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:197:5: error: implicit declaration of function 'mbedtls_ssl_conf_dtls_cookies'; did you mean 'mbedtls_ssl_conf_dn_hints'? [-Werror=implicit-function-declaration]
197 | mbedtls_ssl_conf_dtls_cookies(&dtls_srtp->conf, mbedtls_ssl_cookie_write, mbedtls_ssl_cookie_check, &dtls_srtp->cookie_ctx);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| mbedtls_ssl_conf_dn_hints
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:211:3: error: implicit declaration of function 'mbedtls_ssl_conf_dtls_srtp_protection_profiles' [-Werror=implicit-function-declaration]
211 | mbedtls_ssl_conf_dtls_srtp_protection_profiles(&dtls_srtp->conf, default_profiles);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:213:3: error: implicit declaration of function 'mbedtls_ssl_conf_srtp_mki_value_supported' [-Werror=implicit-function-declaration]
213 | mbedtls_ssl_conf_srtp_mki_value_supported(&dtls_srtp->conf, MBEDTLS_SSL_DTLS_SRTP_MKI_UNSUPPORTED);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c: In function 'dtls_srtp_handshake_server':
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:367:5: error: implicit declaration of function 'mbedtls_ssl_set_client_transport_id'; did you mean 'mbedtls_ssl_conf_transport'? [-Werror=implicit-function-declaration]
367 | mbedtls_ssl_set_client_transport_id(&dtls_srtp->ssl, client_ip, sizeof(client_ip));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| mbedtls_ssl_conf_transport
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c: In function 'dtls_srtp_handshake':
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:456:3: error: unknown type name 'mbedtls_dtls_srtp_info'
456 | mbedtls_dtls_srtp_info dtls_srtp_negotiation_result;
| ^~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:457:3: error: implicit declaration of function 'mbedtls_ssl_get_dtls_srtp_negotiation_result' [-Werror=implicit-function-declaration]
457 | mbedtls_ssl_get_dtls_srtp_negotiation_result(&dtls_srtp->ssl, &dtls_srtp_negotiation_result);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c: At top level:
/Users/qiuzhouwei/Sources/libpeer/src/dtls_srtp.c:79:12: warning: 'dtls_srtp_cert_verify' defined but not used [-Wunused-function]
79 | static int dtls_srtp_cert_verify(void *data, mbedtls_x509_crt *crt, int depth, uint32_t *flags) {
| ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
[996/1005] Building C object esp-idf/espressif__mdns/CMakeFiles/__idf_espressif__mdns.dir/mdns.c.obj
ninja: build stopped: subcommand failed.

这个开源代码不支持QOS

这个开源代码不支持QOS,仅仅简单处理了RR。我在pear的基础上实现了一个QOS,包括SR,RR,REMB,NOACK,PLI,FIR等,也支持OPUS的in-band FEC,但代码风格已经和pear有很大的区别了,希望pear的作者加入QOS功能,特别是GCC功能。

STUN server address and working without STUN at all

Hello @sepfy !
In peer_connection.c I see following:

static const gchar *STUN_ADDR = "18.191.223.12";
static const guint STUN_PORT = 3478;

What is this server?
It takes approx 20 seconds to establish connection when I use these settings. If I use stun.l.google.com:19302 instead connection gets established in a second.

And what about working in local isolated network? How to set everything up correctly? What STUN server settings shoul I use? Is it possible to avoid using STUN server?

libpeer does not work in Firefox, and takes ~40s to load in Chrome

I strongly suspect the two issues in the title are related, hence grouping them to the same ticket.

I've run into it during the course of implementing #53, and after some investigation, I believe I may have found a clue, which is related to another issue.


First, the other issue; (which lead to the clue; I'm putting it here because I believe it's part of the solution, even though it's not the entire one)
The following line in agent.c is a no-op:

  // remove last \n
  description[strlen(description)] = '\0';

Since strlen(description) is the length of the string, foo[strlen(foo)] will always be \0. I assume you meant strlen(description) - 1.

However, there is also a problem in ice_candidate_to_description(...), namely:

  snprintf(description, length, "a=candidate:%d %d %s %" PRIu32 " %d.%d.%d.%d %d typ %s\n",

... I'm pretty sure that should have been a \r\n, which would make the other line strlen(description) - 2.

In other words: (diff minimized for brevity)

--- a/src/ice.c
+++ b/src/ice.c
@@ ... @@ void ice_candidate_to_description(IceCandidate *candidate, char *description, in
-  snprintf(description, length, "a=candidate:%d %d %s %" PRIu32 " %d.%d.%d.%d %d typ %s\n",
+  snprintf(description, length, "a=candidate:%d %d %s %" PRIu32 " %d.%d.%d.%d %d typ %s\r\n",
--- a/src/agent.c
+++ b/src/agent.c
@@ ... @@ void agent_get_local_description(Agent *agent, char *description, int length) {
   // remove last \n
-  description[strlen(description)] = '\0';
+  description[strlen(description) - 2] = '\0';

Fixing the above issue reveals an error message in Firefox (as opposed to it simply dropping the connection after a few seconds):

Uncaught (in promise) DOMException: SIPCC Failed to parse SDP: SDP Parse Error on line 17: Warning: Invalid token ordering detected, token c= found after token a=
SDP Parse Error on line 29: Warning: Invalid token ordering detected, token c= found after token a=
SDP Parse Error on line 29: c= line specified twice at same level, parse failed.
SDP Parse Error on line 46: End of line beyond end of buffer.

... comparing with other (working) WebRTC implementations, it looks the c=... line must immediately follow the m=... line, whereas libpeer intermixes them:

libpeer (non-working)

...
m=application 50712 UDP/DTLS/SCTP webrtc-datachannel
a=mid:datachannel
a=sctp-port:5000
c=IN IP4 0.0.0.0
... (other a=... entries)

https://test.antmedia.io:5443/LiveApp/webrtc-test-tool.html (working)

...
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
... (other a=... entries)

I'll continue the investigation, but perhaps this'll be useful to someone in the meantime.

Working over TURN

Hello @sepfy !
I am trying to use Pear to work over TURN server. I use Coturn but unable to make it work. Do you have any experience with this? Maybe you have example?
Thanks!

CMake Error at src/CMakeLists.txt:29 (install): install TARGETS given no ARCHIVE DESTINATION for static library target. "pear".

my cmake version is as follows:
cmake --version
cmake version 3.8.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).

when i run cmake .. , i encounter the error:
CMake Error at src/CMakeLists.txt:29 (install):
install TARGETS given no ARCHIVE DESTINATION for static library target
"pear".

-- Configuring incomplete, errors occurred!
See also "/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeOutput.log".

I am looking for your help. Thank you very much !

Here is CMakeOutput.log :
The system is: Linux - 5.4.0-150-generic - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/cc
Build flags:
Id flags:

The output was:
0

Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"

The C compiler identification is GNU, found in "/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/3.8.2/CompilerIdC/a.out"

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++
Build flags:
Id flags:

The output was:
0

Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"

The CXX compiler identification is GNU, found in "/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/3.8.2/CompilerIdCXX/a.out"

Determining if the C compiler works passed with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_d0408/fast"
/usr/bin/make -f CMakeFiles/cmTC_d0408.dir/build.make CMakeFiles/cmTC_d0408.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_d0408.dir/testCCompiler.c.o
/usr/bin/cc -o CMakeFiles/cmTC_d0408.dir/testCCompiler.c.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_d0408
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d0408.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_d0408.dir/testCCompiler.c.o -o cmTC_d0408
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Detecting C compiler ABI info compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_301c0/fast"
/usr/bin/make -f CMakeFiles/cmTC_301c0.dir/build.make CMakeFiles/cmTC_301c0.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o
/usr/bin/cc -o CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -c /opt/gcc_720/mips-gcc720-glibc229-r5.1.4/share/cmake-3.8/Modules/CMakeCCompilerABI.c
Linking C executable cmTC_301c0
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_301c0.dir/link.txt --verbose=1
/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -o cmTC_301c0
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu118.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1
18.04)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_301c0' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccmQHbfe.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_301c0 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_301c0' '-mtune=generic' '-march=x86-64'
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Parsed C implicit link information from above output:
link line regex: [^( |.[/])(ld|([^/]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp]
ignore line: []
ignore line: [Run Build Command:"/usr/bin/make" "cmTC_301c0/fast"]
ignore line: [/usr/bin/make -f CMakeFiles/cmTC_301c0.dir/build.make CMakeFiles/cmTC_301c0.dir/build]
ignore line: [make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp']
ignore line: [Building C object CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o]
ignore line: [/usr/bin/cc -o CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -c /opt/gcc_720/mips-gcc720-glibc229-r5.1.4/share/cmake-3.8/Modules/CMakeCCompilerABI.c]
ignore line: [Linking C executable cmTC_301c0]
ignore line: [/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_301c0.dir/link.txt --verbose=1]
ignore line: [/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -o cmTC_301c0 ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/cc]
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper]
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none]
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
ignore line: [Target: x86_64-linux-gnu]
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu118.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
ignore line: [Thread model: posix]
ignore line: [gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1
18.04) ]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_301c0' '-mtune=generic' '-march=x86-64']
link line: [ /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccmQHbfe.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_301c0 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o]
arg [/usr/lib/gcc/x86_64-linux-gnu/7/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/ccmQHbfe.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [--build-id] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [--as-needed] ==> ignore
arg [-export-dynamic] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-pie] ==> ignore
arg [-znow] ==> ignore
arg [-zrelro] ==> ignore
arg [-o] ==> ignore
arg [cmTC_301c0] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o] ==> ignore
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib]
arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
arg [-L/lib/../lib] ==> dir [/lib/../lib]
arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..]
arg [CMakeFiles/cmTC_301c0.dir/CMakeCCompilerABI.c.o] ==> ignore
arg [-lgcc] ==> lib [gcc]
arg [--push-state] ==> ignore
arg [--as-needed] ==> ignore
arg [-lgcc_s] ==> lib [gcc_s]
arg [--pop-state] ==> ignore
arg [-lc] ==> lib [c]
arg [-lgcc] ==> lib [gcc]
arg [--push-state] ==> ignore
arg [--as-needed] ==> ignore
arg [-lgcc_s] ==> lib [gcc_s]
arg [--pop-state] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
remove lib [gcc]
remove lib [gcc_s]
remove lib [gcc]
remove lib [gcc_s]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7] ==> [/usr/lib/gcc/x86_64-linux-gnu/7]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> [/usr/lib]
collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
collapse library dir [/lib/../lib] ==> [/lib]
collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> [/usr/lib]
implicit libs: [c]
implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
implicit fwks: []

Detecting C [-std=c11] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_340ed/fast"
/usr/bin/make -f CMakeFiles/cmTC_340ed.dir/build.make CMakeFiles/cmTC_340ed.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_340ed.dir/feature_tests.c.o
/usr/bin/cc -std=c11 -o CMakeFiles/cmTC_340ed.dir/feature_tests.c.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.c
Linking C executable cmTC_340ed
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_340ed.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_340ed.dir/feature_tests.c.o -o cmTC_340ed
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:1c_restrict
Feature record: C_FEATURE:1c_static_assert
Feature record: C_FEATURE:1c_variadic_macros

Detecting C [-std=c99] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_3cec3/fast"
/usr/bin/make -f CMakeFiles/cmTC_3cec3.dir/build.make CMakeFiles/cmTC_3cec3.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_3cec3.dir/feature_tests.c.o
/usr/bin/cc -std=c99 -o CMakeFiles/cmTC_3cec3.dir/feature_tests.c.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.c
Linking C executable cmTC_3cec3
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3cec3.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_3cec3.dir/feature_tests.c.o -o cmTC_3cec3
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:1c_restrict
Feature record: C_FEATURE:0c_static_assert
Feature record: C_FEATURE:1c_variadic_macros

Detecting C [-std=c90] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_01575/fast"
/usr/bin/make -f CMakeFiles/cmTC_01575.dir/build.make CMakeFiles/cmTC_01575.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_01575.dir/feature_tests.c.o
/usr/bin/cc -std=c90 -o CMakeFiles/cmTC_01575.dir/feature_tests.c.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.c
Linking C executable cmTC_01575
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_01575.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_01575.dir/feature_tests.c.o -o cmTC_01575
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:0c_restrict
Feature record: C_FEATURE:0c_static_assert
Feature record: C_FEATURE:0c_variadic_macros

Determining if the CXX compiler works passed with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_39bc1/fast"
/usr/bin/make -f CMakeFiles/cmTC_39bc1.dir/build.make CMakeFiles/cmTC_39bc1.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_39bc1.dir/testCXXCompiler.cxx.o
/usr/bin/c++ -o CMakeFiles/cmTC_39bc1.dir/testCXXCompiler.cxx.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTC_39bc1
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_39bc1.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_39bc1.dir/testCXXCompiler.cxx.o -o cmTC_39bc1
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_0fd93/fast"
/usr/bin/make -f CMakeFiles/cmTC_0fd93.dir/build.make CMakeFiles/cmTC_0fd93.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o
/usr/bin/c++ -o CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -c /opt/gcc_720/mips-gcc720-glibc229-r5.1.4/share/cmake-3.8/Modules/CMakeCXXCompilerABI.cpp
Linking CXX executable cmTC_0fd93
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0fd93.dir/link.txt --verbose=1
/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0fd93
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu118.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1
18.04)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_0fd93' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/cc6Fn8zm.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0fd93 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_0fd93' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Parsed CXX implicit link information from above output:
link line regex: [^( |.[/])(ld|([^/]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp]
ignore line: []
ignore line: [Run Build Command:"/usr/bin/make" "cmTC_0fd93/fast"]
ignore line: [/usr/bin/make -f CMakeFiles/cmTC_0fd93.dir/build.make CMakeFiles/cmTC_0fd93.dir/build]
ignore line: [make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp']
ignore line: [Building CXX object CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o]
ignore line: [/usr/bin/c++ -o CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -c /opt/gcc_720/mips-gcc720-glibc229-r5.1.4/share/cmake-3.8/Modules/CMakeCXXCompilerABI.cpp]
ignore line: [Linking CXX executable cmTC_0fd93]
ignore line: [/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0fd93.dir/link.txt --verbose=1]
ignore line: [/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0fd93 ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper]
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none]
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
ignore line: [Target: x86_64-linux-gnu]
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu118.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
ignore line: [Thread model: posix]
ignore line: [gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1
18.04) ]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_0fd93' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
link line: [ /usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/cc6Fn8zm.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0fd93 /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o]
arg [/usr/lib/gcc/x86_64-linux-gnu/7/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/cc6Fn8zm.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [--build-id] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [--as-needed] ==> ignore
arg [-export-dynamic] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-pie] ==> ignore
arg [-znow] ==> ignore
arg [-zrelro] ==> ignore
arg [-o] ==> ignore
arg [cmTC_0fd93] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o] ==> ignore
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib]
arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
arg [-L/lib/../lib] ==> dir [/lib/../lib]
arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
arg [-L/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..]
arg [CMakeFiles/cmTC_0fd93.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
arg [-lstdc++] ==> lib [stdc++]
arg [-lm] ==> lib [m]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [-lc] ==> lib [c]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [/usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o] ==> ignore
arg [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o] ==> ignore
remove lib [gcc_s]
remove lib [gcc]
remove lib [gcc_s]
remove lib [gcc]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7] ==> [/usr/lib/gcc/x86_64-linux-gnu/7]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib] ==> [/usr/lib]
collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
collapse library dir [/lib/../lib] ==> [/lib]
collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/7/../../..] ==> [/usr/lib]
implicit libs: [stdc++;m;c]
implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
implicit fwks: []

Detecting CXX [-std=c++1z] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_2ed16/fast"
/usr/bin/make -f CMakeFiles/cmTC_2ed16.dir/build.make CMakeFiles/cmTC_2ed16.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_2ed16.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++1z -o CMakeFiles/cmTC_2ed16.dir/feature_tests.cxx.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_2ed16
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2ed16.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_2ed16.dir/feature_tests.cxx.o -o cmTC_2ed16
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:1cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:1cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:1cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:1cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:1cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:1cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:1cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
Feature record: CXX_FEATURE:1cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:1cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates

Detecting CXX [-std=c++14] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_8d20a/fast"
/usr/bin/make -f CMakeFiles/cmTC_8d20a.dir/build.make CMakeFiles/cmTC_8d20a.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_8d20a.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++14 -o CMakeFiles/cmTC_8d20a.dir/feature_tests.cxx.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_8d20a
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8d20a.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_8d20a.dir/feature_tests.cxx.o -o cmTC_8d20a
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:1cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:1cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:1cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:1cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:1cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:1cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:1cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
Feature record: CXX_FEATURE:1cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:1cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates

Detecting CXX [-std=c++11] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_006ce/fast"
/usr/bin/make -f CMakeFiles/cmTC_006ce.dir/build.make CMakeFiles/cmTC_006ce.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_006ce.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++11 -o CMakeFiles/cmTC_006ce.dir/feature_tests.cxx.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_006ce
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_006ce.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_006ce.dir/feature_tests.cxx.o -o cmTC_006ce
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:0cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:0cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:0cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:0cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:0cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:0cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:0cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
Feature record: CXX_FEATURE:0cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:0cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates

Detecting CXX [-std=c++98] compiler features compiled with the following output:
Change Dir: /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_52cdb/fast"
/usr/bin/make -f CMakeFiles/cmTC_52cdb.dir/build.make CMakeFiles/cmTC_52cdb.dir/build
make[1]: Entering directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_52cdb.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++98 -o CMakeFiles/cmTC_52cdb.dir/feature_tests.cxx.o -c /home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_52cdb
/opt/gcc_720/mips-gcc720-glibc229-r5.1.4/bin/cmake -E cmake_link_script CMakeFiles/cmTC_52cdb.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_52cdb.dir/feature_tests.cxx.o -o cmTC_52cdb
make[1]: Leaving directory '/home/lzy/Downloads/PearWR/pear/cmake/CMakeFiles/CMakeTmp'

Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:0cxx_alias_templates
Feature record: CXX_FEATURE:0cxx_alignas
Feature record: CXX_FEATURE:0cxx_alignof
Feature record: CXX_FEATURE:0cxx_attributes
Feature record: CXX_FEATURE:0cxx_attribute_deprecated
Feature record: CXX_FEATURE:0cxx_auto_type
Feature record: CXX_FEATURE:0cxx_binary_literals
Feature record: CXX_FEATURE:0cxx_constexpr
Feature record: CXX_FEATURE:0cxx_contextual_conversions
Feature record: CXX_FEATURE:0cxx_decltype
Feature record: CXX_FEATURE:0cxx_decltype_auto
Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:0cxx_default_function_template_args
Feature record: CXX_FEATURE:0cxx_defaulted_functions
Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:0cxx_delegating_constructors
Feature record: CXX_FEATURE:0cxx_deleted_functions
Feature record: CXX_FEATURE:0cxx_digit_separators
Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
Feature record: CXX_FEATURE:0cxx_explicit_conversions
Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
Feature record: CXX_FEATURE:0cxx_extern_templates
Feature record: CXX_FEATURE:0cxx_final
Feature record: CXX_FEATURE:0cxx_func_identifier
Feature record: CXX_FEATURE:0cxx_generalized_initializers
Feature record: CXX_FEATURE:0cxx_generic_lambdas
Feature record: CXX_FEATURE:0cxx_inheriting_constructors
Feature record: CXX_FEATURE:0cxx_inline_namespaces
Feature record: CXX_FEATURE:0cxx_lambdas
Feature record: CXX_FEATURE:0cxx_lambda_init_captures
Feature record: CXX_FEATURE:0cxx_local_type_template_args
Feature record: CXX_FEATURE:0cxx_long_long_type
Feature record: CXX_FEATURE:0cxx_noexcept
Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
Feature record: CXX_FEATURE:0cxx_nullptr
Feature record: CXX_FEATURE:0cxx_override
Feature record: CXX_FEATURE:0cxx_range_for
Feature record: CXX_FEATURE:0cxx_raw_string_literals
Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
Feature record: CXX_FEATURE:0cxx_return_type_deduction
Feature record: CXX_FEATURE:0cxx_right_angle_brackets
Feature record: CXX_FEATURE:0cxx_rvalue_references
Feature record: CXX_FEATURE:0cxx_sizeof_member
Feature record: CXX_FEATURE:0cxx_static_assert
Feature record: CXX_FEATURE:0cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:0cxx_thread_local
Feature record: CXX_FEATURE:0cxx_trailing_return_types
Feature record: CXX_FEATURE:0cxx_unicode_literals
Feature record: CXX_FEATURE:0cxx_uniform_initialization
Feature record: CXX_FEATURE:0cxx_unrestricted_unions
Feature record: CXX_FEATURE:0cxx_user_literals
Feature record: CXX_FEATURE:0cxx_variable_templates
Feature record: CXX_FEATURE:0cxx_variadic_macros
Feature record: CXX_FEATURE:0cxx_variadic_templates

That is all.

Can't compile for Arduino ESP32.

Hi!

Do you plan to port it to Arduino also?
I'm really interested in the data channel part of the web rtc.
Thank you very much.

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.