I just downloaded the latest Distutils and am running Python24 on WindowsXP Pro 
and using MSVC Pro 2003. I'm developing a Python extention (.pyd) and want to 
use Distutils to manage the install process. After reading much documentation 
and code I have gotten everything to build and run manually, but am having 
difficulty with the setup configuration. What it boils down to is I have a Swig 
(.i) which is written in C++, mostly since it includes PythonCOM.h. Here is a 
slightly simplified version of my setup.py

<code>
#docs left out

from distutils.core import setup, Extension
import os

#using these two lines on my machine works to compile properly
#"C:\Program Files\SWIG-1.3.24\swig.exe" -python -c++ -o mouse_wrap.cpp 
mouse_client.i
#"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe" /c /nologo 
/Ox /MD /W3 /GX /DNDEBUG -IC:\Python24\include -IC:\Python24\PC 
-IC:\Python24\Lib\site-packages\win32\include 
-IC:\Python24\Lib\site-packages\win32com\include /Tpmouse_wrap.cpp 
/Fobuild\mouse_wrap.obj

from distutils.sysconfig import get_python_lib
win32Incdir = os.path.join(get_python_lib(plat_specific=1), 'win32\include')
win32comIncdir = os.path.join(get_python_lib(plat_specific=1), 
'win32com\include')

pythoncomLib = os.path.join(get_python_lib(plat_specific=1), 
'win32com\libs\pythoncom')
wintypesLib = os.path.join(get_python_lib(plat_specific=1), 
'win32\libs\pywintypes')

libs = ['user32', 'ole32', pythoncomLib, wintypesLib]
includes = [win32Incdir, win32comIncdir]
macros = [('NDEBUG', '1')]
compilerArgs = []
lang = 'c++'
swigOpts = ['-c++']

setup(name='pyCOMHook',
      #standard setup stuff left out
      ext_modules = [Extension('pyCOMHook._mouse', ['mouse.i'],
          libraries=libs, include_dirs=includes, define_macros=macros,
          extra_compile_args=compilerArgs, language=lang, swig_opts=swigOpts)],
      )

</code>

This succesfuly puts '-c++' on the swig command line, but the output file (for 
Swig) is still .c (and not .cpp). After looking through the Distutils code I 
realized two things

1. build_ext.py [line 525, in swig_sources (self, sources, extension)] I think 
needs to be changed from

if self.swig_cpp or ('-c++' in self.swig_opts):

to

if self.swig_cpp or ('-c++' in self.swig_opts) or ('-c++' in 
extension.swig_opts):

or something like that. Doing this fixed my whole problem and everything ran 
fine.

2. even without the above fix, this still should have worked, even with the .c 
extention, but the msvccompiler.py compiler currently ignores the language 
setting and only uses file extentions to determine /Tc or /Tp flags

So my question is this, is it currently impossible to Swig a .i written in c++ 
on Windows using msvc and a bug fix is needed, or is there some nifty way 
around this which I have not yet been clever enough to ferret out? I would 
appreciate if anyone more familiar with the Distutils code could take a look 
into this.

-- 
_______________________________________________
NEW! Lycos Dating Search. The only place to search multiple dating sites at 
once.
http://datingsearch.lycos.com

_______________________________________________
Distutils-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to