This page doesn’t try to be a complete porting guide, just a collection of the learnt approaches during porting Python packages and 3rd party libraries.
Table of Contents |
---|
Common issues
Start with x86/x64 build as a reference and understand the "clean" build flow if possible, before trying to fix it on win-arm64.
There are cases where Windows related packages are released, but still not all tests are passing and these are suppressed on CI.
Historically Windows used to be equal to x86/x64, so Intel specific HW features are default enabled.
Example: https://github.com/ImageOptim/libimagequant/pull/66/commits/94adecb956eac74801bc035a0c403aaf44866d16
Example for a nice build error message:
Code Block xmmintrin.h(27,1): fatal error C1189: #error: This header is specific to X86 and X64 targets -> Intel Streaming SIMD Extensions (SSE) HW feature is turned on, as wrong platform was selected by one of the compiler switches.
Does the project include a Visual Studio project?
Open with VS and add ARM as new platform and try to build it.
Does the project include Arm assembly source file that could be reused for win-arm64?
MSVC compiler doesn’t call preprocessor for assembly files, like LLVM, so that should be done explicitly.
Example: https://github.com/mesonbuild/wrapdb/pull/205/commits/da6a13fb61f64baca0567763c51efaed9b14c41f
Do you have an executable that doesn’t start to run and you don’t see any error messages?
If you see this in console, try in GUI (Explorer) again, probably you’ll see some error pop-up window.
Do you see this as a CMake error that some simple C or C++ test is not able to run, so the build is aborted?
There is a good chance you hit this issue: Debug run-time DLL issue
Python related tips
Tests
Is there a test folder with test pythons scripts, but no hint how to run them?
Try install pytest and run this:
Code Block pytest <test directory>
...