[Numpy-discussion] build on windows 64-bit platform

Albert Strasheim fullung@gmail....
Fri Jul 27 22:19:03 CDT 2007


Hello all

On Sat, 28 Jul 2007, Stefan van der Walt wrote:

> On Sat, Jul 28, 2007 at 12:54:52AM +0200, Pearu Peterson wrote:
> > Ok, I have now enabled DISTUTILS_USE_SDK for
> > AMD64 Windows platform and it seems working..
> 
> Fantastic, thanks!
> 
> > However, the build still fails but now the
> > reason seems to be related to numpy ticket 164:
> > 
> >    http://projects.scipy.org/scipy/numpy/ticket/164
> 
> I'll ask Albert whether he would have a look at it again.

Let's see. Using this build log:

http://buildbot.scipy.org/Windows%20XP%20x86_64%20MSVC/builds/31/step-shell/0

numpy\core\src\umathmodule.c.src(73) : warning C4273: 'logf' : inconsistent dll linkage
numpy\core\src\umathmodule.c.src(74) : warning C4273: 'sqrtf' : inconsistent dll linkage

Judging from the math.h on my 32-bit system, these declarations should 
look like this:

float __cdecl logf(float);
float __cdecl sqrtf(float);

but they're missing the __cdecl in the NumPy code. Somewhere a macro 
needs to be defined to __cdecl on Windows (and left empty on other 
platforms) and including in the NumPy declarations.

numpy\core\src\umathmodule.c.src(604) : warning C4013: 'fabsf' undefined; assuming extern returning int
numpy\core\src\umathmodule.c.src(604) : warning C4013: 'hypotf' undefined; assuming extern returning int

Judging from the patch attached to ticket #164, these functions aren't 
available for some reason. Maybe check the header to see if there's a 
way to turn them on using some preprocessor magic. If not, do what the 
patch does.

numpy\core\src\umathmodule.c.src(604) : warning C4244: 'function' : conversion from 'int' to 'float', possible loss of data

A cast should suppress this warning.

numpy\core\src\umathmodule.c.src(625) : warning C4013: 'rintf' undefined; assuming extern returning int

Add this function like the patch does.

numpy\core\src\umathmodule.c.src(625) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(626) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(632) : warning C4244: 'initializing' : conversion from 'int' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(641) : warning C4244: 'initializing' : conversion from 'int' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(1107) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(1107) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(1107) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(1107) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
numpy\core\src\umathmodule.c.src(1349) : warning C4244: '=' : conversion from 'npy_longlong' to 'double', possible loss of data
numpy\core\src\umathmodule.c.src(1350) : warning C4244: '=' : conversion from 'npy_longlong' to 'double', possible loss of data
numpy\core\src\umathmodule.c.src(1349) : warning C4244: '=' : conversion from 'npy_ulonglong' to 'double', possible loss of data
numpy\core\src\umathmodule.c.src(1350) : warning C4244: '=' : conversion from 'npy_ulonglong' to 'double', possible loss of data

More casts probably.

numpy\core\src\umathmodule.c.src(1583) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
numpy\core\src\umathmodule.c.src(1583) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
numpy\core\src\umathmodule.c.src(1583) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

Potential bugs. Look closely at these.

numpy\core\src\umathmodule.c.src(1625) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data

Cast.

numpy\core\src\umathmodule.c.src(2013) : warning C4013: 'frexpf' undefined; assuming extern returning int

Add this function.

numpy\core\src\umathmodule.c.src(2013) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data

Cast probably.

numpy\core\src\umathmodule.c.src(2030) : warning C4013: 'ldexpf' undefined; assuming extern returning int

Add this function.

numpy\core\src\umathmodule.c.src(2030) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data

Cast probably.

build\src.win32-2.5\numpy\core\__umath_generated.c(15) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(21) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(27) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(30) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(45) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(45) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(51) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(54) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(63) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(72) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(72) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(78) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(114) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(153) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(174) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(177) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(189) : error C2099: initializer is not a constant
build\src.win32-2.5\numpy\core\__umath_generated.c(192) : error C2099: initializer is not a constant

For whatever reason, these function pointers aren't constant, so I think 
the initialization should be moved into the InitOperators function if 
that makes sense to do.

numpy\core\src\ufuncobject.c(717) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'int', possible loss of data
numpy\core\src\ufuncobject.c(1130) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'int', possible loss of data
numpy\core\src\ufuncobject.c(1451) : warning C4244: '=' : conversion from 'npy_intp' to 'int', possible loss of data
numpy\core\src\ufuncobject.c(1452) : warning C4244: '=' : conversion from 'npy_intp' to 'int', possible loss of data
numpy\core\src\ufuncobject.c(2113) : warning C4244: '=' : conversion from 'npy_intp' to 'int', possible loss of data
numpy\core\src\ufuncobject.c(2962) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'int', possible loss of data

Potential bugs. Look closely at these. Otherwise cast to suppress the 
warnings.

Hope this helped.

Cheers,

Albert


More information about the Numpy-discussion mailing list