process jobs from the JobSet

This commit is contained in:
josh committed 2017-02-16 19:27:18 -05:00
1 parent e1d8dfbab6
commit 3601359c08
4 files changed
+61 -88

No files matched your search

+18 -4
View File
@@ -20,7 +20,12 @@ module Rscons
# @param vars [Hash]
# Construction variable overrides.
def add_job(builder, target, sources, vars)
@jobs[target] = {
# We allow multiple jobs to be registered per target for cases like:
# env.Directory("dest")
# env.Install("dest", "bin")
# env.Install("dest", "share")
@jobs[target] ||= []
@jobs[target] << {
builder: builder,
target: target,
sources: sources,
@@ -39,18 +44,27 @@ module Rscons
evaluated_targets = Set.new
attempt = lambda do |target|
evaluated_targets << target
@jobs[target][:sources].each do |src|
@jobs[target][0][:sources].each do |src|
if @jobs.include?(src) and not evaluated_targets.include?(src)
return attempt[src]
end
end
job = @jobs[target].merge(target: target)
@jobs.delete(target)
job = @jobs[target][0].merge(target: target)
if @jobs[target].size > 1
@jobs[target].slice!(0)
else
@jobs.delete(target)
end
return job
end
attempt[@jobs.first.first]
end
end
# Remove all jobs from the JobSet.
def clear!
@jobs.clear
end
end
end