ICRAR / crc32c

A python package implementing the crc32c algorithm in hardware and software
GNU Lesser General Public License v2.1
40 stars 25 forks source link

Building on non-Intel platforms #6

Closed jlaine closed 5 years ago

jlaine commented 5 years ago

First of all thanks for making this package available! I'm making use of this package in aiortc, a Python implementation of WebRTC, as the SCTP layer uses crc32c checksums. The performance with SSE instructions is amazing, but what's more even the software implementation is faster that crcmod.

It was recently brought to my attention that attempting to build the package on non-Intel platforms fails, due to the SSE-specific compiler flags (https://github.com/jlaine/aiortc/issues/119), so I've had to add a fallback to crcmod.

Given that you already have a plain C implementation, how hard would it be to adjust the build system to skip the SSE version altogether on non-Intel platfoms?

rtobar commented 5 years ago

Hi @jlaine,

Thanks for dropping by, it's always good to see that this package is being used.

In principle this should not be too difficult to do. In the past the code was already architecture-aware, but with time we assumed an Intel architecture for simplicity (hence the hardcorded flags in setup.py). Luckily I own a Raspberry Pi, so I'll use this as a test platform and make sure the module compiles correctly there. Once this is done I'll release a new version to PyPI and will let you know here about it.

rtobar commented 5 years ago

This has been fixed by @jlaine's patch, and a new 1.6 release has been uploaded to PyPI.