class MTBuild::ToolchainArmNoneEabiGcc

This ToolchainGcc subclass can build using arm-non-eabi-gcc

Public Class Methods

new(parent_configuration, toolchain_configuration) click to toggle source
Calls superclass method
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 9
def initialize(parent_configuration, toolchain_configuration)
  super
end

Public Instance Methods

create_application_tasks(objects, executable_name) click to toggle source

Create Rake tasks for linking

# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 14
def create_application_tasks(objects, executable_name)
  elf_file = File.join(@output_folder, "#{executable_name}#{@output_decorator}.elf")
  bin_file = File.join(@output_folder, "#{executable_name}#{@output_decorator}.bin")
  hex_file = File.join(@output_folder, "#{executable_name}#{@output_decorator}.hex")
  map_file = File.join(@output_folder, "#{executable_name}#{@output_decorator}.map")
  executable_folder = @output_folder

  unless @tracked_folders.include?executable_folder
    @tracked_folders << executable_folder
    directory executable_folder
    @parent_configuration.parent_project.add_files_to_clean(executable_folder)
  end

  @parent_configuration.parent_project.add_files_to_clean(elf_file, bin_file, hex_file, map_file)

  all_objects = objects+get_include_objects

  file elf_file => all_objects do |t|
    command_line = construct_link_command(all_objects, t.name, get_include_paths, get_library_paths, map_file)
    sh command_line
  end

  file map_file => elf_file

  file bin_file => elf_file do |t|
    command_line = construct_objcopy_command(elf_file, t.name, ' -Obinary')
    sh command_line
  end
  file hex_file => elf_file do |t|
    command_line = construct_objcopy_command(elf_file, t.name, ' -Oihex')
    sh command_line
  end

  return [elf_file, bin_file, hex_file], [map_file], [executable_folder]
end

Private Instance Methods

archiver() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 68
def archiver
  return 'arm-none-eabi-ar'
end
assembler() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 56
def assembler
  return 'arm-none-eabi-gcc'
end
compiler_c() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 60
def compiler_c
  return 'arm-none-eabi-gcc'
end
compiler_cpp() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 64
def compiler_cpp
  return 'arm-none-eabi-g++'
end
construct_objcopy_command(input_name, output_name, objcopyflags) click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 52
def construct_objcopy_command(input_name, output_name, objcopyflags)
  return "\"#{objcopy}\"#{objcopyflags} \"#{input_name}\" \"#{output_name}\""
end
linker_c() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 72
def linker_c
  return 'arm-none-eabi-gcc'
end
linker_cpp() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 76
def linker_cpp
  return 'arm-none-eabi-g++'
end
objcopy() click to toggle source
# File lib/mtbuild/toolchains/arm_none_eabi_gcc.rb, line 80
def objcopy
  return 'arm-none-eabi-objcopy'
end