builder.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #! python
  2. import os
  3. import shutil
  4. import sys
  5. from enum import Enum
  6. from buildutils.builder import Axis, Step, BuildStep, Builder, Filter, Compiler
  7. class Target(Enum):
  8. CM0 = ( 'CM0' , 'CM0_LE' )
  9. CM3 = ( 'CM3' , 'CM3_LE' )
  10. CM4F = ( 'CM4F' , 'CM4F_LE' )
  11. V8MB = ( 'V8MB' , 'ARMv8MBL_LE' )
  12. V8MBN = ( 'V8MBN' , 'ARMv8MBL_NS_LE' )
  13. V8MM = ( 'V8MM' , 'ARMv8MML_LE' )
  14. V8MMF = ( 'V8MMF' , 'ARMv8MML_SP_LE' )
  15. V8MMFN = ( 'V8MMFN', 'ARMv8MML_SP_NS_LE' )
  16. V8MMN = ( 'V8MMN' , 'ARMv8MML_NS_LE' )
  17. def __str__(self):
  18. return self.value[0]
  19. PROJECTS = {
  20. Compiler.AC6: [ "ARM/MDK/RTX_CM.uvprojx" ],
  21. Compiler.GCC: [ "GCC/MDK/RTX_CM.uvprojx" ],
  22. Compiler.IAR: [ "IAR/IDE/RTX_CM.ewp" ]
  23. }
  24. TARGETS = {
  25. Compiler.AC6: 1,
  26. Compiler.GCC: 1,
  27. Compiler.IAR: 0
  28. }
  29. def target(step, config):
  30. return config['target'].value[TARGETS[config['compiler']]]
  31. def create():
  32. compilerAxis = Axis("compiler", abbrev="c", values=[ Compiler.AC6, Compiler.GCC, Compiler.IAR ], desc="Compiler(s) to be considered.")
  33. targetAxis = Axis("target", abbrev="t", values=Target, desc="Target(s) to be considered.")
  34. buildStep = BuildStep("build", abbrev="b", desc="Build the selected configurations.")
  35. buildStep.projects = lambda step, config: PROJECTS[config['compiler']]
  36. buildStep.target = target
  37. filterIAR = Filter().addAxis(compilerAxis, Compiler.IAR).addAxis(targetAxis, "V8M*")
  38. builder = Builder()
  39. builder.addAxis([ compilerAxis, targetAxis ])
  40. builder.addStep([ buildStep ])
  41. builder.addFilter([ filterIAR ])
  42. return builder