[Scons-dev] Program() builder speccy

Kenny, Jason L jason.l.kenny at intel.com
Mon Feb 4 09:10:40 EST 2013


The builder for program only knows how to link technically.
The definition is below:

program = SCons.Builder.Builder(action = SCons.Defaults.LinkAction,
emitter = '$PROGEMITTER',
prefix = '$PROGPREFIX',
suffix = '$PROGSUFFIX',
src_suffix = '$OBJSUFFIX',
src_builder = 'Object',
target_scanner = ProgramScanner)

Please note the bold part. ( or src_suffix and src_builder if you cannot see the bold)

What this allows for in SCons is for the Program builder to pass any “unknown” file types via extension to the object builder. The object builder will then look at it and try to build it if it know based on the extensions. You should see code like this:

for suffix in CXXSuffixes:
static_obj.add_action(suffix, SCons.Defaults.CXXAction)
shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter)

In the different C++ based tools. This code adds the suffix of the source file and the action to build the source file for the given C/C++ compiler to the object builder. You will see similar code to for fortran, except it will add the correct Fortran extension. Similar work can be done to treat C# or any other language that could make object form of the file.

Hope this helps.

Jason




From: scons-dev-bounces at scons.org [mailto:scons-dev-bounces at scons.org] On Behalf Of anatoly techtonik
Sent: Monday, February 04, 2013 2:39 AM
To: SCons Development
Subject: [Scons-dev] Program() builder speccy

Hi,

When I call Program() - how does SCons know which tool to use to compile the program? Does it use an extension list? Or always uses C/C++ if other tool is not explicitly specified as some argument or environment flag?
--
anatoly t.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/scons-dev/attachments/20130204/5ef2e37f/attachment-0001.html>


More information about the Scons-dev mailing list