...
Library | Status for win-arm64 out-of-the-box |
---|---|
lcms2 | ❌ |
freetype | ❌ |
zlib | ✅ |
libwebp | ✅ |
libjpeg | ✅ |
libpng | ✅ (Pillow build is successful, but neon Neon optimization disabled) |
libimagequant | ❌ |
libtiff | ✅ |
openjpg | ✅ |
fribidi | ✅ |
...
Host project | build system | works on win-arm64 out-of-the-box | importing project |
---|---|---|---|
libpng | VS 2010 solution | ❌ | ❓ |
libpng | nmake | ✅ (arm neon Arm Neon intrinsics ignored as it assumes Win == x86) | Pillow |
Meson wrapdb | Meson | ❌ | FreeType |
...
Visual Studio
Update to Visual Studio 2019
Fix C2220 warning errors for VS2019
Add ARM64 as a new platform
nmake
Create nmake file for win-arm64 to include neon optimizations
ARM neon Neon config fix to recognise win-arm64 as a valid ARM plaftorm
...
Assembly source file requires preprocessing. Gcc granted this by default, while MSVC doesnt, so for MSVC it should be done explicitly by C preprocessor
https://github.com/mesonbuild/wrapdb/pull/205/commits/da6a13fb61f64baca0567763c51efaed9b14c41f
The assembly optimization file is preprocessed, which results empty assembly file then C intrinsic neon Neon optimization will be compiled, if the work-around is used below.
As libpng was inactive at the time I’ve created these patches (and written this summary), the ARM neon Neon config issue was fixed as a temporary work-around here
https://github.com/mesonbuild/wrapdb/pull/216/commits/a32c61a15724dfcf1af559160c7b1c1412f773d8
Even if libpng won’t explicitly support MSVC ARM64 define, we can still support ARM related source code for MSVC.
Integrate updated Meson config of libpng: https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/105/diffs?commit_id=e6e6cbf1648d4a776da0857921872f2fbc853205
...