[Scons-dev] Where does scons determine the dependencies for object files?

Gary Oberbrunner garyo at oberbrunner.com
Sun Mar 25 14:28:30 EDT 2018


>From a quick perusal of the source, I think the function you're looking for
is SCons/Node/__init__.py, Node.add_source(). That's called from
Builder._execute().

On Sun, Mar 25, 2018 at 2:05 PM, Andrew C. Morrow <andrew.c.morrow at gmail.com
> wrote:

>
> Could you point me to where in the SCons sources that connection between
> foo.o and foo.c is made, exactly? I'd like to understand how it happens.
>
> Regarding pseudo-builders: they don't compose, unfortunately. Once
> something becomes a pseudo-builder it no longer exposes the attributes that
> normal builders do. So I'd prefer to achieve this by injecting
> scanners/emitters into the existing builders, if possible.
>
> On Sun, Mar 25, 2018 at 1:52 PM, Gary Oberbrunner <garyo at oberbrunner.com>
> wrote:
>
>> The builder, in this case Object(), sets up the dependency between foo.o
>> and foo.c. The simplest way to do what you want is to create a
>> pseudo-builder that calls Object() and also calls Depends().
>>
>> -- Gary
>>
>> On Sun, Mar 25, 2018 at 1:07 PM, Andrew C. Morrow <
>> andrew.c.morrow at gmail.com> wrote:
>>
>>>
>>> I'm fairly clear on where SCons learns of the dependencies for source
>>> files: that is in the CScanner attached to the SourceFileScanner in T
>>> ool/__init__.py.
>>>
>>> But where does SCons determine the dependencies of object files, such
>>> that those dependencies are checked to see if the object file needs to be
>>> rebuilt?
>>>
>>> More concretely, If I have libfoo.so made from foo.o made from foo.c
>>> which depends on foo.h, the CScanner in SourceScanner takes care of
>>> scanning for dependences in foo.c and finds foo.h. But what scans for
>>> dependences of foo.o and identifies foo.c?
>>>
>>> I ask because I would like to sometimes inject a new source-like
>>> dependency into compilations, such that foo.o will depend on not just
>>> foo.c but also some other file magic, such that if magic is changed
>>> then foo.o will need to be rebuilt.
>>>
>>> With such a mechanism, it would be possible to teach SCons that if an
>>> AddressSanitizer blacklist file known to be on the compile line like
>>> -fsanitize-blacklist=path/to/magic is referring to a blacklist file
>>> that is more up to date than the object file, then the object file should
>>> be rebuilt.
>>>
>>> Thanks,
>>> Andrew
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Scons-dev mailing list
>>> Scons-dev at scons.org
>>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>>
>>>
>>
>>
>> --
>> Gary
>>
>> _______________________________________________
>> Scons-dev mailing list
>> Scons-dev at scons.org
>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>
>>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
>


-- 
Gary
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20180325/f01def03/attachment.html>


More information about the Scons-dev mailing list