[Scons-users] SWIG
William Blevins
wblevins001 at gmail.com
Wed Mar 11 01:30:35 EDT 2015
William,
So if I understand correctly, you are building two libs via "vm/SConscript".
1. libminiat.so (regular shared library)
2. _miniat.so (derived from swig sources and LIBS=libminiat.so)
; thus, libminiat.so shouldn't contain swig symbols at all.
My recommendation is using scons --tree=<option> to determine what SCons
*thinks* the targets and sources are for your build. I imagine they differ
from pass-1 to pass-2. This should give you some insight.
Here is what I expect is happening. You define libminiat.so source as
Glob(src/*.c) and the swig builder creates a c-binding from "src/miniat.i".
During pass-1, Glob executes at sconscript-read time and doesn't see
"src/miniat.c" since the swig builder hasn't executed yet. During pass-2,
Glob finds "src/miniat.c" thus changing the source list for libminiat.so
and adding swig symbols. Fix your source!
FYI: SCons has really great debug options. "--debug" and "--tree" will
almost always tell you why SCons is behavior a particular way.
V/R,
William
On Wed, Mar 11, 2015 at 1:09 AM, William Blevins <wblevins001 at gmail.com>
wrote:
> Nevermind there was a link included. I am used to gettings attachments.
>
> Sorry,
> William
>
> On Wed, Mar 11, 2015 at 1:04 AM, William Blevins <wblevins001 at gmail.com>
> wrote:
>
>> You haven't supplied enough context. This is most likely specific to
>> your SConscript calls. Can you please include your script?
>>
>> V/R,
>> William
>>
>> On Wed, Mar 11, 2015 at 12:57 AM, William Roberts <
>> bill.c.roberts at gmail.com> wrote:
>>
>>> FYI my work is here:
>>> https://bitbucket.org/miniat/0x1-miniat/branch/swig-python
>>>
>>>
>>> On Tue, Mar 10, 2015 at 8:56 PM, Bill Deegan <bill at baddogconsulting.com>
>>> wrote:
>>>
>>>> William,
>>>>
>>>> If you want more control, you might break out.
>>>>
>>>> xyz=
>>>> env.SharedObject('targetdir/file','sourcefile.i',SWIGFLAGS=['-python',
>>>> '-outdir', 'out/lib'])
>>>> And then use all or part of xyz
>>>>
>>>> Also note that all builders should be treated as if they return a list
>>>> of Node objects.
>>>> So your:
>>>> return [l, x]
>>>>
>>>> Should likely be:
>>>> return l+x
>>>>
>>>
>>> doesn't scons internally flatten nested lists? Although, concatenating
>>> is probably the better way, as you suggest.
>>>
>>> I seem to get some weird issues when I run scons without any
>>> modfications to any files, it reruns swig and I see the following issues:
>>>
>>> scons: warning: Two different environments were specified for target
>>> src/miniat_wrap.os,
>>> but they appear to have the same action: $SHCC -o $TARGET -c $SHCFLAGS
>>> $SHCCFLAGS $_CCCOMCOM $SOURCES
>>> File "/home/bill/workspace/miniat/SConstruct", line 96, in
>>> buildSharedLibrary
>>> Executing script: /home/bill/workspace/miniat/out/vm/test
>>> Executing script: /home/bill/workspace/miniat/out/tools/mash
>>> Executing script: /home/bill/workspace/miniat/out/peripherals/debugger
>>> Executing script: /home/bill/workspace/miniat/out/peripherals/simple_kb
>>> Executing script: /home/bill/workspace/miniat/out/peripherals/simple_term
>>> scons: done reading SConscript files.
>>> scons: Building targets ...
>>> swig -o out/vm/src/miniat_wrap.c -python -outdir out/lib
>>> out/vm/src/miniat.i
>>> LD out/vm/libminiat.so
>>> CP out/lib/libminiat.so
>>> LD out/system/console/miniat_console
>>>
>>> It also somehow ends up modifying the libminiat.so library to include
>>> swig python stuff that it didn't include in that so on the first build.
>>> If you use nm to dump the symbols
>>>
>>> First Run, builds and links fine:
>>> $ nm out/lib/libminiat.so | grep swig
>>> <no output>
>>>
>>> run scons again, see the issues noted above, and the check the library:
>>> $ nm out/lib/libminiat.so | grep swig
>>> 0000000000213740 d _swigc__p_char
>>> 0000000000213780 d _swigc__p_miniat
>>>
>>> It seems to be getting confused.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>
>>>> -Bill
>>>>
>>>> On Tue, Mar 10, 2015 at 6:07 PM, William Roberts <
>>>> bill.c.roberts at gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Tue, Mar 10, 2015 at 6:03 PM, William Roberts <
>>>>> bill.c.roberts at gmail.com> wrote:
>>>>>
>>>>>> So I have a heiarchical biuld going on, my SConstruct defines this
>>>>>> method that is exported to my SConscripts
>>>>>>
>>>>>> def buildSharedLibrary(*args, **kwargs):
>>>>>> l = env.SharedLibrary(*args, **kwargs)
>>>>>> x = env.Install(libdir, l)
>>>>>> return [l, x]
>>>>>>
>>>>>> So all my shared libraries end up in out/lib
>>>>>>
>>>>>> I am currently trying to make a swig wrapper, and my SConstruct
>>>>>> defines:
>>>>>>
>>>>>> buildSharedLibrary('_miniat.so', 'src/miniat.i', LIBS=['miniat'],
>>>>>> CPPPATH=[ INC, distutils.sysconfig.get_python_inc() ], SHLIBPREFIX="",
>>>>>> SWIGFLAGS=['-python'])
>>>>>>
>>>>>> Which builds the wrapper into a shared object just fine. However,
>>>>>> swig outputs a generated python file at:
>>>>>> ./out/vm/src/miniat.py
>>>>>>
>>>>>> What I am trying to do, is get SCons to install this into the
>>>>>> SharedLibrary directory, but it doesn't seem to be ommited here:
>>>>>> l = env.SharedLibrary(*args, **kwargs)
>>>>>>
>>>>>> How can I get that generated file output where I want it?
>>>>>>
>>>>>>
>>>>>>
>>>>> As usual, just after I sent I found what I was looking for:
>>>>>
>>>>> buildSharedLibrary('_miniat.so', 'src/miniat.i', LIBS=['miniat'],
>>>>> CPPPATH=[ INC, distutils.sysconfig.get_python_inc() ], SHLIBPREFIX="",
>>>>> SWIGFLAGS=['-python', '-outdir', 'out/lib'])
>>>>>
>>>>> But is this the best way?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> --
>>>>>> Respectfully,
>>>>>>
>>>>>> William C Roberts
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Respectfully,
>>>>>
>>>>> William C Roberts
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Scons-users mailing list
>>>>> Scons-users at scons.org
>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Scons-users mailing list
>>>> Scons-users at scons.org
>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Respectfully,
>>>
>>> William C Roberts
>>>
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150311/201f0e80/attachment-0001.html>
More information about the Scons-users
mailing list