[Distutils] SWIG runtime libs/Python distutils combo on Mac
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",
>>> 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
>> 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