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