[Distutils] SWIG runtime libs/Python distutils combo on Mac

Bill Spotz wfspotz at sandia.gov
Wed Sep 29 22:43:06 CEST 2004


I'm pretty sure I cannot compile swigrun_wrap into every extension or 
make it a static library, since each extension will get its own copy 
and that will defeat the purpose of the runtime libraries.  Sounds like 
I need to create a dylib, that python distutils can't help me, and that 
I'll have to learn libtool if I want to make it portable.  Does that 
sound about right?

On Sep 27, 2004, at 10:19 AM, Bob Ippolito wrote:

> On Sep 27, 2004, at 12:03 PM, Bill Spotz wrote:
>
>> To get around the portability problem, I have decided to use python's 
>> distutils module to handle the compilation issues.  In my setup.py 
>> script, I define
>>
>>   SwigRun = Extension("PyTrilinos.libswigrun", ["src/swigrun_wrap.c"])
>>
>> and this works, as build/lib.blahblahblah/PyTrilinos/libswigrun.so 
>> gets created properly.  When I define real extensions in setup.py, 
>> they are created with keyword arguments
>>
>>     library_dirs    = [..., "build/lib.blahblahblah/PyTrilinos", ...],
>>     libraries       = [..., "swigrun", ...],
>>
>> which gives me the link command arguments I want: 
>> -Lbuild/lib.blahblahblah/PyTrilinons -lswigrun.  However, on my Mac, 
>> when the link command is invoked, I get
>>
>>     ld: can't locate file for: -lswigrun
>>
>> I strongly suspect that the Mac's ld command does not search for 
>> libswigrun.so when -lswigrun is given as a command line argument (the 
>> old system libraries have .la and .dylib extensions).  But I cannot 
>> figure out how to get setup.py to compile to a different suffix.
>
> You can't do this on OS X.  You can link to two types of files in OS 
> X, static libraries and dylibs.  Python extension modules are bundles 
> (runtime loadable code) and can not be linked to at compile time.  You 
> should either compile swigrun_wrap into every extension, or make it a 
> static library (which is more or less the same thing).
>
> -bob

** Bill Spotz                                              **
** Sandia National Laboratories  Voice: (505)845-0170      **
** P.O. Box 5800                 Fax:   (505)284-5451      **
** Albuquerque, NM 87185-0316    Email: wfspotz at sandia.gov **




More information about the Distutils-SIG mailing list