class Take::Compiler::GCC

Constants

DEBUG_OPTIONS

Public Class Methods

command() click to toggle source
# File lib/take/compiler/gcc.rb, line 22
def self.command
  "gcc".freeze
end
new() click to toggle source
Calls superclass method Take::Compiler::Base::new
# File lib/take/compiler/gcc.rb, line 26
def initialize
  super
  @options[:libraries] = []
  @options[:directories] = { include: [],
                             quote: [],
                             library: [] }.freeze
  @options[:defines] = {}
  @options[:optimize] = DEBUG_OPTIONS.fetch(:default)
  @options[:warnings] = ["all", "extra"]
end
on_platform?() click to toggle source
# File lib/take/compiler/gcc.rb, line 15
def self.on_platform?
  @_on_platform ||= begin
    runner = Command::Runner.new(command, "--version")
    runner.run.successful?
  end
end

Public Instance Methods

[]=(key, value) click to toggle source
# File lib/take/compiler/gcc.rb, line 60
def []=(key, value)
  @options[:extra][key] = value
end
defines() click to toggle source
# File lib/take/compiler/gcc.rb, line 72
def defines
  @options[:defines]
end
directories() click to toggle source
# File lib/take/compiler/gcc.rb, line 68
def directories
  @options[:directories]
end
language=(lang) click to toggle source
# File lib/take/compiler/gcc.rb, line 41
def language=(lang)
  @options[:lang] = lang || "none"
end
libraries() click to toggle source
# File lib/take/compiler/gcc.rb, line 64
def libraries
  @options[:libraries]
end
object() click to toggle source
# File lib/take/compiler/gcc.rb, line 93
def object
  stop_after :link
  self
end
optimize_mode=(mode) click to toggle source
# File lib/take/compiler/gcc.rb, line 53
def optimize_mode=(mode)
  mode = :default unless mode
  @options[:optimize] = DEBUG_OPTIONS.fetch(mode) do
    DEBUG_OPTIONS.fetch(:default)
  end
end
output=(file) click to toggle source
# File lib/take/compiler/gcc.rb, line 37
def output=(file)
  @options[:output] = file
end
run() click to toggle source
# File lib/take/compiler/gcc.rb, line 98
def run

end
standard=(standard) click to toggle source
# File lib/take/compiler/gcc.rb, line 45
def standard=(standard)
  if standard
    @options[:std] = standard
  else
    @options.delete(:std)
  end
end
stop_after(stage = nil) click to toggle source
# File lib/take/compiler/gcc.rb, line 80
def stop_after(stage = nil)
  case stage
  when :link
    @options[:stop] = "c"
  when :assemble
    @options[:stop] = "S"
  when :preprocess
    @options[:stop] = "E"
  else
    @options.delete(:stop)
  end
end
warnings() click to toggle source
# File lib/take/compiler/gcc.rb, line 76
def warnings
  @options[:warnings]
end

Private Instance Methods

compile_options() click to toggle source
# File lib/take/compiler/gcc.rb, line 104
def compile_options
  compiled = ""

  if @options.key?(:std)
    compiled << "-std=#{@options[:std]} "
  end

  compiled << "-g#{@options[:optimize]} "
  compiled << @options[:warnings].map { |w| "-W#{w}" }.join(" ")
  compiled << "-fPIC "
  compiled << @options[:directories][:include].map { |i| "-I#{i}"}
end