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

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_ldflagsObject

String を返す



177
178
179
# File 'lib/tecsgen/core/tecsgen.rb', line 177

def self.get_ldflags # String を返す
  return @@ldflags
end

.get_linesObject

付加する行を得る



193
194
195
# File 'lib/tecsgen/core/tecsgen.rb', line 193

def self.get_lines # 付加する行を得る
  return @@lines.uniq
end

.get_objsObject

Array を返す



156
157
158
# File 'lib/tecsgen/core/tecsgen.rb', line 156

def self.get_objs  # Array を返す
  return @@objs.uniq
end

.get_post_tecsgen_targetObject

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_targetObject

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_pathObject

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_varsObject

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_configObject

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