Module: TECSGEN::Makefile
- Defined in:
- lib/tecsgen/core/tecsgen.rb
Overview
Makefile.templ の出力内容を追加、変更するための操作
Constant Summary collapse
- @@fixed_vars =
固定されている変数(add_var で変更できない)
{ :INCLUDES => nil, :DEFINES => nil, :TARGET_BASE => nil, :BASE_DIR => nil }
- @@config_mode =
false
- @@vars =
{ }
- @@vars_default =
{ }
- @@var_comments =
{ }
- @@objs =
[]
- @@ldflags =
""
- @@search_path =
[]
- @@pre_tecsgen_target =
[]
- @@post_tecsgen_target =
[]
- @@lines =
[]
Class Method Summary collapse
-
.add_ldflag(ldflag) ⇒ Object
LDFLAGS に追加する.
-
.add_line(line) ⇒ Object
追加する変数.
-
.add_obj(obj) ⇒ Object
OTHER_OBJS に追加する.
-
.add_post_tecsgen_target(target) ⇒ Object
POST_TECSGEN_TARGET に追加する POST_TECSGEN_TARGET に target を追加する.
-
.add_pre_tecsgen_target(target) ⇒ Object
PRE_TECSGEN_TARGET に追加する PRE_TECSGEN_TARGET に target を追加する.
-
.add_search_path(path) ⇒ Object
サーチパスを追加する CFLAGS, vpath に追加する.
-
.add_var(var, val, comment = nil) ⇒ Object
追加する変数 プラグインからは、デフォルト値を変更できる config により.
-
.get_ldflags ⇒ Object
String を返す.
-
.get_lines ⇒ Object
付加する行を得る.
-
.get_objs ⇒ Object
Array を返す.
-
.get_post_tecsgen_target ⇒ Object
Array を返す.
-
.get_pre_tecsgen_target ⇒ Object
Array を返す.
-
.get_search_path ⇒ Object
Array を返す.
- .get_var_comment(var) ⇒ Object
- .get_var_val(var) ⇒ Object
-
.get_vars ⇒ Object
Array を返す.
-
.set_default_config ⇒ Object
TECSGEN のデフォルト設定を行う Makefile @@fixed_vars で定義されている変数は、変更できず、定数定義されている.
Class Method Details
.add_ldflag(ldflag) ⇒ Object
LDFLAGS に追加する
129 130 131 |
# File 'lib/tecsgen/core/tecsgen.rb', line 129 def self.add_ldflag(ldflag) @@ldflags += " " + ldflag end |
.add_line(line) ⇒ Object
追加する変数
152 153 154 |
# File 'lib/tecsgen/core/tecsgen.rb', line 152 def self.add_line(line) @@lines << line.to_s + "\n" end |
.add_obj(obj) ⇒ Object
OTHER_OBJS に追加する
108 109 110 |
# File 'lib/tecsgen/core/tecsgen.rb', line 108 def self.add_obj(obj) @@objs << obj end |
.add_post_tecsgen_target(target) ⇒ Object
POST_TECSGEN_TARGET に追加する
POST_TECSGEN_TARGET に target を追加する
147 148 149 |
# File 'lib/tecsgen/core/tecsgen.rb', line 147 def self.add_post_tecsgen_target(target) @@post_tecsgen_target << pre_tecsgen_target end |
.add_pre_tecsgen_target(target) ⇒ Object
PRE_TECSGEN_TARGET に追加する
PRE_TECSGEN_TARGET に target を追加する
141 142 143 |
# File 'lib/tecsgen/core/tecsgen.rb', line 141 def self.add_pre_tecsgen_target(target) @@pre_tecsgen_target << pre_tecsgen_target end |
.add_search_path(path) ⇒ Object
サーチパスを追加する
CFLAGS, vpath に追加する
135 136 137 |
# File 'lib/tecsgen/core/tecsgen.rb', line 135 def self.add_search_path(path) @@search_path << path end |
.add_var(var, val, comment = nil) ⇒ Object
追加する変数
プラグインからは、デフォルト値を変更できる config により
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/tecsgen/core/tecsgen.rb', line 115 def self.add_var(var, val, comment = nil) if @@fixed_vars[var] raise "fixed var '#{var}' cannot be changed" end if @@config_mode @@vars_default[var.to_sym] = val @@var_comments_default[var.to_sym] = comment else @@vars[var.to_sym] = val @@var_comments[var.to_sym] = comment end end |
.get_ldflags ⇒ Object
String を返す
177 178 179 |
# File 'lib/tecsgen/core/tecsgen.rb', line 177 def self.get_ldflags # String を返す return @@ldflags end |
.get_lines ⇒ Object
付加する行を得る
193 194 195 |
# File 'lib/tecsgen/core/tecsgen.rb', line 193 def self.get_lines # 付加する行を得る return @@lines.uniq end |
.get_objs ⇒ Object
Array を返す
156 157 158 |
# File 'lib/tecsgen/core/tecsgen.rb', line 156 def self.get_objs # Array を返す return @@objs.uniq end |
.get_post_tecsgen_target ⇒ Object
Array を返す
189 190 191 |
# File 'lib/tecsgen/core/tecsgen.rb', line 189 def self.get_post_tecsgen_target # Array を返す return @@post_tecsgen_target.uniq end |
.get_pre_tecsgen_target ⇒ Object
Array を返す
185 186 187 |
# File 'lib/tecsgen/core/tecsgen.rb', line 185 def self.get_pre_tecsgen_target # Array を返す return @@pre_tecsgen_target.uniq end |
.get_search_path ⇒ Object
Array を返す
181 182 183 |
# File 'lib/tecsgen/core/tecsgen.rb', line 181 def self.get_search_path # Array を返す return @@search_path.uniq end |
.get_var_comment(var) ⇒ Object
173 174 175 |
# File 'lib/tecsgen/core/tecsgen.rb', line 173 def self.get_var_comment(var) return @@var_comments[var] end |
.get_var_val(var) ⇒ Object
169 170 171 |
# File 'lib/tecsgen/core/tecsgen.rb', line 169 def self.get_var_val(var) return @@vars[var] ? @@vars[var] : @@vars_default[var] end |
.get_vars ⇒ Object
Array を返す
160 161 162 163 164 165 166 167 |
# File 'lib/tecsgen/core/tecsgen.rb', line 160 def self.get_vars # Array を返す if RUBY_VERSION >= "1.9" return (@@vars.keys + @@vars_default.keys).sort.uniq else # V1.8 では、Symbol の sort ができないので、一旦 String に置換する return (@@vars.keys + @@vars_default.keys).map{|s| s.to_s }.sort.uniq.map!{|s| s.to_sym } end end |
.set_default_config ⇒ Object
TECSGEN のデフォルト設定を行う
Makefile @@fixed_vars で定義されている変数は、変更できず、定数定義されている
200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/tecsgen/core/tecsgen.rb', line 200 def self.set_default_config add_var("TARGET", "$(TARGET_BASE).exe", "default target name") add_var("TECSGEN", "tecsgen", "default TECS generator") add_var("TIMESTAMP", "$(GEN_DIR)/tecsgen.timestamp", "Time Stamp") add_var("CC", "gcc", "default C Compiler") add_var("CFLAGS", '$(INCLUDES) $(DEFINES) -D "Inline=static inline"', "default C Compiler options") add_var("LD", "gcc", "default Liknker") add_var("LDFLAGS", @@ldflags, "default Liknker Options") add_var("SRC_DIR", "$(BASE_DIR)/src", "default source directory") add_var("_TECS_OBJ_DIR", "$(GEN_DIR)/", "default relocatable object (.o) directory") end |