remove build_dir functionality - close #65
This commit is contained in:
1 parent
a1efb1c1b3
commit
432d221be2
22 files changed
+46
-157
No files matched your search
@@ -0,0 +1,22 @@
|
||||
class MyObject < Rscons::Builder
|
||||
def run(target, sources, cache, env, vars)
|
||||
env.run_builder(env.builders["Object"], target, sources, cache, vars)
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env.add_builder(MyObject.new)
|
||||
env.append('CPPPATH' => Rscons.glob('src/**'))
|
||||
env.add_build_hook do |build_op|
|
||||
if build_op[:builder].name == "MyObject" && build_op[:sources].first =~ %r{one\.c}
|
||||
build_op[:vars]["CFLAGS"] << "-O1"
|
||||
build_op[:sources] = ['src/two/two.c']
|
||||
elsif build_op[:builder].name == "MyObject" && build_op[:target] =~ %r{two\.o}
|
||||
new_vars = build_op[:vars].clone
|
||||
new_vars["CFLAGS"] << "-O2"
|
||||
build_op[:vars] = new_vars
|
||||
end
|
||||
end
|
||||
env.MyObject('one.o', 'src/one/one.c')
|
||||
env.MyObject('two.o', 'src/two/two.c')
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env.append('CPPPATH' => Rscons.glob('src/**/*/'))
|
||||
env.add_build_hook do |build_op|
|
||||
if File.basename(build_op[:target]) == "one.o"
|
||||
build_op[:vars]["CFLAGS"] << "-O1"
|
||||
elsif File.basename(build_op[:target]) == "two.o"
|
||||
build_op[:vars]["CFLAGS"] << "-O2"
|
||||
end
|
||||
end
|
||||
env.Program('build_hook.exe', Rscons.glob('src/**/*.c'))
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
Rscons::Environment.new(echo: :command) do |env|
|
||||
env.append('CPPPATH' => Rscons.glob('src/**').sort)
|
||||
FileUtils.mkdir_p(env.build_root)
|
||||
FileUtils.mv("src/one/one.c", env.build_root)
|
||||
env.Object("^/one.o", "^/one.c")
|
||||
env.Program("program.exe", Rscons.glob('src/**/*.c') + ["^/one.o"])
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Copy("inst.exe", "copy.rb")
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CSUFFIX"] = %w[.yargh .c]
|
||||
env["CFLAGS"] += %w[-x c]
|
||||
env["CPPPATH"] += Rscons.glob("src/**")
|
||||
env.Program("program.exe", Rscons.glob("src/**/*.{c,yargh}"))
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.echo = :command
|
||||
env.Install("inst.exe", "install.rb")
|
||||
end
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
class MyBuilder < Rscons::Builder
|
||||
def run(options)
|
||||
env, target = options.values_at(:env, :target)
|
||||
env.print_builder_run_message("MyBuilder #{target}", "MyBuilder #{target} command")
|
||||
target
|
||||
end
|
||||
end
|
||||
|
||||
Rscons::Environment.new do |env|
|
||||
env.echo = :command
|
||||
env.add_builder(MyBuilder.new)
|
||||
env.MyBuilder("foo")
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Install("inst.exe", "install.rb")
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env.Directory("inst")
|
||||
env.Install("inst", "install_directory.rb")
|
||||
|
||||
env.Install("noexist/src", "src")
|
||||
|
||||
env.Directory("exist/src")
|
||||
env.Install("exist/src", "src")
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/two"
|
||||
env.Object("one.o", "src/one/one.c")
|
||||
env.Object("one.o", "src/two/two.c")
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/two"
|
||||
env.Object("one.o", "src/one/one.c")
|
||||
env.add_post_build_hook do |build_op|
|
||||
if build_op[:target] == "one.o"
|
||||
env["MODULE"] = "two"
|
||||
env.Object("${MODULE}.o", "src/${MODULE}/${MODULE}.c")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
#include "two.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
two();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include "two.h"
|
||||
|
||||
void two(void)
|
||||
{
|
||||
printf("Hello from two()\n");
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef TWO_H
|
||||
#define TWO_H
|
||||
|
||||
void two(void);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user