rbuild 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/example2/Rakefile.rb +10 -4
- data/lib/plugins/rbuild_export_c.rb +1 -1
- data/lib/rbuild.rb +2 -2
- data/lib/rbuild_menuconfig.rb +43 -35
- metadata +25 -35
- data.tar.gz.sig +0 -0
- data/README.zh_CN~ +0 -197
- data/README~ +0 -79
- metadata.gz.sig +0 -0
data/example2/Rakefile.rb
CHANGED
@@ -6,7 +6,11 @@ require 'rubygems'
|
|
6
6
|
begin
|
7
7
|
require 'rbuild'
|
8
8
|
rescue Exception
|
9
|
-
|
9
|
+
begin
|
10
|
+
load '../lib/rbuild.rb'
|
11
|
+
rescue Exception
|
12
|
+
raise "\n\n**** Please install rbuild gem first ! ****\n\n"
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
$GCC_VER = nil
|
@@ -116,6 +120,8 @@ task :prepare do
|
|
116
120
|
$add_gcc_options += " --disable-thread"
|
117
121
|
$add_bin_options += " --disable-thread"
|
118
122
|
end
|
123
|
+
$parallel_jobs = rconf.get_value(:PARALLEL_JOBS)
|
124
|
+
$parallel_jobs = 1 unless $parallel_jobs and $parallel_jobs != ""
|
119
125
|
end
|
120
126
|
|
121
127
|
task :diag => :prepare do
|
@@ -142,8 +148,8 @@ task :gcc => [:binutils] do
|
|
142
148
|
Dir.chdir $CURDIR
|
143
149
|
shell "mkdir -p build/gcc"
|
144
150
|
Dir.chdir "build/gcc"
|
145
|
-
shell "#{$CURDIR}/src/gcc-#{$GCC_VER}/configure #{$
|
146
|
-
shell "make all 2>&1 | tee gcc_make.log"
|
151
|
+
shell "#{$CURDIR}/src/gcc-#{$GCC_VER}/configure #{$add_gcc_options} -v 2>&1 | tee gcc_configure.log"
|
152
|
+
shell "make all -j #{$parallel_jobs} 2>&1 | tee gcc_make.log"
|
147
153
|
shell "make install 2>&1 | tee gcc_install.log"
|
148
154
|
Dir.chdir $CURDIR
|
149
155
|
end
|
@@ -154,7 +160,7 @@ task :binutils => :download do
|
|
154
160
|
shell "mkdir -p build/binutils"
|
155
161
|
Dir.chdir "build/binutils"
|
156
162
|
shell "#{$CURDIR}/src/binutils-#{$BINUTILS_VER}/configure #{$add_bin_options} -v 2>&1 | tee binutils_configure.log"
|
157
|
-
shell "make all 2>&1 | tee binutils_make.log"
|
163
|
+
shell "make all -j #{$parallel_jobs} 2>&1 | tee binutils_make.log"
|
158
164
|
shell "make install 2>&1 | tee binutils_install.log"
|
159
165
|
Dir.chdir $CURDIR
|
160
166
|
end
|
@@ -17,7 +17,7 @@ module RBuild
|
|
17
17
|
|
18
18
|
public
|
19
19
|
|
20
|
-
# will be
|
20
|
+
# will be activated by :RBUILD_PLUGIN_EXP_C_HEADER
|
21
21
|
def exp_c_header_file(file)
|
22
22
|
headers = []
|
23
23
|
headers << "/* This file is created by RBuild - a KBuild like configure/build\n"
|
data/lib/rbuild.rb
CHANGED
@@ -381,7 +381,7 @@ module RBuild
|
|
381
381
|
@dirstack << @curpath
|
382
382
|
@curpath = @top_rconfig_path
|
383
383
|
Dir.chdir @curpath
|
384
|
-
if self.methods.include?(plugin)
|
384
|
+
if self.methods.include?(plugin.to_sym)
|
385
385
|
self.send(plugin, file || get_node_value(node).to_s)
|
386
386
|
else
|
387
387
|
warning "plugin \"#{plugin}\" not installed ?"
|
@@ -656,7 +656,7 @@ module RBuild
|
|
656
656
|
end
|
657
657
|
|
658
658
|
def windows?
|
659
|
-
RUBY_PLATFORM =~ /win/
|
659
|
+
RUBY_PLATFORM =~ /(win|mingw)/
|
660
660
|
end
|
661
661
|
|
662
662
|
# set node's value, the value must not be 'false' or 'nil'
|
data/lib/rbuild_menuconfig.rb
CHANGED
@@ -15,20 +15,35 @@ module RBuild
|
|
15
15
|
module Menuconfig
|
16
16
|
|
17
17
|
private
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
18
|
+
if RUBY_VERSION >= "1.9.0"
|
19
|
+
KEY_SPACE = 32.chr
|
20
|
+
KEY_ESC = 27.chr
|
21
|
+
if RUBY_PLATFORM =~ /(win|mingw)/
|
22
|
+
KEY_RIGHT = 77.chr
|
23
|
+
KEY_LEFT = 75.chr
|
24
|
+
KEY_UP = 72.chr
|
25
|
+
KEY_DOWN = 80.chr
|
26
|
+
else
|
27
|
+
KEY_RIGHT = (?C).chr
|
28
|
+
KEY_LEFT = (?D).chr
|
29
|
+
KEY_UP = (?A).chr
|
30
|
+
KEY_DOWN = (?B).chr
|
31
|
+
end
|
32
|
+
else
|
33
|
+
KEY_SPACE = 32
|
34
|
+
KEY_ESC = 27
|
35
|
+
if RUBY_PLATFORM =~ /(win|mingw)/
|
36
|
+
KEY_RIGHT = 77
|
37
|
+
KEY_LEFT = 75
|
38
|
+
KEY_UP = 72
|
39
|
+
KEY_DOWN = 80
|
40
|
+
else
|
41
|
+
KEY_RIGHT = ?C
|
42
|
+
KEY_LEFT = ?D
|
43
|
+
KEY_UP = ?A
|
44
|
+
KEY_DOWN = ?B
|
45
|
+
end
|
46
|
+
end
|
32
47
|
|
33
48
|
# conver the viewable nodes list to navable nodes list
|
34
49
|
def list_nodes_to_navable(list)
|
@@ -116,14 +131,6 @@ module RBuild
|
|
116
131
|
puts " (S)ave (L)oad (Q)uit\n"
|
117
132
|
end
|
118
133
|
|
119
|
-
def get_dbg_key
|
120
|
-
@dbg_idx ||= 0
|
121
|
-
@dbg_ks ||= [KEY_RIGHT, KEY_DOWN, KEY_LEFT, KEY_RIGHT]
|
122
|
-
k = @dbg_ks[@dbg_idx]
|
123
|
-
@dbg_idx += 1
|
124
|
-
k
|
125
|
-
end
|
126
|
-
|
127
134
|
# read key press without echo ...
|
128
135
|
def getch
|
129
136
|
|
@@ -134,22 +141,23 @@ module RBuild
|
|
134
141
|
if windows?
|
135
142
|
require 'Win32API'
|
136
143
|
fun = Win32API.new("crtdll", "_getch", [], 'L')
|
137
|
-
fun.call
|
144
|
+
c = fun.call
|
145
|
+
if RUBY_VERSION >= "1.9.0"
|
146
|
+
c.chr
|
147
|
+
else
|
148
|
+
c
|
149
|
+
end
|
138
150
|
else
|
139
151
|
require 'io/wait'
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
system "stty raw -echo cbreak isig"
|
146
|
-
until STDIN.ready?
|
147
|
-
sleep 0.1
|
148
|
-
end
|
149
|
-
s = STDIN.read_nonblock(3)
|
150
|
-
ensure
|
151
|
-
system "stty #{state}"
|
152
|
+
state = `stty -g`
|
153
|
+
begin
|
154
|
+
system "stty raw -echo cbreak isig"
|
155
|
+
until STDIN.ready?
|
156
|
+
sleep 0.1
|
152
157
|
end
|
158
|
+
s = STDIN.read_nonblock(3)
|
159
|
+
ensure
|
160
|
+
system "stty #{state}"
|
153
161
|
end
|
154
162
|
s[s.size - 1]
|
155
163
|
end
|
metadata
CHANGED
@@ -1,40 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbuild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Ricky Zheng
|
8
13
|
autorequire:
|
9
14
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
- |
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIDNDCCAhygAwIBAgIBADANBgkqhkiG9w0BAQUFADBAMQ4wDAYDVQQDDAVyaWNr
|
14
|
-
eTEZMBcGCgmSJomT8ixkARkWCXJ1Ynlmb3JnZTETMBEGCgmSJomT8ixkARkWA29y
|
15
|
-
ZzAeFw0wODAzMjcxMDExMThaFw0wOTAzMjcxMDExMThaMEAxDjAMBgNVBAMMBXJp
|
16
|
-
Y2t5MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYKCZImiZPyLGQBGRYD
|
17
|
-
b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbGa6VHCZJ729p6k
|
18
|
-
yQGpQn3c4FW4v7w4s5ihvw/1mCqadJ2naEDvLtzAfhmryKiX+g0jLVAyqIM99CFx
|
19
|
-
J1/FWr+sX1TcXU3ONMQ3SCkbnBIkRIMoOtRTYoGwHo4vLpzuWwpW1GwD3L+o94f+
|
20
|
-
qf+AX0tvSQ7JeKksJDCvkuohWs/WYUeKVwQ4T9GLZo9X8GJe9+Xs9zfeJDW9UT8E
|
21
|
-
91dBuwaDXCWMPBGCXcoF5MCD2InqJQVNLDTvI/XfEvIEvcYtDHqyVD9C56bOc4fn
|
22
|
-
xYsRVPOsl77QcbZ4IsfI49AYjCEA1vdmM5DpkNj+MmLl4XDNN6j2T2HB9vVUWa2p
|
23
|
-
fSZC3QIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
|
24
|
-
+zAxobGhan1fNdrUBaP3exmSSsEwDQYJKoZIhvcNAQEFBQADggEBAH27CaW6wNu4
|
25
|
-
N3UdWjAnFf5YjhDRApC8InHPP4rPkQERtQVlrFsGdPHam4Sq2D62KUDs/uIiStrr
|
26
|
-
d25FZyXgNU+gf+Qcan2VxofyROizmcR8urZWKUHAohSTNj/TYfN1p8JRFUENyFW2
|
27
|
-
rdMXBgdOdLakdt3NeWH9Am5A/9+RDZfNaHDpbT17kG/7krTGpncORu+tKDbZwm+6
|
28
|
-
UkrWkOQtRF1uFAOph20THmXCssdJosqbRQkMkHUczK/fAExWgSQwUtbz4hrP1ZEW
|
29
|
-
zdNw3InLFlkne5CIa6/mzTxHHeL8v2TQ/3qyjXnHeLZe9hP7YTG78OV83xiS5z5T
|
30
|
-
Gf4+YbANMIM=
|
31
|
-
-----END CERTIFICATE-----
|
15
|
+
cert_chain: []
|
32
16
|
|
33
|
-
date:
|
17
|
+
date: 2010-11-30 00:00:00 +13:00
|
34
18
|
default_executable:
|
35
19
|
dependencies: []
|
36
20
|
|
37
|
-
description: RBuild is a KBuild like software configure/build system in Ruby DSL
|
21
|
+
description: " RBuild is a KBuild like software configure/build system in Ruby DSL\n"
|
38
22
|
email: ricky_gz_zheng@yahoo.co.nz
|
39
23
|
executables: []
|
40
24
|
|
@@ -44,39 +28,45 @@ extra_rdoc_files: []
|
|
44
28
|
|
45
29
|
files:
|
46
30
|
- example2/Rakefile.rb
|
47
|
-
- lib/rbuild.rb
|
48
31
|
- lib/plugins/rbuild_export_c.rb
|
49
32
|
- lib/plugins/rbuild_export_targets_list.rb
|
33
|
+
- lib/rbuild.rb
|
50
34
|
- lib/rbuild_menuconfig.rb
|
51
|
-
- README.zh_CN
|
52
35
|
- README
|
53
|
-
- README.zh_CN
|
54
|
-
|
55
|
-
|
56
|
-
|
36
|
+
- README.zh_CN
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://rbuild.sf.net
|
39
|
+
licenses: []
|
40
|
+
|
57
41
|
post_install_message:
|
58
42
|
rdoc_options: []
|
59
43
|
|
60
44
|
require_paths:
|
61
45
|
- lib
|
62
46
|
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
63
48
|
requirements:
|
64
49
|
- - ">="
|
65
50
|
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 1
|
53
|
+
- 8
|
54
|
+
- 1
|
66
55
|
version: 1.8.1
|
67
|
-
version:
|
68
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
69
58
|
requirements:
|
70
59
|
- - ">="
|
71
60
|
- !ruby/object:Gem::Version
|
61
|
+
segments:
|
62
|
+
- 0
|
72
63
|
version: "0"
|
73
|
-
version:
|
74
64
|
requirements: []
|
75
65
|
|
76
66
|
rubyforge_project: rbuild
|
77
|
-
rubygems_version: 1.
|
67
|
+
rubygems_version: 1.3.7
|
78
68
|
signing_key:
|
79
|
-
specification_version:
|
69
|
+
specification_version: 3
|
80
70
|
summary: RBuild is a software configure/build tool
|
81
71
|
test_files: []
|
82
72
|
|
data.tar.gz.sig
DELETED
Binary file
|
data/README.zh_CN~
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
RBuild - a KBuild like software configure/build system by Ruby DSL.
|
2
|
-
-------------------------------------------------------------------
|
3
|
-
|
4
|
-
-- 1 RBuild简介 --
|
5
|
-
|
6
|
-
RBuild是一个类似KBuild的软件配置和编译系统。Linux内核配置和编译就采用了KBuild,使用着可以方便地用菜单来配置/定制Linux内核。
|
7
|
-
由于KBuild比较复杂,需要依赖许多Linux下的库,而且定制和扩展KBuild的功能都很麻烦,因此要在一个软件项目中采用KBuild,往往需要作许多工作。
|
8
|
-
|
9
|
-
RBuild的目的也就是为你的软件提供一个类似KBuild的基于菜单的配置系统。在一个软件项目中使用RBuild很简单,只要系统中安装有Ruby(和Rake)就可以了。
|
10
|
-
|
11
|
-
由于RBuild采用Ruby DSL来实现,因此非常灵活,易于扩展。RBuild不仅可以从配置中产生C/C++的头文件,Makefile文件,而且可以很容易地扩展RBuild(增加plugins)来
|
12
|
-
产生你所需要的格式的文件。因此,RBuild不仅可以用于C/C++项目的配置管理,也可以用于其他语言的开发项目。
|
13
|
-
|
14
|
-
-- 2 RBuild 的组成 --
|
15
|
-
|
16
|
-
RBuild由三部分组成:RBuild核心,RBuild插件,和RBuild配置文件(RConfig)。
|
17
|
-
|
18
|
-
RBuild核心完成DSL解析,菜单驱动等功能,RBuild插件负责输出各种文件。RBuild核心和RBuild插件由RBuild项目提供,参加scripts目录下的文件。
|
19
|
-
而RConfig文件则需要由用户编写。RConfig文件就是用户用RBuild DSL来描述自己软件需要配置的信息,RConfig文件可以是一个或者多个散布在用户工程
|
20
|
-
目录中,熟悉Linux内核开发的用户对于这种方式一定非常熟悉。
|
21
|
-
|
22
|
-
最后,RConfig文件作为RBuild的输入,用于产生配置菜单,供使用者对软件进行配置。
|
23
|
-
|
24
|
-
-- 3 RConfig 语法 --
|
25
|
-
|
26
|
-
3.1 RBuild DSL语句
|
27
|
-
RBuild DSL有四种类型:
|
28
|
-
* 第一种用于组织配置项的显示,如:'menu', 'group'。
|
29
|
-
* 第二种是用于产生配置项,如:'choice', 'config'。
|
30
|
-
* 第三种是属性描述,如:'title', 'default', 'help', 'range', 'depends', ...
|
31
|
-
* 最后一种是用于包含其他RConfig文件,如:'source'
|
32
|
-
|
33
|
-
一个简单的RConfig文件例子:
|
34
|
-
|
35
|
-
title "Welcom to my software config system !"
|
36
|
-
menu "Package config" do
|
37
|
-
config :PACKAGE_A => "enable package A"
|
38
|
-
group "Package A options" do
|
39
|
-
depends :PACKAGE_A
|
40
|
-
config :PACKAGE_A_FUN_A => "function A"
|
41
|
-
config :PACKAGE_A_FUN_B => "function B"
|
42
|
-
end
|
43
|
-
config :PACKAGE_B => "enable package B"
|
44
|
-
choice :PACKAGE_B_PARAM => "select package B param" do
|
45
|
-
depends :PACKAGE_B
|
46
|
-
default 200
|
47
|
-
range 100, 200, 300
|
48
|
-
end
|
49
|
-
end
|
50
|
-
menu "RBuild Configuration" do
|
51
|
-
group "RBuild System Options" do
|
52
|
-
choice :RBUILD_SYS_CONFIG_FILE => "RBuild Configuration File" do
|
53
|
-
property :no_export # do not export this, it's for rbuild system internal.
|
54
|
-
default 'rb.config'
|
55
|
-
end
|
56
|
-
|
57
|
-
choice :RBUILD_PLUGIN_EXP_C_HEADER_FILE => "RBuild Export File" do
|
58
|
-
property :no_export # do not export this, it's for rbuild system internal.
|
59
|
-
default 'config.h'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
3.2 RConfig 语法
|
65
|
-
RConfig文件的语法非常简单,如果熟悉Ruby的语法,那么理解就更简单了,以下就是对RConfig语法的一个简单描述:
|
66
|
-
|
67
|
-
3.2.1 do ... end: 用于限定子项目的作用范围,例如:
|
68
|
-
menu "XXX" do
|
69
|
-
config :PACKAGE_A
|
70
|
-
end
|
71
|
-
|
72
|
-
在这里,config :PACKAGE_A 就是menu "XXX" 的子项目。当然,子项目可以是任意合法的语句,如配置项(config),选择项(choice),
|
73
|
-
或者属性,也可以嵌套另一个menu,如:
|
74
|
-
menu "XXX" do
|
75
|
-
menu "YYY" do
|
76
|
-
...
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
通过 do ... end, RConfig就可以构筑了一个有层次的菜单系统。
|
81
|
-
|
82
|
-
3.2.2 “:XXX” 符号
|
83
|
-
在RConfig中,以":"开头的称为“符号”, 如 :MODULE_A, 就是一个“符号”。“符号”用于对某个 menu, group, config 或 choice 进行标识,例如:
|
84
|
-
|
85
|
-
config :MODULE_A => "enable module A"
|
86
|
-
|
87
|
-
在这里,用 :MODULE_A 对这个‘config’进行标识。
|
88
|
-
符号后面可以用 => "description string" 来对这个符号进行描述,这里的描述信息也会作为提示信息显示在配置菜单中。如果不带描述信息,则符号名称会作为
|
89
|
-
描述信息出现在菜单项中。
|
90
|
-
|
91
|
-
符号,作为对'config'或者'choice'的标识,在输出C/C++头文件的时候会被转换成宏定义。例如:
|
92
|
-
config :MODULE_A 这个选项如果被选中,那么最终产生的C/C++头文件中就会出现这么一行:
|
93
|
-
#define CONFIG_MODULE_A
|
94
|
-
也就是说,符号前面被加上“CONFIG_”出现在头文件中。
|
95
|
-
|
96
|
-
有时候符号可以被省略,而直接用描述信息作为标识,例如前面看到的menu实际上就是这种情况:
|
97
|
-
menu "XXX" do
|
98
|
-
...
|
99
|
-
end
|
100
|
-
有些情况下,你需要对一个menu进行显式的标识,如:
|
101
|
-
menu :MENU_XXX => "XXX" do
|
102
|
-
...
|
103
|
-
end
|
104
|
-
|
105
|
-
更多的关于如何编写RConfig文件,请参阅example目录下的例子。
|
106
|
-
|
107
|
-
3.3.3 RBuild DSL参考
|
108
|
-
这里列出目前所能够支持的RBuild DSL:
|
109
|
-
|
110
|
-
3.3.3.1 属性
|
111
|
-
从上面的例子我们可以看到,属性声明要放在do ... end 里面,如果:
|
112
|
-
choice :PACKAGE_B_PARAM => "select package B param" do
|
113
|
-
depends :PACKAGE_B
|
114
|
-
default 200
|
115
|
-
range 100, 200, 300
|
116
|
-
end
|
117
|
-
这里的depends, default, range都是属性声明语句,他们都是作用于choice :PACKAGE_B_PARAM。
|
118
|
-
|
119
|
-
目前RBuild实现的属性声明有:
|
120
|
-
- title: 设置描述信息
|
121
|
-
- help: 设置帮助信息
|
122
|
-
- default: 设置默认值,注意,值的类型要和被设置对象吻合
|
123
|
-
- range: 设置值的范围,通常作用于choice。range的声明方式很灵活,有以下几种形式:
|
124
|
-
range 100, 200, 300 # 只有三个选择,100, 200 或 300
|
125
|
-
range 0..100 # 从0到100的任意值(包括0和100)
|
126
|
-
range "A", "B", "C" # 字符串形式的选择项
|
127
|
-
range 0=>"Zero", 1=>"One", 2=>"Two" # 带描述信息的选择项
|
128
|
-
|
129
|
-
- depends: 声明此项目依赖于其他项目,后面的参数是被依赖项目的标识符(符号),如:
|
130
|
-
depends :MODULE_A, :MODULE_B
|
131
|
-
|
132
|
-
- select: 当本项目被选中时,主动选择另外的项目,如:
|
133
|
-
select :FUN_A, :FUN_B # 但此项目被选中是,同时也选中 :FUN_A 和 :FUN_B
|
134
|
-
|
135
|
-
- unselect: 当本项目被反选中时,也同时反选中另外的项目
|
136
|
-
- no_export: 告诉RBuild在产生输出文件时忽略此项目。
|
137
|
-
- hidden: 隐藏此项目,不在菜单上出现。
|
138
|
-
- property: 这是一个中转器,用于集中设置其他项目,使代码看起来更紧凑,如:
|
139
|
-
property :hidden, :no_export, :default => 0
|
140
|
-
等效于:
|
141
|
-
hidden
|
142
|
-
no_export
|
143
|
-
default 0
|
144
|
-
|
145
|
-
3.3.3.2 项目组织类
|
146
|
-
- menu: 用于产生菜单,用于隐藏子项目,当进入此菜单时,显示子项目。
|
147
|
-
- group: 对一组子项目进行归纳。和menu不同,group在当前视图中显示子项目。
|
148
|
-
|
149
|
-
3.3.3.3 配置项目类
|
150
|
-
- config: 用于简单的配置。对于config,只有"选中"和"未选中"两种状态。当然,这两种状态对应的配置值可以用range来指定。
|
151
|
-
- choice: 用于复杂的配置哦。对于choice,要看是否为choice设置了范围(用range设置范围):
|
152
|
-
如果range存在,则根据range的设置,从range里面选择配置。
|
153
|
-
如果range不存在,则提示用户输入自定义的值。
|
154
|
-
|
155
|
-
3.3.3.4 文件包含类
|
156
|
-
- source: 用于包含另外一个或者多个RConfig文件,例如:
|
157
|
-
source "src/RConfig" # 包含src目录下的RConfig文件。
|
158
|
-
也可以在source参数中使用通配符,如:
|
159
|
-
source "*/RConfig" # 包含所有子目录下的RConfig文件。
|
160
|
-
甚至可以这样:
|
161
|
-
source "**/*/RConfig" # 递归包含所有子目录下的RConfig文件。
|
162
|
-
|
163
|
-
|
164
|
-
-- 4 安装RBuild --
|
165
|
-
|
166
|
-
4.1. 安装 Ruby,可以从 http://www.ruby-lang.org 处下载。或者,如果是在Debian/Ubuntu下:
|
167
|
-
sudo apt-get install ruby1.8 rake
|
168
|
-
|
169
|
-
4.2. 把 'scripts' 目录拷贝到你的项目目录下。
|
170
|
-
|
171
|
-
4.3. 开始编写你的RConfig文件,通常第一个RConfig文件放在你的项目目录下。
|
172
|
-
|
173
|
-
4.4. 在项目的目录下建立一个Rakefile文件, 内容如下:
|
174
|
-
require 'scripts/rbuild'
|
175
|
-
|
176
|
-
task :menuconfig do
|
177
|
-
rconf = RBuild::RConfig.new 'RConfig'
|
178
|
-
rconf.menuconfig()
|
179
|
-
end
|
180
|
-
4.5. 在项目目录下,键入:
|
181
|
-
rake menuconfig
|
182
|
-
|
183
|
-
|
184
|
-
-- 5 RBuild项目主页 --
|
185
|
-
|
186
|
-
http://www.sourceforge.net/projects/rbuild/
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
-- 6 LICENCE --
|
191
|
-
|
192
|
-
RBuild is released under GNU GPLv2.
|
193
|
-
|
194
|
-
Copy Right (c) 2008, Ricky Zheng <ricky_gz_zheng@yahoo.co.nz>
|
195
|
-
|
196
|
-
|
197
|
-
|
data/README~
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
RBuild - a KBuild like software configure/build system by Ruby DSL.
|
2
|
-
-------------------------------------------------------------------
|
3
|
-
|
4
|
-
-- Introduction --
|
5
|
-
|
6
|
-
Rbuild is a KBuild like configure/build system, like KBuild, RBuild provide a menu driven configure interface for target software. RBuild take 'RConfig' files as input, generate target software configuration files by RBuild plugins, for example, the 'export_c' plugin generate C/C++ header config.h and Makefiles.
|
7
|
-
|
8
|
-
A RConfig's syntax looks more like KConfig, plus lots of ruby flavors. Since RConfig file actually is a ruby script, it could be very flexiable and powerful.
|
9
|
-
|
10
|
-
-- RConfig --
|
11
|
-
|
12
|
-
All RConfig instructions falls into four catalogs:
|
13
|
-
- organizing: 'menu', 'group'
|
14
|
-
- configuration: 'choice', 'config'
|
15
|
-
- property: 'title', 'default', 'help', 'range', 'depends', 'select', 'unselect' and 'property'
|
16
|
-
- file inclusion: 'source'
|
17
|
-
|
18
|
-
A Simple RConfig example:
|
19
|
-
|
20
|
-
title "Welcom to my software config system !"
|
21
|
-
menu "Package config" do
|
22
|
-
config :PACKAGE_A => "enable package A"
|
23
|
-
group "Package A options" do
|
24
|
-
depends :PACKAGE_A
|
25
|
-
config :PACKAGE_A_FUN_A => "function A"
|
26
|
-
config :PACKAGE_A_FUN_B => "function B"
|
27
|
-
end
|
28
|
-
config :PACKAGE_B => "enable package B"
|
29
|
-
choice :PACKAGE_B_PARAM => "select package B param" do
|
30
|
-
depends :PACKAGE_B
|
31
|
-
default 200
|
32
|
-
range 100, 200, 300
|
33
|
-
end
|
34
|
-
end
|
35
|
-
menu "RBuild Configuration" do
|
36
|
-
group "RBuild System Options" do
|
37
|
-
choice :RBUILD_SYS_CONFIG_FILE => "RBuild Configuration File" do
|
38
|
-
property :no_export # do not export this, it's for rbuild system internal.
|
39
|
-
default 'rb.config'
|
40
|
-
end
|
41
|
-
|
42
|
-
choice :RBUILD_PLUGIN_EXP_C_HEADER_FILE => "RBuild Export File" do
|
43
|
-
property :no_export # do not export this, it's for rbuild system internal.
|
44
|
-
default 'config.h'
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
-- Install --
|
51
|
-
|
52
|
-
1. Install Ruby interpreter (http://www.ruby-lang.org)
|
53
|
-
2. Copy 'scripts' directory into your target software package
|
54
|
-
3. Write your 'RConfig' files
|
55
|
-
4. Create a 'Rakefile' as:
|
56
|
-
require 'scripts/rbuild'
|
57
|
-
|
58
|
-
task :menuconfig do
|
59
|
-
rconf = RBuild::RConfig.new 'RConfig'
|
60
|
-
rconf.menuconfig()
|
61
|
-
end
|
62
|
-
5. at your target software package's root dir, run:
|
63
|
-
rake menuconfig
|
64
|
-
|
65
|
-
|
66
|
-
-- Project Home --
|
67
|
-
|
68
|
-
RBuild is hosted by SourceForge (http://www.sourceforge.net/projects/rbuild/)
|
69
|
-
RBuild's home page http://rbuild.sf.net/
|
70
|
-
|
71
|
-
|
72
|
-
-- LICENCE --
|
73
|
-
|
74
|
-
RBuild is released under GNU GPLv2.
|
75
|
-
|
76
|
-
Copy Right (c) 2008, Ricky Zheng <ricky_gz_zheng@yahoo.co.nz>
|
77
|
-
|
78
|
-
|
79
|
-
|
metadata.gz.sig
DELETED
Binary file
|