Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build on Windows #8

Open
maedoc opened this issue Apr 9, 2017 · 3 comments
Open

Build on Windows #8

maedoc opened this issue Apr 9, 2017 · 3 comments

Comments

@maedoc
Copy link

maedoc commented Apr 9, 2017

I'm trying to build this on Windows for Python 3.6, since I'd like to use Loopy in a project, where we ship packages to Mac, Linux & Win. I've started by trying to see if MSVC 14 could build ISL, but I'm becoming sceptical:

A few things I've done in isl/include/isl/ctx.h,

#define __attribute__(...)

and in isl/isl_arg.c:20 to

static struct isl_arg *help_arg;

Finally, I'm seeing at the end of the build

isl_hash.obj : error LNK2001: unresolved external symbol ffs
isl_stream.obj : error LNK2001: unresolved external symbol strcasecmp
build\lib.win-amd64-3.6\islpy\_isl_cffi.pyd : fatal error LNK1120: 2 unresolved externals

It looks like strcasecmp is a known one and ffs is a GCC builtin, so those can likely be mapped to Windows equivalents.

I'm worried that ignoring __attribute__ might hurt ISL correctness.

Another route would be to compile it all with GCC on MinGW 64, but I'm not sure how compatible this would be with the standard Python packages. Could that be used to produce wheels, etc?

edited to increase SNR

@maedoc
Copy link
Author

maedoc commented Apr 9, 2017

And a workaround for ffs from Cairo,

#include <intrin.h>
#pragma intrinsic(_BitScanForward)
static __forceinline int
ffs (int x)
{
    unsigned long i;
    if (_BitScanForward(&i, x) != 0)
	return i + 1;
    return 0;
}

With that sprinkled in a few places, the project builds, fwiw.

@inducer
Copy link
Owner

inducer commented Apr 9, 2017

I'm trying to build this on Windows for Python 3.6, since I'd like to use Loopy in a project, where we ship packages to Mac, Linux & Win.

Awesome. I'd also like to update https://github.com/conda-forge/islpy-feedstock to include Win support then.

I'm worried that ignoring attribute might hurt ISL correctness.

I don't think there's a worry there.

@inducer
Copy link
Owner

inducer commented Apr 19, 2021

FWIW, conda-forge now has Windows builds of islpy: https://anaconda.org/conda-forge/islpy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants