7 def_delegators :@build, :filename, :objfile, :libfile, :exefile
8 attr_accessor :build, :command
14 # clone is deep clone without @build
18 instance_variables.each do |attr|
19 unless excepts.include?(attr.to_s)
20 val = Marshal::load(Marshal.dump(instance_variable_get(attr))) # deep clone
21 target.instance_variable_set(attr, val)
28 if ENV['OS'] == 'Windows_NT'
36 def _run(options, params={})
37 sh "#{build.filename(command)} #{options % params}"
41 class Command::Compiler < Command
42 attr_accessor :label, :flags, :include_paths, :defines, :source_exts
43 attr_accessor :compile_options, :option_define, :option_include_path, :out_ext
44 attr_accessor :cxx_compile_flag, :cxx_exception_flag, :cxx_invalid_flags
45 attr_writer :preprocess_options
47 def initialize(build, source_exts=[], label: "CC")
49 @command = ENV['CC'] || 'cc'
51 @flags = [ENV['CFLAGS'] || []]
52 @source_exts = source_exts