lib/rscons/environment.rb in rscons-1.12.0 vs lib/rscons/environment.rb in rscons-1.13.0
- old
+ new
@@ -43,12 +43,13 @@
# If a block is given, the Environment object is yielded to the block and
# when the block returns, the {#process} method is automatically called.
def initialize(options = {})
@threaded_commands = Set.new
@registered_build_dependencies = {}
+ @side_effects = {}
@varset = VarSet.new
- @job_set = JobSet.new(@registered_build_dependencies)
+ @job_set = JobSet.new(@registered_build_dependencies, @side_effects)
@user_deps = {}
@builders = {}
@build_dirs = []
@build_hooks = {pre: [], post: []}
unless options[:exclude_builders]
@@ -498,9 +499,29 @@
prerequisites.each do |prerequisite|
prerequisite = expand_path(expand_varref(prerequisite))
@registered_build_dependencies[target] << prerequisite
end
end
+ end
+
+ # Manually record the given side effect file(s) as being produced when the
+ # named target is produced.
+ #
+ # @since 1.13.0
+ #
+ # @param target [String]
+ # Target of a build operation.
+ # @param side_effects [Array<String>]
+ # File(s) produced when the target file is produced.
+ #
+ # @return [void]
+ def produces(target, *side_effects)
+ target = expand_path(expand_varref(target))
+ side_effects = Array(side_effects).map do |side_effect|
+ expand_path(expand_varref(side_effect))
+ end.flatten
+ @side_effects[target] ||= []
+ @side_effects[target] += side_effects
end
# Return the list of user dependencies for a given target.
#
# @param target [String] Target file name.