code: def autobuild_arm_program(elfname, test_dir=os.path.join('firmware', 'test'), patch=True):
      
  
      try:
          #Build for all targets
          family = utilities.get_family('module_settings.json')
          family.for_all_targets(family.tile.short_name, lambda x: arm.build_program(family.tile, elfname, x, patch=patch))
  
          #Build all unit tests
          unit_test.build_units(os.path.join('firmware','test'), family.targets(family.tile.short_name))
  
          Alias('release', os.path.join('build', 'output'))
          Alias('test', os.path.join('build', 'test', 'output'))
          Default(['release', 'test'])
  
          autobuild_release(family)
  
          if os.path.exists('doc'):
              autobuild_documentation(family.tile)
  
      except IOTileException as e:
          print(e.format())
          sys.exit(1)
docs: Build the an ARM module for all targets and build all unit tests. If pcb files are given, also build those.