Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f33be07a15 | ||
|
|
c4c2d5c128 | ||
|
|
3065dc48ec | ||
|
|
9ca2934695 | ||
|
|
3af6b6be1b | ||
|
|
0442b876a5 |
No files matched your search
+2
-2
@@ -1,7 +1,7 @@
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
rscons (1.9.1)
|
||||
rscons (1.9.3)
|
||||
json (~> 1.0)
|
||||
|
||||
GEM
|
||||
@@ -48,4 +48,4 @@ DEPENDENCIES
|
||||
yard
|
||||
|
||||
BUNDLED WITH
|
||||
1.10.4
|
||||
1.10.6
|
||||
@@ -394,6 +394,25 @@ not expected to be produced by the builder.
|
||||
Phony targets will still be "rebuilt" if any source or the command is out of
|
||||
date.
|
||||
|
||||
### Explicit Dependencies
|
||||
|
||||
A target can be marked as depending on another file that Rscons would not
|
||||
otherwise know about via the `Environment#depends` function. For example,
|
||||
to force the linker to re-link a Program output when a linker script changes:
|
||||
|
||||
```ruby
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("a.out", "foo.c", "LDFLAGS" => %w[-T linker_script.ld])
|
||||
env.depends("a.out", "linker_script.ld")
|
||||
end
|
||||
```
|
||||
|
||||
You can pass multiple dependency files to `Environment#depends`:
|
||||
|
||||
```ruby
|
||||
env.depends("my_app", "config/link.ld", "README.txt", *Dir.glob("assets/**/*"))
|
||||
```
|
||||
|
||||
### Construction Variable Naming
|
||||
|
||||
* uppercase strings - the default construction variables that Rscons uses
|
||||
@@ -406,6 +425,10 @@ http://rubydoc.info/github/holtrop/rscons/frames.
|
||||
|
||||
## Release Notes
|
||||
|
||||
### v1.9.2
|
||||
|
||||
- allow phony targets in conjunction with build roots
|
||||
|
||||
### v1.9.1
|
||||
|
||||
- change *SUFFIX defaults to arrays
|
||||
|
||||
@@ -509,8 +509,12 @@ module Rscons
|
||||
#
|
||||
# @return [String] The expanded path.
|
||||
def expand_path(path)
|
||||
if Rscons.phony_target?(path)
|
||||
path
|
||||
else
|
||||
path.sub(%r{^\^(?=[\\/])}, @build_root)
|
||||
end
|
||||
end
|
||||
|
||||
# Execute a command using the system shell.
|
||||
#
|
||||
@@ -614,8 +618,6 @@ module Rscons
|
||||
elsif word == "-pthread"
|
||||
append["CCFLAGS", [word]]
|
||||
append["LDFLAGS", [word]]
|
||||
elsif word =~ /^-std=/
|
||||
append["CFLAGS", [word]]
|
||||
elsif word =~ /^-Wa,(.*)$/
|
||||
append["ASFLAGS", $1.split(",")]
|
||||
elsif word =~ /^-Wl,(.*)$/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module Rscons
|
||||
# gem version
|
||||
VERSION = "1.9.1"
|
||||
VERSION = "1.9.3"
|
||||
end
|
||||
@@ -933,9 +933,11 @@ EOF
|
||||
end
|
||||
|
||||
context "phony targets" do
|
||||
[false, true].each do |with_build_root|
|
||||
it "allows specifying a Symbol as a target name and reruns the builder if the sources or command have changed" do
|
||||
test_dir("simple")
|
||||
env = Rscons::Environment.new do |env|
|
||||
env.build_root = "bld" if with_build_root
|
||||
env.add_builder(:Checker) do |target, sources, cache, env, vars|
|
||||
unless cache.up_to_date?(target, :Checker, sources, env)
|
||||
puts "Checker #{sources.first}" if env.echo != :off
|
||||
@@ -946,7 +948,7 @@ EOF
|
||||
env.Program("simple.exe", "simple.c")
|
||||
env.Checker(:checker, "simple.exe")
|
||||
end
|
||||
expect(lines).to eq(["CC simple.o", "LD simple.exe", "Checker simple.exe"])
|
||||
expect(lines).to eq(["CC #{with_build_root ? 'bld/' : ''}simple.o", "LD simple.exe", "Checker simple.exe"])
|
||||
|
||||
env.clone do |env|
|
||||
env.Checker(:checker, "simple.exe")
|
||||
@@ -962,5 +964,6 @@ EOF
|
||||
expect(lines).to eq(["Checker simple.exe"])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -396,24 +396,23 @@ module Rscons
|
||||
describe "#parse_flags" do
|
||||
it "executes the shell command and parses the returned flags when the input argument begins with !" do
|
||||
env = Environment.new
|
||||
env["CFLAGS"] = ["-g"]
|
||||
env["CCFLAGS"] = ["-g"]
|
||||
expect(env).to receive(:shell).with("my_command").and_return(%[-arch my_arch -Done=two -include ii -isysroot sr -Iincdir -Llibdir -lmy_lib -mno-cygwin -mwindows -pthread -std=c99 -Wa,'asm,args 1 2' -Wl,linker,"args 1 2" -Wp,cpp,args,1,2 -arbitrary +other_arbitrary some_lib /a/b/c/lib])
|
||||
rv = env.parse_flags("!my_command")
|
||||
expect(rv).to eq({
|
||||
"CCFLAGS" => %w[-arch my_arch -include ii -isysroot sr -mno-cygwin -pthread -arbitrary +other_arbitrary],
|
||||
"CCFLAGS" => %w[-arch my_arch -include ii -isysroot sr -mno-cygwin -pthread -std=c99 -arbitrary +other_arbitrary],
|
||||
"LDFLAGS" => %w[-arch my_arch -isysroot sr -mno-cygwin -mwindows -pthread] + ["linker", "args 1 2"] + %w[+other_arbitrary],
|
||||
"CPPPATH" => %w[incdir],
|
||||
"LIBS" => %w[my_lib some_lib /a/b/c/lib],
|
||||
"LIBPATH" => %w[libdir],
|
||||
"CPPDEFINES" => %w[one=two],
|
||||
"CFLAGS" => %w[-std=c99],
|
||||
"ASFLAGS" => ["asm", "args 1 2"],
|
||||
"CPPFLAGS" => %w[cpp args 1 2],
|
||||
})
|
||||
expect(env["CFLAGS"]).to eq(["-g"])
|
||||
expect(env["CCFLAGS"]).to eq(["-g"])
|
||||
expect(env["ASFLAGS"]).to eq([])
|
||||
env.merge_flags(rv)
|
||||
expect(env["CFLAGS"]).to eq(["-g", "-std=c99"])
|
||||
expect(env["CCFLAGS"]).to eq(%w[-g -arch my_arch -include ii -isysroot sr -mno-cygwin -pthread -std=c99 -arbitrary +other_arbitrary])
|
||||
expect(env["ASFLAGS"]).to eq(["asm", "args 1 2"])
|
||||
end
|
||||
end
|
||||
|
||||
Reference in new issue
Block a user