Class: Bake::Toolchain::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/bake/toolchain/provider.rb

Constant Summary collapse

@@settings =
{}
@@default =
{
  :COMPILER =>
  {
    :CPP => {
      :COMMAND => "",
      :PREFIX => "$(CompilerPrefix)",
      :DEFINE_FLAG => "",
      :OBJECT_FILE_FLAG => "",
      :OBJECT_FILE_ENDING => ".o",
      :OBJ_FLAG_SPACE => false,
      :INCLUDE_PATH_FLAG => "-I",
      :SYSTEM_INCLUDE_PATH_FLAG => "-I",
      :COMPILE_FLAGS => "",
      :DEFINES => [],
      :FLAGS => "",
      :SOURCE_FILE_ENDINGS => [".cxx", ".cpp", ".c++", ".cc", ".C"],
      :DEP_FLAGS => "",
      :DEP_FLAGS_SPACE => false,
      :DEP_FLAGS_FILENAME => true,
      :CUDA_PREFIX => "",
      :ERROR_PARSER => nil,
      :PREPRO_FLAGS => "",
      :PREPRO_FILE_FLAG => nil,
      :FILE_COMMAND => ""
    },
    :C => {
      :COMMAND => "",
      :PREFIX => "$(CompilerPrefix)",
      :DEFINE_FLAG => "",
      :OBJECT_FILE_FLAG => "",
      :OBJECT_FILE_ENDING => ".o",
      :OBJ_FLAG_SPACE => false,
      :INCLUDE_PATH_FLAG => "-I",
      :SYSTEM_INCLUDE_PATH_FLAG => "-I",
      :COMPILE_FLAGS => "",
      :DEFINES => [],
      :FLAGS => "",
      :SOURCE_FILE_ENDINGS => [".c", ".cu"],
      :DEP_FLAGS => "",
      :DEP_FLAGS_SPACE => false,
      :DEP_FLAGS_FILENAME => true,
      :CUDA_PREFIX => "",
      :ERROR_PARSER => nil,
      :PREPRO_FLAGS => "",
      :PREPRO_FILE_FLAG => nil,
      :FILE_COMMAND => ""
    },
    :ASM => {
      :COMMAND => "",
      :PREFIX => "$(ASMCompilerPrefix)",
      :DEFINE_FLAG => "",
      :OBJECT_FILE_FLAG => "",
      :OBJECT_FILE_ENDING => ".o",
      :OBJ_FLAG_SPACE => false,
      :INCLUDE_PATH_FLAG => "-I",
      :SYSTEM_INCLUDE_PATH_FLAG => "-I",
      :COMPILE_FLAGS => "",
      :DEFINES => [],
      :FLAGS => "",
      :SOURCE_FILE_ENDINGS => [".asm", ".s", ".S"],
      :DEP_FLAGS => "",
      :DEP_FLAGS_SPACE => false,
      :DEP_FLAGS_FILENAME => true,
      :CUDA_PREFIX => "",
      :ERROR_PARSER => nil,
      :PREPRO_FLAGS => "",
      :PREPRO_FILE_FLAG => nil,
      :FILE_COMMAND => ""
    },
    :DEP_FILE_SINGLE_LINE => :multi
  },
    :ARCHIVER =>
  {
    :COMMAND => "",
    :PREFIX => "$(ArchiverPrefix)",
    :ARCHIVE_FLAGS => "",
    :ARCHIVE_FLAGS_SPACE => true,
    :ARCHIVE_FILE_ENDING => ".a",
    :FLAGS => "",
    :ERROR_PARSER => nil,
    :FILE_COMMAND => ""
  },
    :LINKER =>
  {
    :COMMAND => "",
    :PREFIX => "$(LinkerPrefix)",
    :MUST_FLAGS => "",
    :SCRIPT => "",
    :SCRIPT_SPACE => true,
    :USER_LIB_FLAG => "",
    :EXE_FLAG => "",
    :EXE_FLAG_SPACE => true,
    :LIB_FLAG => "",
    :LIB_PATH_FLAG => "",
    :LIB_PREFIX_FLAGS => "", # "-Wl,--whole-archive",
    :LIB_POSTFIX_FLAGS => "", # "-Wl,--no-whole-archive",
    :FLAGS => "",
    :MAP_FILE_FLAG => "",
    :MAP_FILE_PIPE => true,
    :OUTPUT_ENDING => "", # if empty, .exe is used on Windows, otherwise no ending
    :ERROR_PARSER => nil,
    :LIST_MODE => false,
    :FILE_COMMAND => ""
  },
    :MAKE =>
  {
    :COMMAND => "make",
    :FLAGS => "-j",
    :FILE_FLAG => "-f",
    :DIR_FLAG => "-C",
    :CLEAN => "clean"
  },
    :DOCU => "",
  :KEEP_FILE_ENDINGS => false
}

Class Method Summary collapse

Class Method Details

.[](name) ⇒ Object



149
150
151
152
# File 'lib/bake/toolchain/provider.rb', line 149

def self.[](name)
  return @@settings[name] if @@settings.include? name
  nil
end

.add(name, basedOn = nil) ⇒ Object



133
134
135
136
137
# File 'lib/bake/toolchain/provider.rb', line 133

def self.add(name, basedOn = nil)
  chain = Marshal.load(Marshal.dump(basedOn.nil? ? @@default : @@settings[basedOn]))
  @@settings[name] = chain
  chain
end

.defaultObject



139
140
141
# File 'lib/bake/toolchain/provider.rb', line 139

def self.default
  @@default
end

.listObject



154
155
156
# File 'lib/bake/toolchain/provider.rb', line 154

def self.list
  return @@settings
end

.modify_cpp_compiler(based_on, h) ⇒ Object



143
144
145
146
147
# File 'lib/bake/toolchain/provider.rb', line 143

def self.modify_cpp_compiler(based_on, h)
  chain = Marshal.load(Marshal.dump(@@settings[based_on]))
  chain[:COMPILER][:CPP].update(h)
  chain
end