[Scons-users] Custom Builder Tool for IAR Compiler
R0b0t1
r030t1 at gmail.com
Wed Oct 4 19:37:02 EDT 2017
On Wednesday, October 4, 2017, Marco Schuler <marco.schuler at gmail.com>
wrote:
> Hello
> I have a IAR compiler for STM8 microcontrollers and since it is rather
different to call compared to gcc, I implemented a custom Builder/Tool for
it. I was following https://github.com/SConsProject/scons/wiki/ToolsForFools
.
> Here is the directories and files that I have:
> site_scons/
> site_tools/
> stm8.py
> site_init.py
> src/
> main.c
> SConstruct
> site_init.py so far is an empty file.
> Contents of stm8.py is:
> import os
> import SCons.Action
> import SCons.Builder
> import SCons.Util
> class ToolStm8Warning(SCons.Warnings.Warning):
> pass
> class Stm8CompilerNotFound(ToolStm8Warning):
> pass
> SCons.Warnings.enableWarningClass(ToolStm8Warning)
>
> #
> # Builders
> #
> _stm8_builder =
SCons.Builder.Builder(action=SCons.Action.Action('$STM8_COM',
'$STM8_COMSTR'),
>
suffix='$STM8_SUFFIX',
>
src_suffix='$STM8_SRC_SUFFIX')
> def generate(env):
> """Add Builders and construction variables to the Environment."""
> env['STM8'] = 'iccstm8.exe'
>
> env['CFLAGS']=[
> '-e',
> '-Ol',
> '--no_cse',
> '--no_unroll',
> '--no_inline',
> '--no_code_motion',
> '--no_tbaa',
> '--no_cross_call',
> '--debug',
> '--code_model', 'small',
> '--data_model', 'medium',
> '--dlib_config', 'C:\Program Files (x86)\IAR Systems\Embedded
Workbench 7.3\stm8\LIB\dlstm8smn.h',
> '--vregs', '16'
> ]
>
> env.SetDefault(
> # suffixes/prefixes
> STM8_SUFFIX = ".o",
> STM8_SRC_SUFFIX = ".c",
>
> # command
> STM8_COM = '$STM8 $CFLAGS $SOURCES',
> STM8_COMSTR = '')
> # Add stm8 builder to builders
> env['BUILDERS']['Stm8'] = _stm8_builder
>
> def exists(env):
> """Check if the preconditions for our tool are met."""
>
> return env.Detect('iccstm8.exe')
>
> SConstruct contains the following:
> import os
> env = Environment(tools=['stm8'],
> ENV=os.environ) # take os-environment to have compiler
in path
> env.Stm8('src\main','src\main')
> When I run scons, then a main.o is created in the top level directory.
> But actually, I would like to use (instead of env.Stm8):
> env.Program(target='main', source='main')
> to build the program.
> Obviously, the ProgramBuilder is not available anymore in my environment.
How can I implement my Tool so that I can use env.Program? Did I understand
something wrong about the usage of a Tool/Builder?
> Sorry if the questions might be too basic. I am new to scons...
> --
> Regards,
> Marco
Not to derail your thread, but had you looked at the small device C
compiler?
Cheers,
R0b0t1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20171004/89d30e67/attachment.html>
More information about the Scons-users
mailing list