Closed brgavino closed 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.
@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.
@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?
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.
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.
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.
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?
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.
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.
Changes are now not platform specific and apply for situations where llvm is used, which for now is only on one arch.
Apologies, I had a validation build but used the wrong version on accident, so didn't catch the error. Thanks for the catch!
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