xnnpack: fix cross-compiling for Android/armv7 #22951
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Specify library name and version: xnnpack/*
This works around a long-standing bug of XNNPACK, which prevents building for Android with assembly=True set:
google/XNNPACK#4348
The issue will not be fixed upstream and the maintainers comment that this is a clang bug. While correct, it would be impossible to build for Android with the NDK without a recipe-level workaround. Disabling assembly is not really an option for performance reasons. This integrates the workaround suggested in the ticket.
In essence I raise the target level from XNNPACK's default of armv6 to armv7 if the Conan user targets armv7 anyway. Should thus be free of side-effects. The previously broken armv6 build is now explicitly aborted with an invalid configuration error, and the user must turn off the "assembly" option to build for armv6.