[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