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.