[Scons-users] Custom Builder Tool for IAR Compiler
Marco Schuler
marco.schuler at gmail.com
Wed Oct 4 13:20:53 EDT 2017
Hi Bill
Thanks for your answer.
The problem is that if I do as you suggest, the call to the compiler adds a
"-c" option (stop after compilation, aka build object file). This option is
not known by my compiler. Thus I thought I'd have to implement my own
builder defining my own COM string.
With your proposal, how would I get rid of the "-c" option?
--
Regards
Am 04.10.2017 19:14 schrieb "Bill Deegan" <bill at baddogconsulting.com>:
Marco,
You should setup the compiler using the normal compielr flags.
So STM8 should be CC, etc.
Then it should work like any other compiler.
In fact looking at what you have above, I don't see anything notable about
stm8 compiler besides come CFLAGS and the compiler name.
Am I missing somthing?
-Bil
On Wed, Oct 4, 2017 at 8:54 AM, 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/SConsProjec
> t/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=S
> Cons.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
>
> _______________________________________________
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20171004/77766296/attachment-0001.html>
More information about the Scons-users
mailing list