Also, I found I had to remove the 2 lines in distutils/system_info.py
that mention pthread, mkl_lapack32, mkl_lapack64 (see attached patch)
since libraries with such names don't seem to exist in the MKL for
windows and were generating linking errors.

This obviously isn't the right thing to do, and I don't know enough to
know how to do it properly

Here's a new patch that checks if sys.platform == 'win32' and does the appropriate thing. MKL on linux behaviour should be unaffected, but I don't have any way of testing that.

I've also included an improved .numpy-site.cfg file.

I've added a section on how to build with MKL and MSVC to http://www.scipy.org/Installing_SciPy/Windows

Cheers,

Martin
Index: numpy/distutils/system_info.py
===================================================================
--- numpy/distutils/system_info.py      (revision 3721)
+++ numpy/distutils/system_info.py      (working copy)
@@ -811,9 +811,12 @@
         info = {}
         dict_append(info,**mkl)
         dict_append(info,
-                    libraries = ['pthread'],
                     define_macros=[('SCIPY_MKL_H',None)],
-                    include_dirs = incl_dirs)
+                    include_dirs=incl_dirs)
+        if sys.platform == 'win32':
+            pass # win32 has no pthread library
+        else:
+            dict_append(libraries=['pthread'])
         self.set_info(**info)
 
 class lapack_mkl_info(mkl_info):
@@ -822,7 +825,10 @@
         mkl = get_info('mkl')
         if not mkl:
             return
-        lapack_libs = 
self.get_libs('lapack_libs',['mkl_lapack32','mkl_lapack64'])
+        if sys.platform == 'win32':
+            lapack_libs = self.get_libs('lapack_libs', ['mkl_lapack']) # 
mkl_lapack : "LAPACK routines and drivers"
+        else:
+            lapack_libs = self.get_libs('lapack_libs', 
['mkl_lapack32','mkl_lapack64'])
         info = {'libraries': lapack_libs}
         dict_append(info,**mkl)
         self.set_info(**info)
# config file for building numpy on ia32 platform,
# using Intel's Math Kernel Library for win32
# builds successfully with MSVC7.1
# replace C:\bin\Intel\MKL\9.0 with your Intel MKL install path

[mkl]
include_dirs = C:\bin\Intel\MKL\9.0\include
library_dirs = C:\bin\Intel\MKL\9.0\ia32\lib
mkl_libs = mkl_ia32, mkl_c_dll, libguide40
lapack_libs = mkl_lapack
# mkl_c or mkl_c_dll? either seem to work:
# mkl_c : "cdecl interface library"
# mkl_c_dll : "cdecl interface library for dynamic library"
# libguide or libguide40? either seem to work:
# libguide.lib : "Static threading library"
# libguide40.lib : "Interface library for dynamic threading library"


_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to