wscript 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Build script for the silk loader
  2. import sys
  3. import os
  4. from waflib import Logs
  5. def options(opt):
  6. opt.load('gcc')
  7. def configure(conf):
  8. # Find our binary tools
  9. conf.find_program('arm-none-eabi-gcc', var='CC', mandatory=True)
  10. conf.env.AS = conf.env.CC
  11. conf.find_program('arm-none-eabi-gcc-ar', var='AR', mandatory=True)
  12. conf.load('gcc')
  13. for tool in 'ar objcopy'.split():
  14. conf.find_program('arm-none-eabi-' + tool, var=tool.upper(), mandatory=True)
  15. # Set up our compiler configuration
  16. CPU_FLAGS = ['-mcpu=cortex-m3', '-mthumb']
  17. OPT_FLAGS = ['-Os', '-g']
  18. C_FLAGS = [
  19. '-std=c11', '-ffunction-sections',
  20. '-Wall', '-Wextra', '-Werror', '-Wpointer-arith',
  21. '-Wno-unused-parameter', '-Wno-missing-field-initializers',
  22. '-Wno-error=unused-function', '-Wno-error=unused-variable',
  23. '-Wno-error=unused-parameter', '-Wno-error=unused-but-set-variable',
  24. '-Wno-packed-bitfield-compat'
  25. ]
  26. LINK_FLAGS = ['-Wl,--gc-sections', '-specs=nano.specs']
  27. conf.env.append_unique('CFLAGS', CPU_FLAGS + OPT_FLAGS + C_FLAGS)
  28. conf.env.append_unique('LINKFLAGS', LINK_FLAGS + CPU_FLAGS + OPT_FLAGS)
  29. conf.env.append_unique('DEFINES', ['_REENT_SMALL=1'])
  30. # Load up other waftools that we need
  31. conf.load('objcopy ldscript', tooldir='waftools')
  32. def build(bld):
  33. elf_node = bld.path.get_bld().make_node('loader.elf')
  34. linkflags = ['-Wl,-Map,loader.map']
  35. sources = ['src/**/*.c']
  36. includes = ['src']
  37. bld.program(features="objcopy",
  38. source=bld.path.ant_glob(sources),
  39. includes=includes,
  40. target=elf_node,
  41. ldscript='src/stm32f4_loader.ld',
  42. linkflags=linkflags,
  43. objcopy_bfdname='ihex',
  44. objcopy_target=elf_node.change_ext('.hex'))
  45. import objcopy
  46. bld(rule=objcopy.objcopy_simple_bin, source='loader.elf', target='loader.bin')
  47. # vim:filetype=python