mirror of
https://github.com/kp2pml30/ya-build.git
synced 2026-02-17 00:14:42 +04:00
support multiple outputs
This commit is contained in:
parent
4f740ebe4e
commit
d14a86efee
1 changed files with 9 additions and 22 deletions
31
ya-build
31
ya-build
|
|
@ -72,7 +72,7 @@ def escape_args_to(buf, args)
|
|||
end
|
||||
|
||||
class Target
|
||||
attr_reader :trg_name, :meta
|
||||
attr_reader :trg_name, :meta, :outputs
|
||||
|
||||
def initialize(trg_name, dependencies)
|
||||
@meta = OpenStruct.new
|
||||
|
|
@ -83,6 +83,7 @@ class Target
|
|||
if @trg_name.kind_of?(Pathname)
|
||||
@trg_name = @trg_name.to_s
|
||||
end
|
||||
@outputs = [trg_name]
|
||||
raise "target name is not a string (got `#{@trg_name}`)" if not @trg_name.kind_of?(String)
|
||||
@dependencies = dependencies
|
||||
end
|
||||
|
|
@ -96,7 +97,9 @@ class Target
|
|||
end
|
||||
|
||||
def dump_rules(buf)
|
||||
buf << "build #{trg_name}: #{mode}"
|
||||
buf << "build "
|
||||
escape_args_to(buf, outputs)
|
||||
buf << ": #{mode}"
|
||||
@dependencies.each { |d|
|
||||
buf << ' '
|
||||
if d.kind_of?(Target)
|
||||
|
|
@ -160,23 +163,8 @@ class ConfigureGeneratedTarget < Target
|
|||
@configurator = configurator
|
||||
super(output_file, [])
|
||||
end
|
||||
def dump_rules(buf)
|
||||
buf << "build #{trg_name}: #{mode}"
|
||||
@configurator.instance_eval { @ya_files }.each { |d|
|
||||
buf << ' '
|
||||
if d.kind_of?(Target)
|
||||
buf << d.trg_name
|
||||
elsif d.kind_of?(Pathname)
|
||||
buf << d.to_s
|
||||
elsif d.kind_of?(String)
|
||||
buf << d
|
||||
else
|
||||
raise "Invalid dependency #{d} : #{d.class}"
|
||||
end
|
||||
}
|
||||
buf << "\n"
|
||||
def dump_rules_impl(buf)
|
||||
buf << " pool = console\n"
|
||||
buf << "\n"
|
||||
end
|
||||
def mode
|
||||
"RERUN_YA_BUILD"
|
||||
|
|
@ -261,8 +249,8 @@ class Configurator
|
|||
|
||||
@all = AliasTarget.new('all', [])
|
||||
|
||||
@targets = [@all]
|
||||
mark_as_config_generated('build.ninja')
|
||||
@config_target = ConfigureGeneratedTarget.new(self, 'build.ninja')
|
||||
@targets = [@all, @config_target]
|
||||
|
||||
@stack = []
|
||||
|
||||
|
|
@ -517,8 +505,7 @@ EOF
|
|||
end
|
||||
|
||||
def mark_as_config_generated(file)
|
||||
register_target(ConfigureGeneratedTarget.new(self, file))
|
||||
return
|
||||
@config_target.outputs.push file
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue