Add 'build' DSL method.
Disallow processing Environments until configuration is performed.
This commit is contained in:
parent
5720662b7c
commit
f8e6666a2c
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.CFile("lexer.c", "lexer.l")
|
env.CFile("lexer.c", "lexer.l")
|
||||||
env.CFile("parser.c", "parser.y")
|
env.CFile("parser.c", "parser.y")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.CFile("file.c", "foo.bar")
|
env.CFile("file.c", "foo.bar")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
debug = Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
debug = Rscons::Environment.new(echo: :command) do |env|
|
||||||
env['CFLAGS'] = '-O2'
|
env['CFLAGS'] = '-O2'
|
||||||
env['CPPFLAGS'] = '-DSTRING="Debug Version"'
|
env['CPPFLAGS'] = '-DSTRING="Debug Version"'
|
||||||
env.Program('program-debug.exe', Dir['src/*.c'])
|
env.Program('program-debug.exe', Dir['src/*.c'])
|
||||||
end
|
end
|
||||||
|
|
||||||
release = debug.clone do |env|
|
release = debug.clone do |env|
|
||||||
env["CPPFLAGS"] = '-DSTRING="Release Version"'
|
env["CPPFLAGS"] = '-DSTRING="Release Version"'
|
||||||
env.Program('program-release.exe', Dir['src/*.c'])
|
env.Program('program-release.exe', Dir['src/*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
env1 = Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
env1 = Rscons::Environment.new(echo: :command) do |env|
|
||||||
env['CFLAGS'] = '-O2'
|
env['CFLAGS'] = '-O2'
|
||||||
env.add_build_hook do |build_op|
|
env.add_build_hook do |build_op|
|
||||||
build_op[:vars]['CPPFLAGS'] = '-DSTRING="Hello"'
|
build_op[:vars]['CPPFLAGS'] = '-DSTRING="Hello"'
|
||||||
@ -7,8 +8,9 @@ env1 = Rscons::Environment.new(echo: :command) do |env|
|
|||||||
$stdout.puts "post #{build_op[:target]}"
|
$stdout.puts "post #{build_op[:target]}"
|
||||||
end
|
end
|
||||||
env.Program('program.exe', Dir['src/*.c'])
|
env.Program('program.exe', Dir['src/*.c'])
|
||||||
end
|
end
|
||||||
|
|
||||||
env2 = env1.clone do |env|
|
env2 = env1.clone do |env|
|
||||||
env.Program('program2.exe', Dir['src/*.c'])
|
env.Program('program2.exe', Dir['src/*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,6 +2,8 @@ configure do
|
|||||||
check_c_header "not___found.h", fail: false, set_define: "HAVE_NOT___FOUND_H"
|
check_c_header "not___found.h", fail: false, set_define: "HAVE_NOT___FOUND_H"
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,6 +2,8 @@ configure do
|
|||||||
check_c_header "string.h", set_define: "HAVE_STRING_H"
|
check_c_header "string.h", set_define: "HAVE_STRING_H"
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,6 +2,8 @@ configure do
|
|||||||
check_cfg program: "my-config"
|
check_cfg program: "my-config"
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Program("myconfigtest", "simple.c")
|
env.Program("myconfigtest", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,6 +2,8 @@ configure do
|
|||||||
check_cfg package: "mypackage"
|
check_cfg package: "mypackage"
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Program("myconfigtest", "simple.c")
|
env.Program("myconfigtest", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
Environment.new do |env|
|
||||||
|
env.Object("simple.o", "simple.cc")
|
||||||
|
env.process
|
||||||
|
end
|
@ -3,6 +3,8 @@ configure do
|
|||||||
check_c_header "stdio.h", set_define: "HAVE_STDIO_H"
|
check_c_header "stdio.h", set_define: "HAVE_STDIO_H"
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,8 +9,10 @@ EOF
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(MySource.new)
|
env.add_builder(MySource.new)
|
||||||
env.MySource('inc.h', [])
|
env.MySource('inc.h', [])
|
||||||
env.Program('program.exe', Dir['*.c'])
|
env.Program('program.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Command("inc.c",
|
env.Command("inc.c",
|
||||||
[],
|
[],
|
||||||
"CMD" => %w[ruby gen.rb ${_TARGET}],
|
"CMD" => %w[ruby gen.rb ${_TARGET}],
|
||||||
@ -7,4 +8,5 @@ Rscons::Environment.new do |env|
|
|||||||
env["inc_c"] = "inc.c"
|
env["inc_c"] = "inc.c"
|
||||||
env.build_after("${build_root}/program.o", "${inc_c}")
|
env.build_after("${build_root}/program.o", "${inc_c}")
|
||||||
env.Program("program.exe", ["program.c", "inc.c"])
|
env.Program("program.exe", ["program.c", "inc.c"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,10 +9,12 @@ EOF
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
env = Rscons::Environment.new do |env|
|
build do
|
||||||
|
env = Rscons::Environment.new do |env|
|
||||||
env["hdr"] = "inc.h"
|
env["hdr"] = "inc.h"
|
||||||
env["src"] = "program.c"
|
env["src"] = "program.c"
|
||||||
env.add_builder(MySource.new)
|
env.add_builder(MySource.new)
|
||||||
env.MySource('${hdr}')
|
env.MySource('${hdr}')
|
||||||
env.Program('program.exe', "${src}")
|
env.Program('program.exe', "${src}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,7 +9,8 @@ EOF
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
e1 = Rscons::Environment.new do |env|
|
build do
|
||||||
|
e1 = Rscons::Environment.new do |env|
|
||||||
env.add_builder(MySource.new)
|
env.add_builder(MySource.new)
|
||||||
env["one"] = "5"
|
env["one"] = "5"
|
||||||
env[:cfg] = {val: "9"}
|
env[:cfg] = {val: "9"}
|
||||||
@ -19,10 +20,11 @@ e1 = Rscons::Environment.new do |env|
|
|||||||
env["the_value"] = lambda do |args|
|
env["the_value"] = lambda do |args|
|
||||||
"${one}${two}78"
|
"${one}${two}78"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
e1.clone do |env|
|
e1.clone do |env|
|
||||||
env[:cfg][:val] = "6"
|
env[:cfg][:val] = "6"
|
||||||
env.MySource('inc.h', [])
|
env.MySource('inc.h', [])
|
||||||
env.Program('program.exe', Dir['*.c'])
|
env.Program('program.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,8 +12,10 @@ class CHGen < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(CHGen.new)
|
env.add_builder(CHGen.new)
|
||||||
env.CHGen("inc.c", ["program.c"])
|
env.CHGen("inc.c", ["program.c"])
|
||||||
env.Program("program.exe", %w[program.c inc.c])
|
env.Program("program.exe", %w[program.c inc.c])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["build_root"] = env.build_root
|
env["build_root"] = env.build_root
|
||||||
env["inc_h"] = "inc.h"
|
env["inc_h"] = "inc.h"
|
||||||
|
|
||||||
@ -11,4 +12,5 @@ Rscons::Environment.new do |env|
|
|||||||
"CMD" => %w[ruby gen.rb ${_TARGET}],
|
"CMD" => %w[ruby gen.rb ${_TARGET}],
|
||||||
"CMD_DESC" => "Generating")
|
"CMD_DESC" => "Generating")
|
||||||
env.produces("inc.c", "inc.h")
|
env.produces("inc.c", "inc.h")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Program("hello-d.exe", Rscons.glob("*.d"))
|
env.Program("hello-d.exe", Rscons.glob("*.d"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program('header.exe', Dir['*.c'])
|
env.Program('header.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
require 'json'
|
require 'json'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
env.add_builder(:JsonToYaml) do |target, sources, cache, env, vars|
|
env.add_builder(:JsonToYaml) do |target, sources, cache, env, vars|
|
||||||
@ -12,4 +13,5 @@ Rscons::Environment.new do |env|
|
|||||||
target
|
target
|
||||||
end
|
end
|
||||||
env.JsonToYaml('foo.yml', 'foo.json')
|
env.JsonToYaml('foo.yml', 'foo.json')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Program('library.exe', ['lib.a', 'three.c'])
|
env.Program('library.exe', ['lib.a', 'three.c'])
|
||||||
env.Library("lib.a", ['one.c', 'two.c'], 'CPPFLAGS' => ['-Dmake_lib'])
|
env.Library("lib.a", ['one.c', 'two.c'], 'CPPFLAGS' => ['-Dmake_lib'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env["ARCMD"] = %w[ar rcf ${_TARGET} ${_SOURCES}]
|
env["ARCMD"] = %w[ar rcf ${_TARGET} ${_SOURCES}]
|
||||||
env.Library("lib.a", Rscons.glob("*.c"))
|
env.Library("lib.a", Rscons.glob("*.c"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Preprocess("pp", "foo.h")
|
env.Preprocess("pp", "foo.h")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/lib"
|
env["CPPPATH"] << "src/lib"
|
||||||
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.c"))
|
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.c"))
|
||||||
env.Program("test-shared.exe",
|
env.Program("test-shared.exe",
|
||||||
@ -8,4 +9,5 @@ Rscons::Environment.new do |env|
|
|||||||
env.build_after("test-shared.exe", libmine.to_s)
|
env.build_after("test-shared.exe", libmine.to_s)
|
||||||
env.Program("test-static.exe",
|
env.Program("test-static.exe",
|
||||||
Rscons.glob("src/**/*.c"))
|
Rscons.glob("src/**/*.c"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
File.open("foo.xyz", "wb") do |fh|
|
File.open("foo.xyz", "wb") do |fh|
|
||||||
fh.puts("hi")
|
fh.puts("hi")
|
||||||
end
|
end
|
||||||
env.SharedObject("foo.o", "foo.xyz")
|
env.SharedObject("foo.o", "foo.xyz")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/lib"
|
env["CPPPATH"] << "src/lib"
|
||||||
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.cc"))
|
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.cc"))
|
||||||
env.Program("test-shared.exe",
|
env.Program("test-shared.exe",
|
||||||
@ -8,4 +9,5 @@ Rscons::Environment.new do |env|
|
|||||||
env.build_after("test-shared.exe", libmine.to_s)
|
env.build_after("test-shared.exe", libmine.to_s)
|
||||||
env.Program("test-static.exe",
|
env.Program("test-static.exe",
|
||||||
Rscons.glob("src/**/*.cc"))
|
Rscons.glob("src/**/*.cc"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/lib"
|
env["CPPPATH"] << "src/lib"
|
||||||
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.d"))
|
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.d"))
|
||||||
env.Program("test-shared.exe",
|
env.Program("test-shared.exe",
|
||||||
@ -6,4 +7,5 @@ Rscons::Environment.new do |env|
|
|||||||
"LIBPATH" => %w[.],
|
"LIBPATH" => %w[.],
|
||||||
"LIBS" => %w[mine])
|
"LIBS" => %w[mine])
|
||||||
env.build_after("test-shared.exe", libmine.to_s)
|
env.build_after("test-shared.exe", libmine.to_s)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/lib"
|
env["CPPPATH"] << "src/lib"
|
||||||
env["SHLD"] = "gcc"
|
env["SHLD"] = "gcc"
|
||||||
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.c"))
|
libmine = env.SharedLibrary("mine", Rscons.glob("src/lib/*.c"))
|
||||||
@ -9,4 +10,5 @@ Rscons::Environment.new do |env|
|
|||||||
env.build_after("test-shared.exe", libmine.to_s)
|
env.build_after("test-shared.exe", libmine.to_s)
|
||||||
env.Program("test-static.exe",
|
env.Program("test-static.exe",
|
||||||
Rscons.glob("src/**/*.c"))
|
Rscons.glob("src/**/*.c"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program('simple.exe', Dir['*.c'])
|
env.Program('simple.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
tempdir = ENV["TEMP"] || ENV["TMP"] || "/tmp"
|
tempdir = ENV["TEMP"] || ENV["TMP"] || "/tmp"
|
||||||
source_file = File.join(tempdir, "abs.c")
|
source_file = File.join(tempdir, "abs.c")
|
||||||
File.open(source_file, "w") do |fh|
|
File.open(source_file, "w") do |fh|
|
||||||
@ -10,4 +11,5 @@ Rscons::Environment.new do |env|
|
|||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
env.Program("abs.exe", source_file)
|
env.Program("abs.exe", source_file)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,7 +12,8 @@ class MyObject < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(MyObject.new)
|
env.add_builder(MyObject.new)
|
||||||
File.open("test.xyz", "w") do |fh|
|
File.open("test.xyz", "w") do |fh|
|
||||||
fh.puts <<EOF
|
fh.puts <<EOF
|
||||||
@ -25,4 +26,5 @@ int main(int argc, char * argv[])
|
|||||||
EOF
|
EOF
|
||||||
env.Program("test", "test.xyz")
|
env.Program("test", "test.xyz")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -8,7 +8,8 @@ class MyProgram < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(MyProgram.new)
|
env.add_builder(MyProgram.new)
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
File.open("two.c", "wb") do |fh|
|
File.open("two.c", "wb") do |fh|
|
||||||
@ -19,4 +20,5 @@ Rscons::Environment.new do |env|
|
|||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
env.MyProgram("simple.exe", ["simple.o", "two.c"])
|
env.MyProgram("simple.exe", ["simple.o", "two.c"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -3,7 +3,9 @@ class TestBuilder < Rscons::Builder
|
|||||||
target
|
target
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(TestBuilder.new)
|
env.add_builder(TestBuilder.new)
|
||||||
env.TestBuilder("file")
|
env.TestBuilder("file")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["LIBS"] += ["c"]
|
env["LIBS"] += ["c"]
|
||||||
env.Program('simple.exe', Dir['*.c'])
|
env.Program('simple.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -25,10 +25,12 @@ class DebugBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(DebugBuilder.new)
|
env.add_builder(DebugBuilder.new)
|
||||||
if Rscons.vars["new_user_dep"]
|
if Rscons.vars["new_user_dep"]
|
||||||
env.depends("foo.o", "new_dep")
|
env.depends("foo.o", "new_dep")
|
||||||
end
|
end
|
||||||
env.DebugBuilder("foo.o", "simple.c")
|
env.DebugBuilder("foo.o", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Copy("simple.copy", "simple.c")
|
env.Copy("simple.copy", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
env.process
|
env.process
|
||||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||||
env.Program('simple.exe', [])
|
env.Program('simple.exe', [])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
env["LDCMD"] = %w[gcc -o ${_TARGET} simple.o]
|
||||||
env.Program('simple.exe', ["simple.o"])
|
env.Program('simple.exe', ["simple.o"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
env.Object("two.o", "two.c")
|
env.Object("two.o", "two.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
target = env.Program("simple.exe", "simple.c")
|
target = env.Program("simple.exe", "simple.c")
|
||||||
user_deps = File.read("user_deps", mode: "rb").split(" ")
|
user_deps = File.read("user_deps", mode: "rb").split(" ")
|
||||||
target.depends(*user_deps)
|
target.depends(*user_deps)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -14,7 +14,9 @@ class TestBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(TestBuilder.new)
|
env.add_builder(TestBuilder.new)
|
||||||
env.TestBuilder("foo")
|
env.TestBuilder("foo")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program("simple.exe", "simple.c")
|
env.Program("simple.exe", "simple.c")
|
||||||
env.clear_targets
|
env.clear_targets
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
base_env = Rscons::Environment.new do |env|
|
build do
|
||||||
|
base_env = Rscons::Environment.new do |env|
|
||||||
env.n_threads = 165
|
env.n_threads = 165
|
||||||
|
end
|
||||||
|
|
||||||
|
my_env = base_env.clone
|
||||||
|
|
||||||
|
puts my_env.n_threads
|
||||||
end
|
end
|
||||||
|
|
||||||
my_env = base_env.clone
|
|
||||||
|
|
||||||
puts my_env.n_threads
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env["LD"] = "gcc"
|
env["LD"] = "gcc"
|
||||||
env.Program('simple.exe', Dir['*.c'])
|
env.Program('simple.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
command = %W[gcc -o ${_TARGET} ${_SOURCES}]
|
command = %W[gcc -o ${_TARGET} ${_SOURCES}]
|
||||||
env.Command("simple.exe",
|
env.Command("simple.exe",
|
||||||
"simple.c",
|
"simple.c",
|
||||||
"CMD" => command,
|
"CMD" => command,
|
||||||
"CMD_DESC" => "BuildIt")
|
"CMD_DESC" => "BuildIt")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
env.Command("simple.txt",
|
env.Command("simple.txt",
|
||||||
"simple.o",
|
"simple.o",
|
||||||
"CMD" => %w[objdump --disassemble --source ${_SOURCES}],
|
"CMD" => %w[objdump --disassemble --source ${_SOURCES}],
|
||||||
"CMD_STDOUT" => "${_TARGET}",
|
"CMD_STDOUT" => "${_TARGET}",
|
||||||
"CMD_DESC" => "My Disassemble")
|
"CMD_DESC" => "My Disassemble")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["sources"] = Rscons.glob("*.c")
|
env["sources"] = Rscons.glob("*.c")
|
||||||
env.Program("simple.exe", "${sources}")
|
env.Program("simple.exe", "${sources}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Directory("teh_dir")
|
env.Directory("teh_dir")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
env.Disassemble("simple.txt", "simple.o")
|
env.Disassemble("simple.txt", "simple.o")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
env = Rscons::Environment.new do |env|
|
build do
|
||||||
|
env = Rscons::Environment.new do |env|
|
||||||
env["CFLAGS"] += %w[-O2 -fomit-frame-pointer]
|
env["CFLAGS"] += %w[-O2 -fomit-frame-pointer]
|
||||||
env[:foo] = :bar
|
env[:foo] = :bar
|
||||||
|
end
|
||||||
|
env.dump
|
||||||
end
|
end
|
||||||
env.dump
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Command("foo", "bar")
|
env.Command("foo", "bar")
|
||||||
env.Command("bar", "baz")
|
env.Command("bar", "baz")
|
||||||
env.Command("baz", "foo")
|
env.Command("baz", "foo")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Command("foo", "foo")
|
env.Command("foo", "foo")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
File.open("foo.xyz", "wb") do |fh|
|
File.open("foo.xyz", "wb") do |fh|
|
||||||
fh.puts("hi")
|
fh.puts("hi")
|
||||||
end
|
end
|
||||||
env.Object("foo.o", "foo.xyz")
|
env.Object("foo.o", "foo.xyz")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env["LD"] = "gcc"
|
env["LD"] = "gcc"
|
||||||
env["LIBPATH"] += ["libdir"]
|
env["LIBPATH"] += ["libdir"]
|
||||||
env.Program('simple.exe', Dir['*.c'])
|
env.Program('simple.exe', Dir['*.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Object("simple.o", "simple.c",
|
env.Object("simple.o", "simple.c",
|
||||||
"CCCMD" => %w[${CC} -c -o ${_TARGET} -Dfoobar ${_SOURCES}])
|
"CCCMD" => %w[${CC} -c -o ${_TARGET} -Dfoobar ${_SOURCES}])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env["DEPFILESUFFIX"] = ".deppy"
|
env["DEPFILESUFFIX"] = ".deppy"
|
||||||
env.Object("simple.o", "simple.c")
|
env.Object("simple.o", "simple.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(:Checker) do |target, sources, cache, env, vars|
|
env.add_builder(:Checker) do |target, sources, cache, env, vars|
|
||||||
unless cache.up_to_date?(target, :Checker, sources, env)
|
unless cache.up_to_date?(target, :Checker, sources, env)
|
||||||
puts "Checker #{sources.first}" if env.echo != :off
|
puts "Checker #{sources.first}" if env.echo != :off
|
||||||
@ -8,4 +9,5 @@ Rscons::Environment.new do |env|
|
|||||||
end
|
end
|
||||||
env.Program("simple.exe", "simple.c")
|
env.Program("simple.exe", "simple.c")
|
||||||
env.Checker(:checker, "simple.exe")
|
env.Checker(:checker, "simple.exe")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Preprocess("simplepp.c", "simple.c")
|
env.Preprocess("simplepp.c", "simple.c")
|
||||||
env.Program("simple.exe", "simplepp.c")
|
env.Program("simple.exe", "simplepp.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["PROGSUFFIX"] = ".out"
|
env["PROGSUFFIX"] = ".out"
|
||||||
env.Program("simple", Dir["*.c"])
|
env.Program("simple", Dir["*.c"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["MYSUFFIX"] = ".out"
|
env["MYSUFFIX"] = ".out"
|
||||||
env.Program("simple${MYSUFFIX}", Dir["*.c"])
|
env.Program("simple${MYSUFFIX}", Dir["*.c"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program("simple", Dir["*.c"], "PROGSUFFIX" => ".xyz")
|
env.Program("simple", Dir["*.c"], "PROGSUFFIX" => ".xyz")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program("simple.exe", Dir["*.c"])
|
env.Program("simple.exe", Dir["*.c"])
|
||||||
env.add_build_hook do |build_op|
|
env.add_build_hook do |build_op|
|
||||||
if build_op[:target].end_with?(".o")
|
if build_op[:target].end_with?(".o")
|
||||||
env.Disassemble("#{build_op[:target]}.txt", build_op[:target])
|
env.Disassemble("#{build_op[:target]}.txt", build_op[:target])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,8 +5,10 @@ class MyObject < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(MyObject.new)
|
env.add_builder(MyObject.new)
|
||||||
env.MyObject("simple.o", "simple.c")
|
env.MyObject("simple.o", "simple.c")
|
||||||
env.Program("simple.exe", "simple.o")
|
env.Program("simple.exe", "simple.o")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class MyCommand < Rscons::Builder
|
build do
|
||||||
|
class MyCommand < Rscons::Builder
|
||||||
def run(target, sources, cache, env, vars)
|
def run(target, sources, cache, env, vars)
|
||||||
vars = vars.merge({
|
vars = vars.merge({
|
||||||
"_TARGET" => target,
|
"_TARGET" => target,
|
||||||
@ -8,10 +9,11 @@ class MyCommand < Rscons::Builder
|
|||||||
cmd_desc = vars["CMD_DESC"] || "MyCommand"
|
cmd_desc = vars["CMD_DESC"] || "MyCommand"
|
||||||
standard_build("#{cmd_desc} #{target}", target, command, sources, env, cache)
|
standard_build("#{cmd_desc} #{target}", target, command, sources, env, cache)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(MyCommand.new)
|
env.add_builder(MyCommand.new)
|
||||||
command = %w[gcc -c -o ${_TARGET} ${_SOURCES}]
|
command = %w[gcc -c -o ${_TARGET} ${_SOURCES}]
|
||||||
env.MyCommand("simple.o", "simple.c", "CMD" => command)
|
env.MyCommand("simple.o", "simple.c", "CMD" => command)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -18,11 +18,13 @@ class NonThreadedTestBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(ThreadedTestBuilder.new)
|
env.add_builder(ThreadedTestBuilder.new)
|
||||||
env.add_builder(NonThreadedTestBuilder.new)
|
env.add_builder(NonThreadedTestBuilder.new)
|
||||||
env.ThreadedTestBuilder("a")
|
env.ThreadedTestBuilder("a")
|
||||||
env.ThreadedTestBuilder("b")
|
env.ThreadedTestBuilder("b")
|
||||||
env.ThreadedTestBuilder("c")
|
env.ThreadedTestBuilder("c")
|
||||||
env.NonThreadedTestBuilder("d")
|
env.NonThreadedTestBuilder("d")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -14,9 +14,11 @@ class TestBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(TestBuilder.new)
|
env.add_builder(TestBuilder.new)
|
||||||
env.TestBuilder("one", [], "wait_time" => "3")
|
env.TestBuilder("one", [], "wait_time" => "3")
|
||||||
env.TestBuilder("two", [], "wait_time" => "0")
|
env.TestBuilder("two", [], "wait_time" => "0")
|
||||||
env.depends("two", "one")
|
env.depends("two", "one")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
program = env.Program("simple.exe", Dir["*.c"])
|
program = env.Program("simple.exe", Dir["*.c"])
|
||||||
env.depends(program, "program.ld")
|
env.depends(program, "program.ld")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -11,10 +11,12 @@ class Fail < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.add_builder(Fail.new)
|
env.add_builder(Fail.new)
|
||||||
4.times do |i|
|
4.times do |i|
|
||||||
wait_time = i + 1
|
wait_time = i + 1
|
||||||
env.Fail("foo_#{wait_time}", [], "wait_time" => wait_time.to_s)
|
env.Fail("foo_#{wait_time}", [], "wait_time" => wait_time.to_s)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Program('simple.exe', Dir['*.cc'])
|
env.Program('simple.exe', Dir['*.cc'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CXXSUFFIX"] = %w[.cccc .cc]
|
env["CXXSUFFIX"] = %w[.cccc .cc]
|
||||||
env["CXXFLAGS"] += %w[-x c++]
|
env["CXXFLAGS"] += %w[-x c++]
|
||||||
env.Program("simple.exe", Dir["*.cc"] + Dir["*.cccc"])
|
env.Program("simple.exe", Dir["*.cc"] + Dir["*.cccc"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Preprocess("simplepp.cc", "simple.cc")
|
env.Preprocess("simplepp.cc", "simple.cc")
|
||||||
env.Program("simple.exe", "simplepp.cc")
|
env.Program("simple.exe", "simplepp.cc")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.Object("one.o", "one.c", 'CPPFLAGS' => ['-DONE'])
|
env.Object("one.o", "one.c", 'CPPFLAGS' => ['-DONE'])
|
||||||
env.Program('two_sources.exe', ['one.o', 'two.c'])
|
env.Program('two_sources.exe', ['one.o', 'two.c'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["ASSUFFIX"] = %w[.ssss .sss]
|
env["ASSUFFIX"] = %w[.ssss .sss]
|
||||||
env["CFLAGS"] += %w[-S]
|
env["CFLAGS"] += %w[-S]
|
||||||
env.Object("one.ssss", "one.c", "CPPFLAGS" => ["-DONE"])
|
env.Object("one.ssss", "one.c", "CPPFLAGS" => ["-DONE"])
|
||||||
env.Object("two.sss", "two.c")
|
env.Object("two.sss", "two.c")
|
||||||
env.Program("two_sources.exe", %w[one.ssss two.sss], "ASFLAGS" => env["ASFLAGS"] + %w[-x assembler])
|
env.Program("two_sources.exe", %w[one.ssss two.sss], "ASFLAGS" => env["ASFLAGS"] + %w[-x assembler])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -10,10 +10,12 @@ class StrictBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.add_builder(StrictBuilder.new)
|
env.add_builder(StrictBuilder.new)
|
||||||
env.Object("one.o", "one.c", "CCFLAGS" => %w[-DONE])
|
env.Object("one.o", "one.c", "CCFLAGS" => %w[-DONE])
|
||||||
env.Object("two.o", "two.c")
|
env.Object("two.o", "two.c")
|
||||||
sources = File.read("sources", mode: "rb").split(" ")
|
sources = File.read("sources", mode: "rb").split(" ")
|
||||||
env.StrictBuilder("program.exe", sources)
|
env.StrictBuilder("program.exe", sources)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new() do |env|
|
build do
|
||||||
|
Rscons::Environment.new() do |env|
|
||||||
env["LIBSUFFIX"] = %w[.aaaa .aaa]
|
env["LIBSUFFIX"] = %w[.aaaa .aaa]
|
||||||
env.Library("one.aaaa", "one.c", "CPPFLAGS" => ["-DONE"])
|
env.Library("one.aaaa", "one.c", "CPPFLAGS" => ["-DONE"])
|
||||||
env.Library("two.aaa", "two.c")
|
env.Library("two.aaa", "two.c")
|
||||||
env.Program("two_sources.exe", %w[one.aaaa two.aaa])
|
env.Program("two_sources.exe", %w[one.aaaa two.aaa])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["OBJSUFFIX"] = %w[.oooo .ooo]
|
env["OBJSUFFIX"] = %w[.oooo .ooo]
|
||||||
env.Object("one.oooo", "one.c", "CPPFLAGS" => ["-DONE"])
|
env.Object("one.oooo", "one.c", "CPPFLAGS" => ["-DONE"])
|
||||||
env.Object("two.ooo", "two.c")
|
env.Object("two.ooo", "two.c")
|
||||||
env.Program("two_sources.exe", %w[one.oooo two.ooo])
|
env.Program("two_sources.exe", %w[one.oooo two.ooo])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,8 @@ class MyObject < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.add_builder(MyObject.new)
|
env.add_builder(MyObject.new)
|
||||||
env.append('CPPPATH' => Rscons.glob('src/**'))
|
env.append('CPPPATH' => Rscons.glob('src/**'))
|
||||||
env.add_build_hook do |build_op|
|
env.add_build_hook do |build_op|
|
||||||
@ -19,4 +20,5 @@ Rscons::Environment.new(echo: :command) do |env|
|
|||||||
end
|
end
|
||||||
env.MyObject('one.o', 'src/one/one.c')
|
env.MyObject('one.o', 'src/one/one.c')
|
||||||
env.MyObject('two.o', 'src/two/two.c')
|
env.MyObject('two.o', 'src/two/two.c')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.append('CPPPATH' => Rscons.glob('src/**/*/'))
|
env.append('CPPPATH' => Rscons.glob('src/**/*/'))
|
||||||
env.add_build_hook do |build_op|
|
env.add_build_hook do |build_op|
|
||||||
if File.basename(build_op[:target]) == "one.o"
|
if File.basename(build_op[:target]) == "one.o"
|
||||||
@ -8,4 +9,5 @@ Rscons::Environment.new(echo: :command) do |env|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
env.Program('build_hook.exe', Rscons.glob('src/**/*.c'))
|
env.Program('build_hook.exe', Rscons.glob('src/**/*.c'))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
Rscons::Environment.new(echo: :command) do |env|
|
build do
|
||||||
|
Rscons::Environment.new(echo: :command) do |env|
|
||||||
env.append('CPPPATH' => Rscons.glob('src/**').sort)
|
env.append('CPPPATH' => Rscons.glob('src/**').sort)
|
||||||
FileUtils.mkdir_p(env.build_root)
|
FileUtils.mkdir_p(env.build_root)
|
||||||
FileUtils.mv("src/one/one.c", env.build_root)
|
FileUtils.mv("src/one/one.c", env.build_root)
|
||||||
env.Object("^/one.o", "^/one.c")
|
env.Object("^/one.o", "^/one.c")
|
||||||
env.Program("program.exe", Rscons.glob('src/**/*.c') + ["^/one.o"])
|
env.Program("program.exe", Rscons.glob('src/**/*.c') + ["^/one.o"])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Copy("inst.exe", "copy.rb")
|
env.Copy("inst.exe", "copy.rb")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CSUFFIX"] = %w[.yargh .c]
|
env["CSUFFIX"] = %w[.yargh .c]
|
||||||
env["CFLAGS"] += %w[-x c]
|
env["CFLAGS"] += %w[-x c]
|
||||||
env["CPPPATH"] += Rscons.glob("src/**")
|
env["CPPPATH"] += Rscons.glob("src/**")
|
||||||
env.Program("program.exe", Rscons.glob("src/**/*.{c,yargh}"))
|
env.Program("program.exe", Rscons.glob("src/**/*.{c,yargh}"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.echo = :command
|
env.echo = :command
|
||||||
env.Install("inst.exe", "install.rb")
|
env.Install("inst.exe", "install.rb")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
@ -6,8 +6,10 @@ class MyBuilder < Rscons::Builder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.echo = :command
|
env.echo = :command
|
||||||
env.add_builder(MyBuilder.new)
|
env.add_builder(MyBuilder.new)
|
||||||
env.MyBuilder("foo")
|
env.MyBuilder("foo")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Install("inst.exe", "install.rb")
|
env.Install("inst.exe", "install.rb")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env.Directory("inst")
|
env.Directory("inst")
|
||||||
env.Install("inst", "install_directory.rb")
|
env.Install("inst", "install_directory.rb")
|
||||||
|
|
||||||
@ -6,4 +7,5 @@ Rscons::Environment.new do |env|
|
|||||||
|
|
||||||
env.Directory("exist/src")
|
env.Directory("exist/src")
|
||||||
env.Install("exist/src", "src")
|
env.Install("exist/src", "src")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/two"
|
env["CPPPATH"] << "src/two"
|
||||||
env.Object("one.o", "src/one/one.c")
|
env.Object("one.o", "src/one/one.c")
|
||||||
env.Object("one.o", "src/two/two.c")
|
env.Object("one.o", "src/two/two.c")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rscons::Environment.new do |env|
|
build do
|
||||||
|
Rscons::Environment.new do |env|
|
||||||
env["CPPPATH"] << "src/two"
|
env["CPPPATH"] << "src/two"
|
||||||
env.Object("one.o", "src/one/one.c")
|
env.Object("one.o", "src/one/one.c")
|
||||||
env.add_post_build_hook do |build_op|
|
env.add_post_build_hook do |build_op|
|
||||||
@ -7,4 +8,5 @@ Rscons::Environment.new do |env|
|
|||||||
env.Object("${MODULE}.o", "src/${MODULE}/${MODULE}.c")
|
env.Object("${MODULE}.o", "src/${MODULE}/${MODULE}.c")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -68,6 +68,7 @@ module Rscons
|
|||||||
# Exit code.
|
# Exit code.
|
||||||
def build(options)
|
def build(options)
|
||||||
begin
|
begin
|
||||||
|
@script.build
|
||||||
Environment.environments.each do |env|
|
Environment.environments.each do |env|
|
||||||
env.process
|
env.process
|
||||||
end
|
end
|
||||||
|
@ -15,6 +15,11 @@ module Rscons
|
|||||||
# All Environments.
|
# All Environments.
|
||||||
attr_reader :environments
|
attr_reader :environments
|
||||||
|
|
||||||
|
# Initialize class instance variables.
|
||||||
|
def class_init
|
||||||
|
@environments = []
|
||||||
|
end
|
||||||
|
|
||||||
# Get an ID for a new Environment. This is a monotonically increasing
|
# Get an ID for a new Environment. This is a monotonically increasing
|
||||||
# integer.
|
# integer.
|
||||||
#
|
#
|
||||||
@ -77,8 +82,7 @@ module Rscons
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
@echo = options[:echo] || :short
|
@echo = options[:echo] || :short
|
||||||
# TODO: remove the || "build" below when autoconf is turned on for build test specs
|
@build_root = "#{Cache.instance.configuration_data["build_dir"]}/e.#{@id}"
|
||||||
@build_root = "#{Cache.instance.configuration_data["build_dir"] || "build"}/e.#{@id}"
|
|
||||||
load_configuration_data!
|
load_configuration_data!
|
||||||
|
|
||||||
if block_given?
|
if block_given?
|
||||||
@ -273,6 +277,9 @@ module Rscons
|
|||||||
# @return [void]
|
# @return [void]
|
||||||
def process
|
def process
|
||||||
cache = Cache.instance
|
cache = Cache.instance
|
||||||
|
unless cache.configuration_data["configured"]
|
||||||
|
raise "Project must be configured before processing an Environment"
|
||||||
|
end
|
||||||
failure = nil
|
failure = nil
|
||||||
begin
|
begin
|
||||||
while @job_set.size > 0 or @threaded_commands.size > 0
|
while @job_set.size > 0 or @threaded_commands.size > 0
|
||||||
@ -1083,4 +1090,6 @@ module Rscons
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Environment.class_init
|
||||||
end
|
end
|
||||||
|
@ -19,6 +19,11 @@ module Rscons
|
|||||||
@script.autoconf = autoconf
|
@script.autoconf = autoconf
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Enter build block.
|
||||||
|
def build(&block)
|
||||||
|
@script.operations["build"] = block
|
||||||
|
end
|
||||||
|
|
||||||
# Enter configuration block.
|
# Enter configuration block.
|
||||||
def configure(&block)
|
def configure(&block)
|
||||||
@script.operations["configure"] = block
|
@script.operations["configure"] = block
|
||||||
@ -81,6 +86,13 @@ module Rscons
|
|||||||
Dsl.new(self).instance_eval(script_contents, path, 1)
|
Dsl.new(self).instance_eval(script_contents, path, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Perform build operation.
|
||||||
|
def build
|
||||||
|
if build_proc = @operations["build"]
|
||||||
|
build_proc.call
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Perform configure operation.
|
# Perform configure operation.
|
||||||
def configure(configure_op)
|
def configure(configure_op)
|
||||||
if operation_lambda = @operations["configure"]
|
if operation_lambda = @operations["configure"]
|
||||||
|
@ -1886,6 +1886,13 @@ EOF
|
|||||||
expect(result.stdout).to match /Checking for C compiler\.\.\. not found/
|
expect(result.stdout).to match /Checking for C compiler\.\.\. not found/
|
||||||
expect(result.status).to_not eq 0
|
expect(result.status).to_not eq 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "exits with an error if configuration has not been performed before attempting to process an environment" do
|
||||||
|
test_dir "configure"
|
||||||
|
result = run_rscons(rsconscript: "error_env_process_before_configure.rb")
|
||||||
|
expect(result.stderr).to match /Project must be configured before processing an Environment/
|
||||||
|
expect(result.status).to_not eq 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user