[Scons-dev] SCons-like build system

voidmb voidmb at gmail.com
Sat Jan 17 18:10:22 EST 2015


/>> - Each tool has own subset of options, for example CPPDEFINES is 
defined only for C/C++ tool//
//> What if multiple tools has the same option? How the value is 
calculated in this case?//
/
There are global built-in options which are inherited by all tools.
And each tool may define its own options.
Options of different tools are totally independent.
But if user really wants he can bind values of different options.

For example:
|cpp = Tool('c++') # a C++ compiler||
||  rc = Tool('rc') // a resource compiler, it has similar C 
preprocessor ||options||
||
   rc.options.cppdefines = cpp.options.cppdefines # now ||options are bound

   #... somewhere later
||  cpp.options.cppdefines = ['USE_FLAG1', 'WIN32']||

   # And now rc||.options.cppdefines == ||['USE_FLAG1', 'WIN32']||
|
/>> - Output build directory can be set to any place (even outside of 
project) for the whole project or for specific nodes//
//> That's cool. Why SCons can not reach that and how Aqualid managed to 
overcome this problem? //
///Aqualid doesn't have "Virtual File System". It even doesn't know that 
it builds files.
It can build anything: files, strings, byte arrays, remote URLs etc.
Where to build files it depends only from builder.
Global option 'build_dir' is used to set output directory.

For example:
|  options||.build_dir = 'output'||
||  cpp.||Compile('src1.cpp')||
||||cpp.Compile('src2.cpp', build_dir = '../output2' ) # override 
||||build_dir
|
Also Aqualid doesn't support SCons' feature *duplicate*. It's up to 
builder how to build files.

/> Is it still possible to provide a conduit, so that Aqualid can still 
process SCons scripts and tools?//
/Internally they are very different. I'm not sure, but it would not be 
easy./
/
/> Where are the principal differences in SCons APIs that make it 
incompatible with Aqualid?/
     1. Aqualid does not have "Virtual File System"
     2. There is no Environment. Aqualid uses options to share and/or 
override builder's flags
     3. Because Aqualiddoesn't know that it builds filesit doesn't 
support tools chaining.
         One single Tool may have support of limited chaining, like C++ 
tool supports 'c++ source' -> 'obj' -> exe/dll
         But between different tools it could be implemented only using 
helper functions at build scripts level.


Thank you.
Best regards,
Constantine.


On 01/17/15 12:27, anatoly techtonik wrote:
> It is nice to see the diversity. Also, the comparisons like these
> greatly help to understand the outcomes of underlying architecture of
> both projects much better. =)
>
> On Tue, Jan 13, 2015 at 12:09 PM, Constantine <voidmb at gmail.com> wrote:
>>    - Each tool has own subset of options, for example CPPDEFINES is defined
>> only for C/C++ tool
> What if multiple tools has the same option? How the value is
> calculated in this case?
>
>>    - Output build directory can be set to any place (even outside of project)
>> for the whole project or for specific nodes
> That's cool. Why SCons can not reach that and how Aqualid managed to
> overcome this problem?
>
>>    - API is different from SCons
> Is it still possible to provide a conduit, so that Aqualid can still
> process SCons scripts and tools? Where are the principal differences
> in SCons APIs that make it incompatible with Aqualid?
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev

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


More information about the Scons-dev mailing list