code: def autobuild_bootstrap_file(file_name, image_list):
      
  
      family = utilities.get_family('module_settings.json')
      target = family.platform_independent_target()
      resolver = ProductResolver.Create()
  
      env = Environment(tools=[])
  
      output_dir = target.build_dirs()['output']
      build_dir = target.build_dirs()['build']
  
      build_output_name = os.path.join(build_dir, file_name)
      full_output_name = os.path.join(output_dir, file_name)
  
      processed_input_images = []
  
      for image_name in image_list:
          image_info = resolver.find_unique('firmware_image', image_name)
          image_path = image_info.full_path
  
          hex_path = arm.ensure_image_is_hex(image_path)
          processed_input_images.append(hex_path)
  
      env.Command(build_output_name, processed_input_images,
                  action=Action(arm.merge_hex_executables,
                                "Merging %d hex files into $TARGET" % len(processed_input_images)))
      env.Command(full_output_name, build_output_name, Copy("$TARGET", "$SOURCE"))
docs: Combine multiple firmware images into a single bootstrap hex file.
  
      The files listed in image_list must be products of either this tile or any
      dependency tile and should correspond exactly with the base name listed on
      the products section of the module_settings.json file of the corresponding
      tile.  They must be listed as firmware_image type products.
  
      This function keeps a global map of all of the intermediate files that it
      has had to create so that we don't try to build them multiple times.
  
      Args:
          file_name(str): Full name of the output bootstrap hex file.
          image_list(list of str): List of files that will be combined into a
              single hex file that will be used to flash a chip.