Add 'build' DSL method.
Disallow processing Environments until configuration is performed.
This commit is contained in:
1 parent
5720662b7c
commit
f8e6666a2c
90 files changed
+637
-434
No files matched your search
@@ -1,3 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
end
|
||||
end
|
||||
@@ -1,13 +1,15 @@
|
||||
Rscons::Environment.new do |env|
|
||||
tempdir = ENV["TEMP"] || ENV["TMP"] || "/tmp"
|
||||
source_file = File.join(tempdir, "abs.c")
|
||||
File.open(source_file, "w") do |fh|
|
||||
fh.puts(<<-EOF)
|
||||
int main()
|
||||
{
|
||||
return 29;
|
||||
}
|
||||
EOF
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
tempdir = ENV["TEMP"] || ENV["TMP"] || "/tmp"
|
||||
source_file = File.join(tempdir, "abs.c")
|
||||
File.open(source_file, "w") do |fh|
|
||||
fh.puts(<<-EOF)
|
||||
int main()
|
||||
{
|
||||
return 29;
|
||||
}
|
||||
EOF
|
||||
end
|
||||
env.Program("abs.exe", source_file)
|
||||
end
|
||||
env.Program("abs.exe", source_file)
|
||||
end
|
||||
@@ -12,10 +12,11 @@ class MyObject < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyObject.new)
|
||||
File.open("test.xyz", "w") do |fh|
|
||||
fh.puts <<EOF
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyObject.new)
|
||||
File.open("test.xyz", "w") do |fh|
|
||||
fh.puts <<EOF
|
||||
#include <stdio.h>
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
@@ -23,6 +24,7 @@ int main(int argc, char * argv[])
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
env.Program("test", "test.xyz")
|
||||
env.Program("test", "test.xyz")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -8,15 +8,17 @@ class MyProgram < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyProgram.new)
|
||||
env.Object("simple.o", "simple.c")
|
||||
File.open("two.c", "wb") do |fh|
|
||||
fh.puts <<-EOF
|
||||
void two(void)
|
||||
{
|
||||
}
|
||||
EOF
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyProgram.new)
|
||||
env.Object("simple.o", "simple.c")
|
||||
File.open("two.c", "wb") do |fh|
|
||||
fh.puts <<-EOF
|
||||
void two(void)
|
||||
{
|
||||
}
|
||||
EOF
|
||||
end
|
||||
env.MyProgram("simple.exe", ["simple.o", "two.c"])
|
||||
end
|
||||
env.MyProgram("simple.exe", ["simple.o", "two.c"])
|
||||
end
|
||||
@@ -3,7 +3,9 @@ class TestBuilder < Rscons::Builder
|
||||
target
|
||||
end
|
||||
end
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("file")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("file")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["LIBS"] += ["c"]
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env["LIBS"] += ["c"]
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
end
|
||||
end
|
||||
@@ -25,10 +25,12 @@ class DebugBuilder < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(DebugBuilder.new)
|
||||
if Rscons.vars["new_user_dep"]
|
||||
env.depends("foo.o", "new_dep")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(DebugBuilder.new)
|
||||
if Rscons.vars["new_user_dep"]
|
||||
env.depends("foo.o", "new_dep")
|
||||
end
|
||||
env.DebugBuilder("foo.o", "simple.c")
|
||||
end
|
||||
env.DebugBuilder("foo.o", "simple.c")
|
||||
end
|
||||
@@ -1,3 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Copy("simple.copy", "simple.c")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Copy("simple.copy", "simple.c")
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,8 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.process
|
||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||
env.Program('simple.exe', [])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.process
|
||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||
env.Program('simple.exe', [])
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||
env.Program('simple.exe', ["simple.o"])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||
env.Program('simple.exe', ["simple.o"])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Object("two.o", "two.c")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Object("two.o", "two.c")
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
Rscons::Environment.new do |env|
|
||||
target = env.Program("simple.exe", "simple.c")
|
||||
user_deps = File.read("user_deps", mode: "rb").split(" ")
|
||||
target.depends(*user_deps)
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
target = env.Program("simple.exe", "simple.c")
|
||||
user_deps = File.read("user_deps", mode: "rb").split(" ")
|
||||
target.depends(*user_deps)
|
||||
end
|
||||
end
|
||||
@@ -14,7 +14,9 @@ class TestBuilder < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("foo")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("foo")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple.exe", "simple.c")
|
||||
env.clear_targets
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple.exe", "simple.c")
|
||||
env.clear_targets
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,9 @@
|
||||
base_env = Rscons::Environment.new do |env|
|
||||
env.n_threads = 165
|
||||
build do
|
||||
base_env = Rscons::Environment.new do |env|
|
||||
env.n_threads = 165
|
||||
end
|
||||
|
||||
my_env = base_env.clone
|
||||
|
||||
puts my_env.n_threads
|
||||
end
|
||||
|
||||
my_env = base_env.clone
|
||||
|
||||
puts my_env.n_threads
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["LD"] = "gcc"
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
build do
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["LD"] = "gcc"
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,9 @@
|
||||
Rscons::Environment.new do |env|
|
||||
command = %W[gcc -o ${_TARGET} ${_SOURCES}]
|
||||
env.Command("simple.exe",
|
||||
"simple.c",
|
||||
"CMD" => command,
|
||||
"CMD_DESC" => "BuildIt")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
command = %W[gcc -o ${_TARGET} ${_SOURCES}]
|
||||
env.Command("simple.exe",
|
||||
"simple.c",
|
||||
"CMD" => command,
|
||||
"CMD_DESC" => "BuildIt")
|
||||
end
|
||||
end
|
||||
@@ -1,8 +1,10 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Command("simple.txt",
|
||||
"simple.o",
|
||||
"CMD" => %w[objdump --disassemble --source ${_SOURCES}],
|
||||
"CMD_STDOUT" => "${_TARGET}",
|
||||
"CMD_DESC" => "My Disassemble")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Command("simple.txt",
|
||||
"simple.o",
|
||||
"CMD" => %w[objdump --disassemble --source ${_SOURCES}],
|
||||
"CMD_STDOUT" => "${_TARGET}",
|
||||
"CMD_DESC" => "My Disassemble")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["sources"] = Rscons.glob("*.c")
|
||||
env.Program("simple.exe", "${sources}")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env["sources"] = Rscons.glob("*.c")
|
||||
env.Program("simple.exe", "${sources}")
|
||||
end
|
||||
end
|
||||
@@ -1,3 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Directory("teh_dir")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Directory("teh_dir")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Disassemble("simple.txt", "simple.o")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Object("simple.o", "simple.c")
|
||||
env.Disassemble("simple.txt", "simple.o")
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
env = Rscons::Environment.new do |env|
|
||||
env["CFLAGS"] += %w[-O2 -fomit-frame-pointer]
|
||||
env[:foo] = :bar
|
||||
build do
|
||||
env = Rscons::Environment.new do |env|
|
||||
env["CFLAGS"] += %w[-O2 -fomit-frame-pointer]
|
||||
env[:foo] = :bar
|
||||
end
|
||||
env.dump
|
||||
end
|
||||
env.dump
|
||||
@@ -1,5 +1,7 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Command("foo", "bar")
|
||||
env.Command("bar", "baz")
|
||||
env.Command("baz", "foo")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Command("foo", "bar")
|
||||
env.Command("bar", "baz")
|
||||
env.Command("baz", "foo")
|
||||
end
|
||||
end
|
||||
@@ -1,3 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Command("foo", "foo")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Command("foo", "foo")
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,8 @@
|
||||
Rscons::Environment.new do |env|
|
||||
File.open("foo.xyz", "wb") do |fh|
|
||||
fh.puts("hi")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
File.open("foo.xyz", "wb") do |fh|
|
||||
fh.puts("hi")
|
||||
end
|
||||
env.Object("foo.o", "foo.xyz")
|
||||
end
|
||||
env.Object("foo.o", "foo.xyz")
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["LD"] = "gcc"
|
||||
env["LIBPATH"] += ["libdir"]
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
build do
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["LD"] = "gcc"
|
||||
env["LIBPATH"] += ["libdir"]
|
||||
env.Program('simple.exe', Dir['*.c'])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env.Object("simple.o", "simple.c",
|
||||
"CCCMD" => %w[${CC} -c -o ${_TARGET} -Dfoobar ${_SOURCES}])
|
||||
build do
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env.Object("simple.o", "simple.c",
|
||||
"CCCMD" => %w[${CC} -c -o ${_TARGET} -Dfoobar ${_SOURCES}])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["DEPFILESUFFIX"] = ".deppy"
|
||||
env.Object("simple.o", "simple.c")
|
||||
build do
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env["DEPFILESUFFIX"] = ".deppy"
|
||||
env.Object("simple.o", "simple.c")
|
||||
end
|
||||
end
|
||||
@@ -1,11 +1,13 @@
|
||||
Rscons::Environment.new do |env|
|
||||
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
|
||||
cache.register_build(target, :Checker, sources, env)
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
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
|
||||
cache.register_build(target, :Checker, sources, env)
|
||||
end
|
||||
target
|
||||
end
|
||||
target
|
||||
env.Program("simple.exe", "simple.c")
|
||||
env.Checker(:checker, "simple.exe")
|
||||
end
|
||||
env.Program("simple.exe", "simple.c")
|
||||
env.Checker(:checker, "simple.exe")
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Preprocess("simplepp.c", "simple.c")
|
||||
env.Program("simple.exe", "simplepp.c")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Preprocess("simplepp.c", "simple.c")
|
||||
env.Program("simple.exe", "simplepp.c")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["PROGSUFFIX"] = ".out"
|
||||
env.Program("simple", Dir["*.c"])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env["PROGSUFFIX"] = ".out"
|
||||
env.Program("simple", Dir["*.c"])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["MYSUFFIX"] = ".out"
|
||||
env.Program("simple${MYSUFFIX}", Dir["*.c"])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env["MYSUFFIX"] = ".out"
|
||||
env.Program("simple${MYSUFFIX}", Dir["*.c"])
|
||||
end
|
||||
end
|
||||
@@ -1,3 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple", Dir["*.c"], "PROGSUFFIX" => ".xyz")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple", Dir["*.c"], "PROGSUFFIX" => ".xyz")
|
||||
end
|
||||
end
|
||||
@@ -1,8 +1,10 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple.exe", Dir["*.c"])
|
||||
env.add_build_hook do |build_op|
|
||||
if build_op[:target].end_with?(".o")
|
||||
env.Disassemble("#{build_op[:target]}.txt", build_op[:target])
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.Program("simple.exe", Dir["*.c"])
|
||||
env.add_build_hook do |build_op|
|
||||
if build_op[:target].end_with?(".o")
|
||||
env.Disassemble("#{build_op[:target]}.txt", build_op[:target])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -5,8 +5,10 @@ class MyObject < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyObject.new)
|
||||
env.MyObject("simple.o", "simple.c")
|
||||
env.Program("simple.exe", "simple.o")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyObject.new)
|
||||
env.MyObject("simple.o", "simple.c")
|
||||
env.Program("simple.exe", "simple.o")
|
||||
end
|
||||
end
|
||||
@@ -1,17 +1,19 @@
|
||||
class MyCommand < Rscons::Builder
|
||||
def run(target, sources, cache, env, vars)
|
||||
vars = vars.merge({
|
||||
"_TARGET" => target,
|
||||
"_SOURCES" => sources,
|
||||
})
|
||||
command = env.build_command("${CMD}", vars)
|
||||
cmd_desc = vars["CMD_DESC"] || "MyCommand"
|
||||
standard_build("#{cmd_desc} #{target}", target, command, sources, env, cache)
|
||||
build do
|
||||
class MyCommand < Rscons::Builder
|
||||
def run(target, sources, cache, env, vars)
|
||||
vars = vars.merge({
|
||||
"_TARGET" => target,
|
||||
"_SOURCES" => sources,
|
||||
})
|
||||
command = env.build_command("${CMD}", vars)
|
||||
cmd_desc = vars["CMD_DESC"] || "MyCommand"
|
||||
standard_build("#{cmd_desc} #{target}", target, command, sources, env, cache)
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyCommand.new)
|
||||
command = %w[gcc -c -o ${_TARGET} ${_SOURCES}]
|
||||
env.MyCommand("simple.o", "simple.c", "CMD" => command)
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(MyCommand.new)
|
||||
command = %w[gcc -c -o ${_TARGET} ${_SOURCES}]
|
||||
env.MyCommand("simple.o", "simple.c", "CMD" => command)
|
||||
end
|
||||
@@ -18,11 +18,13 @@ class NonThreadedTestBuilder < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(ThreadedTestBuilder.new)
|
||||
env.add_builder(NonThreadedTestBuilder.new)
|
||||
env.ThreadedTestBuilder("a")
|
||||
env.ThreadedTestBuilder("b")
|
||||
env.ThreadedTestBuilder("c")
|
||||
env.NonThreadedTestBuilder("d")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(ThreadedTestBuilder.new)
|
||||
env.add_builder(NonThreadedTestBuilder.new)
|
||||
env.ThreadedTestBuilder("a")
|
||||
env.ThreadedTestBuilder("b")
|
||||
env.ThreadedTestBuilder("c")
|
||||
env.NonThreadedTestBuilder("d")
|
||||
end
|
||||
end
|
||||
@@ -14,9 +14,11 @@ class TestBuilder < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("one", [], "wait_time" => "3")
|
||||
env.TestBuilder("two", [], "wait_time" => "0")
|
||||
env.depends("two", "one")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(TestBuilder.new)
|
||||
env.TestBuilder("one", [], "wait_time" => "3")
|
||||
env.TestBuilder("two", [], "wait_time" => "0")
|
||||
env.depends("two", "one")
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
program = env.Program("simple.exe", Dir["*.c"])
|
||||
env.depends(program, "program.ld")
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
program = env.Program("simple.exe", Dir["*.c"])
|
||||
env.depends(program, "program.ld")
|
||||
end
|
||||
end
|
||||
@@ -11,10 +11,12 @@ class Fail < Rscons::Builder
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(Fail.new)
|
||||
4.times do |i|
|
||||
wait_time = i + 1
|
||||
env.Fail("foo_#{wait_time}", [], "wait_time" => wait_time.to_s)
|
||||
build do
|
||||
Rscons::Environment.new do |env|
|
||||
env.add_builder(Fail.new)
|
||||
4.times do |i|
|
||||
wait_time = i + 1
|
||||
env.Fail("foo_#{wait_time}", [], "wait_time" => wait_time.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user