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

Bob Ippolito bob at redivi.com
Wed Sep 29 22:57:01 CEST 2004

On Sep 29, 2004, at 4:43 PM, Bill Spotz wrote:

> 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).
> 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?

I don't think your assessment of swigrun_wrap is correct.


More information about the Distutils-SIG mailing list