Closed baentsch closed 3 years ago
The AVX2 implementation of BIKE includes some .S files that are ELF-only. These are incompatible with macOS and Windows. The CMakeLists file already handles macOS, so we just need to do the same for Windows here: https://github.com/open-quantum-safe/liboqs/blob/530d7059b27946db8941a8c8d012740a8d03f9c2/src/kem/bike/CMakeLists.txt#L19 That should fix Cygwin builds. But MSVC requires some (minor) changes to the code. One issue is the use of __attribute__((aligned(n))). I don't have a Windows setup to do the development on. And I'm not sure it's worth it given we are waiting on a new BIKE implementation.
For Picnic in Cygwin we need to add the following to the list of config tests on lines 44-77 of endian_compat.h
#if defined(__CYGWIN__)
#include <endian.h>
#define HAVE_HOSTSWAP
#endif
Thanks very much @jschanck : Just finished validating your suggestions above on a Windows AWS VM (access credentials via OQS AWS account if you want to use it too). Implemented in PR #1001. With this BIKE is now working on Windows & Picnic with cygwin; waiting for #887 for an MSVC fix for BIKE.
Is this still required? Do our new algorithm datasheets adequately document this?
In support of #892 this is to document build failures by algorithm and build environment.
Using our CI tests, downstream integrations and manual tests supporting the wiki build instructions, all algorithms not listed below should be assumed to build and work OK on
Failures: BIKE: fails to build completely under MSVC, thousands of errors, e.g.,
BIKE: fails also under cygwin (less dramatic), e.g.
Picnic: Fails under cygwin; probably unintended overload of system defines, e.g.:
Question now: How to proceed? Widen the matrix/check more environments (gcc 9, 10 on Linux; M1 on OSX; msys2/mingw in Win)? Fix these (e.g., could #887 make BIKE be usable on Windows)? "Just" document in #892? What else?
Feedback solicited @jschanck @dstebila @christianpaquin @xvzcf