rbuild 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|