open-webrtc-toolkit / owt-client-native

Open WebRTC Toolkit client SDK for native Windows/Linux/iOS applications.
https://01.org/open-webrtc-toolkit
Apache License 2.0
391 stars 180 forks source link

Ensure llvm builds don't use libc++ #554

Closed brgavino closed 3 years ago

brgavino commented 3 years ago

Cross compiling support in webrtc is only supported using llvm/clang, and by default uses a version of clang that is prebuilt by google. This version also enables libc++ (clang) experimental features (from c++11) in nested namespaces, which can conflict with other binaries built with the system clang tool/toolchain using msvc++ libraries. Disabling the experimental features, and disabling using the custom llvm/clang allows client libraries compiled on the same win system using the msvcpp toolchain

jianjunz commented 3 years ago

OWT SDK for Windows uses MSVC by default. Can we just simply use is_clang=false for arm build?

@taste1981, please let us know if you have any thoughts on these flags. Thanks.

brgavino commented 3 years ago

@jianjunz Yes I really wanted to just use MSVC, but the dependencies don't seem to be maintained to support this. Referenced the below from chromium and ended up with this working config. Even though MSVC might be supported, it is only supported for config Win x86_64. Might need patches upstream to get to a working config with MSVC instead of clang for arm/64

Windows clang is the default compiler on Windows. It uses MSVC's SDK, so you still need to have Visual Studio with C++ support installed.

taste1981 commented 3 years ago

@jianjunz Yes I really wanted to just use MSVC, but the dependencies don't seem to be maintained to support this. Referenced the below from chromium and ended up with this working config. Even though MSVC might be supported, it is only supported for config Win x86_64. Might need patches upstream to get to a working config with MSVC instead of clang for arm/64

Windows clang is the default compiler on Windows. It uses MSVC's SDK, so you still need to have Visual Studio with C++ support installed.

what dependency is having issue with MSVC support when building OWT for arm-win?

brgavino commented 3 years ago

I believe it was ffmpeg libav


From: Johny Qiu @.> Sent: Tuesday, August 24, 2021 5:41:21 PM To: open-webrtc-toolkit/owt-client-native @.> Cc: Gavino, Brandon @.>; Author @.> Subject: Re: [open-webrtc-toolkit/owt-client-native] Ensure winarm64 builds don't use libc++ (#554)

@jianjunzhttps://github.com/jianjunz Yes I really wanted to just use MSVC, but the dependencies don't seem to be maintained to support this. Referenced the below from chromium and ended up with this working config. Even though MSVC might be supported, it is only supported for config Win x86_64. Might need patches upstream to get to a working config with MSVC instead of clang for arm/64

Windows clang is the default compiler on Windows. It uses MSVC's SDK, so you still need to have Visual Studio with C++ support installed.

what dependency is having issue with MSVC support when building OWT for arm-win?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/open-webrtc-toolkit/owt-client-native/pull/554#issuecomment-905071891, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AANUI2K36NXXJSZ4UGEKZODT6Q33DANCNFSM5CU7TBGQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

taste1981 commented 3 years ago

I believe it was ffmpeg libav ____ From: Johny Qiu @.> Sent: Tuesday, August 24, 2021 5:41:21 PM To: open-webrtc-toolkit/owt-client-native @.> Cc: Gavino, Brandon @.>; Author @.> Subject: Re: [open-webrtc-toolkit/owt-client-native] Ensure winarm64 builds don't use libc++ (#554) @jianjunzhttps://github.com/jianjunz Yes I really wanted to just use MSVC, but the dependencies don't seem to be maintained to support this. Referenced the below from chromium and ended up with this working config. Even though MSVC might be supported, it is only supported for config Win x86_64. Might need patches upstream to get to a working config with MSVC instead of clang for arm/64 https://chromium.googlesource.com/external/webrtc/+/06b8f7ea326af3c554755048b10e3e422f019ffa/g3doc/supported-platforms-and-compilers.md https://source.chromium.org/chromium/chromium/src/+/main:docs/clang.md Windows clang is the default compiler on Windows. It uses MSVC's SDK, so you still need to have Visual Studio with C++ support installed. what dependency is having issue with MSVC support when building OWT for arm-win? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub<#554 (comment)>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AANUI2K36NXXJSZ4UGEKZODT6Q33DANCNFSM5CU7TBGQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

