From 2ee9dda49d23b8ca8538e3cd84e9bd6e5dc34f40 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 18 Nov 2021 20:18:19 -0500 Subject: [PATCH] Write dependency file to build directory when user invokes Object builder directly - close #135 --- lib/rscons/builders/mixins/object.rb | 6 +++--- spec/build_tests_spec.rb | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/rscons/builders/mixins/object.rb b/lib/rscons/builders/mixins/object.rb index 4bce28e..2d6ad32 100644 --- a/lib/rscons/builders/mixins/object.rb +++ b/lib/rscons/builders/mixins/object.rb @@ -75,10 +75,10 @@ module Rscons @vars["_SOURCES"] = @sources depfilesuffix = @env.expand_varref("${DEPFILESUFFIX}", vars) @vars["_DEPFILE"] = - if @vars[:direct] - @env.get_build_fname(target, depfilesuffix, self.class) + if @vars[:direct] || !@target.start_with?("#{@env.build_root}/") + @env.get_build_fname(@target, depfilesuffix, self.class) else - "#{target}#{depfilesuffix}" + "#{@target}#{depfilesuffix}" end @cache.mkdir_p(File.dirname(@vars["_DEPFILE"])) command = @env.build_command(@command_template, @vars) diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index b523256..7751180 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -1484,6 +1484,16 @@ EOF expect(File.exist?("simple.o")).to be_truthy end + it "writes the dependency file to the build root" do + test_dir "simple" + result = run_rscons(rsconscript: "distclean.rb") + expect(result.stderr).to eq "" + expect(result.stdout).to match /Compiling simple\.c/ + expect(File.exist?("simple.o")).to be_truthy + expect(File.exist?("simple.o.mf")).to be_falsey + expect(File.exist?("build/e.1/simple.o.mf")).to be_truthy + end + context "debugging" do it "prints a message when the target does not exist" do test_dir("simple")