Fix Windows installation errors once and for all
After the release of 0.4.1 I still ran into some issues with installing on Windows. I spent today fixing anything that popped up until it installed successfully.
The changes are:
-
28488618: Avoided the use of variable length arrays as these are not supported by MSVC. The lengths of arrays must be known at compile-time, else you get an
error C2057: expected constant expression
. (I made this change before I figured MSVC should take the SSE2 route instead, so this is not strictly needed anymore to compile with MSVC, but it will probably fix other non-C99-non-SSE2-compilers anyway.) -
8b057ec5: Moved the declarations of
__m128i
variables in the SSE2 code up to the beginning of the function, as MSVC can't cope with them being declared after some function logic. The error you'd get is a rather crypticerror C2275: '__m128i' : illegal use of this type as an expression
. -
96d3195f: Updated the detection of SSE2 capabilities such that SSE2 works with compilers that don't define
__GNUC__
. I made a special case for MSVC as it does not define__SSE2__
(or any of its family members) either. Instead it 'just works' with MSVC, so if_MSC_VER
is defined, the code now assumes SSE2 is available. -
8ea3ee1f: Apparently the first argument to
distutils.core.Extension
is a module name, not a module path. Hence, the/
was supposed to be a.
. This issue presented itself on Windows aserror LNK2001: unresolved external symbol inittssv/_sg_align
.
With these fixes in place, TSSV compiles and installs on my 64-bit Windows 10 laptop with 64-bit Python 2.7.12. Of course, all of this is tested for regressions with gcc 4.8.4 and Ubuntu 16.04.1 LTS as well.