Add support to windows on ARM build#2807
Conversation
Should not this is for ARM64 native (not emulated)? When building for win32/x64 on VS2019, there are errors like: |
Yes, this is specific for ARM64 build. Perhaps we should change the wording above. The point is, that building the library using Win32 configuration should work on ARM64 machine.
Building webrtc_aec3 require to use buildtoolset v142 (#2775). I tried here using win32 setup and it builds succesfully. |
Actually not sure about "Win32" term either as it can be ambiguous with "Win32" platform in VS config manager. Perhaps let's just use "Windows on ARM" which seems to be commonly used? Also, please update the Getting Started trac wiki too about this new platform support.
Ah okay. Actually I didn't want to build libwebrtc_aec3 (no PJMEDIA_HAS_WEBRTC_AEC3 defined), but since there were about 9 linking errors with error message like below, I clicked build libwebrtc_aec3. So now there is this linking error issue. FYI, I just get the lib source, create an empty config_site.h, then build. Tried with both build toolsets v140 & v142. |
Right, #2775 misses something here. By default libwebrtc_aec3 is not included to be build. However libpjproject still reference libwebrtc_aec3 project. Since it is not build, linker error is raised. To fix the error, by default libpjproject will also need to remove libwebrtc_aec3 reference. User require to add the reference to libwebrtc_aec3 manually when when needed. |
The alternative would be to include an empty dummy file (e.g: used by libpjproject) when toolset is set to v140. And include the actual source when toolset is set to v142. This means by default, the libwebrtc_aec3 will be included to be built. |
|
Notes: libpjproject library without libwebrtc_aec3 will be built ~13Mbyte. With libwebrtc_aec3, it is ~42Mbyte. |
…t manually if libwebrtc_aec3 is needed.
nanangizz
left a comment
There was a problem hiding this comment.
Tried building for win32, x64, and ARM64 (all debug config though), looks okay.
* Add support to ARM64 configuration for win32 build * Add changes notes to webrtc and webrtc_aec3 third party sources * Remove reference to libwebrtc_aec3 from libpjproject. Add reference it manually if libwebrtc_aec3 is needed. * Fix build error on Release configuration.
Windows on ARM machine allow x86 win32 app to run without modification through emulation (ref).
This ticket will add support building the library using ARM64 specific configuration.
Requirement:
Steps to build:
pjproject-vs14-common-config.propsto v142.Note:
warning : Platform '[ARM64, 0]' referenced in the project file cannot be found.This is safe to ignore.