specify ffmpeg_branding="None" and rtc_use_h264=false in gn arg list to avoid building ffmpeg. I suppose you don't need that.

brgavino commented 3 years ago

For the specific application yes -but then for general builds this could apply?


From: Johny Qiu @.> Sent: Tuesday, August 24, 2021 5:49:31 PM To: open-webrtc-toolkit/owt-client-native @.> Cc: Gavino, Brandon @.>; Author @.> Subject: Re: [open-webrtc-toolkit/owt-client-native] Ensure winarm64 builds don't use libc++ (#554)

I believe it was ffmpeg libav … ____ From: Johny Qiu @.> Sent: Tuesday, August 24, 2021 5:41:21 PM To: open-webrtc-toolkit/owt-client-native @.> Cc: Gavino, Brandon @.>; Author @.> Subject: Re: [open-webrtc-toolkit/owt-client-native] Ensure winarm64 builds don't use libc++ (#554https://github.com/open-webrtc-toolkit/owt-client-native/pull/554) @jianjunzhttps://github.com/jianjunzhttps://github.com/jianjunz Yes I really wanted to just use MSVC, but the dependencies don't seem to be maintained to support this. Referenced the below from chromium and ended up with this working config. Even though MSVC might be supported, it is only supported for config Win x86_64. Might need patches upstream to get to a working config with MSVC instead of clang for arm/64 https://chromium.googlesource.com/external/webrtc/+/06b8f7ea326af3c554755048b10e3e422f019ffa/g3doc/supported-platforms-and-compilers.md https://source.chromium.org/chromium/chromium/src/+/main:docs/clang.md Windows clang is the default compiler on Windows. It uses MSVC's SDK, so you still need to have Visual Studio with C++ support installed. what dependency is having issue with MSVC support when building OWT for arm-win? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub<#554 (comment)https://github.com/open-webrtc-toolkit/owt-client-native/pull/554#issuecomment-905071891>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AANUI2K36NXXJSZ4UGEKZODT6Q33DANCNFSM5CU7TBGQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

specify ffmpeg_branding="None" and rtc_use_h264=false in gn arg list to avoid building ffmpeg. I suppose you don't need that.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/open-webrtc-toolkit/owt-client-native/pull/554#issuecomment-905075687, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AANUI2MIESW2NO3RCU5NZW3T6Q4ZXANCNFSM5CU7TBGQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

taste1981 commented 3 years ago

For the specific application yes -but then for general builds this could apply?

Yes it can. But still I suggest msvc build issue be fixed for arm64 as well in the same PR?

brgavino commented 3 years ago

We would still need to change the web transport toolchain as well to use msvc by default, or update the readme for that. While libav was just the first dependency to fail others may. I didn't spend time analyzing the others due to the chromium author comments above


From: Johny Qiu @.> Sent: Tuesday, August 24, 2021 5:55:35 PM To: open-webrtc-toolkit/owt-client-native @.> Cc: Gavino, Brandon @.>; Author @.> Subject: Re: [open-webrtc-toolkit/owt-client-native] Ensure winarm64 builds don't use libc++ (#554)

For the specific application yes -but then for general builds this could apply?

Yes it can. But still I suggest msvc build issue be fixed for arm64 as well in the same PR?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/open-webrtc-toolkit/owt-client-native/pull/554#issuecomment-905078293, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AANUI2IAEDSYBBX7JP3SXQDT6Q5QPANCNFSM5CU7TBGQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

brgavino commented 3 years ago

For the specific application yes -but then for general builds this could apply?

Yes it can. But still I suggest msvc build issue be fixed for arm64 as well in the same PR?

Is the request to close this PR to also fix MSVC builds? I don't agree that the client should attempt to use a toolchain unsupported by chromium upstream as it might lead to breaking more in the future.

brgavino commented 3 years ago

Changes are now not platform specific and apply for situations where llvm is used, which for now is only on one arch.

brgavino commented 3 years ago

Apologies, I had a validation build but used the wrong version on accident, so didn't catch the error. Thanks for the catch!