1 | #
|
---|
2 | # TOPPERS ATK2
|
---|
3 | # Toyohashi Open Platform for Embedded Real-Time Systems
|
---|
4 | # Automotive Kernel Version 2
|
---|
5 | #
|
---|
6 | # Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
|
---|
7 | # Toyohashi Univ. of Technology, JAPAN
|
---|
8 | # Copyright (C) 2006-2015 by Center for Embedded Computing Systems
|
---|
9 | # Graduate School of Information Science, Nagoya Univ., JAPAN
|
---|
10 | # Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
|
---|
11 | # Copyright (C) 2011-2013 by Spansion LLC, USA
|
---|
12 | # Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
|
---|
13 | # Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
|
---|
14 | # Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
|
---|
15 | # Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
|
---|
16 | # Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
|
---|
17 | # Copyright (C) 2011-2015 by Witz Corporation
|
---|
18 | # Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
|
---|
19 | # Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
|
---|
20 | # Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
|
---|
21 | #
|
---|
22 | # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
|
---|
23 | # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
|
---|
24 | # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
|
---|
25 | # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
|
---|
26 | # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
|
---|
27 | # スコード中に含まれていること.
|
---|
28 | # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
|
---|
29 | # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
|
---|
30 | # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
|
---|
31 | # の無保証規定を掲載すること.
|
---|
32 | # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
|
---|
33 | # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
|
---|
34 | # と.
|
---|
35 | # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
|
---|
36 | # 作権表示,この利用条件および下記の無保証規定を掲載すること.
|
---|
37 | # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
|
---|
38 | # 報告すること.
|
---|
39 | # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
|
---|
40 | # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
|
---|
41 | # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
|
---|
42 | # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
|
---|
43 | # 免責すること.
|
---|
44 | #
|
---|
45 | # 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
|
---|
46 | # 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
|
---|
47 | # はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
|
---|
48 | # 用する者に対して,AUTOSARパートナーになることを求めている.
|
---|
49 | #
|
---|
50 | # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
|
---|
51 | # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
|
---|
52 | # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
|
---|
53 | # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
|
---|
54 | # の責任を負わない.
|
---|
55 | #
|
---|
56 | # $Id: Makefile 187 2015-06-25 03:39:04Z t_ishikawa $
|
---|
57 | #
|
---|
58 |
|
---|
59 | #
|
---|
60 | # ターゲットの指定(Makefile.targetで上書きされるのを防ぐため)
|
---|
61 | #
|
---|
62 | all:
|
---|
63 |
|
---|
64 | #
|
---|
65 | # ターゲット略称の定義
|
---|
66 | #
|
---|
67 | TARGET = @(TARGET)
|
---|
68 |
|
---|
69 | #
|
---|
70 | # プログラミング言語の定義
|
---|
71 | #
|
---|
72 | SRCLANG = @(SRCLANG)
|
---|
73 | ifeq ($(SRCLANG),c++)
|
---|
74 | USE_CXX = true
|
---|
75 | CXXLIBS = -lstdc++ -lm -lc
|
---|
76 | CXXRTS = cxxrt.o newlibrt.o
|
---|
77 | endif
|
---|
78 |
|
---|
79 | #
|
---|
80 | # ソースファイルのディレクトリの定義
|
---|
81 | #
|
---|
82 | SRCDIR = @(SRCDIR)
|
---|
83 |
|
---|
84 | #
|
---|
85 | # オブジェクトファイル名の拡張子の設定
|
---|
86 | #
|
---|
87 | OBJEXT = @(OBJEXT)
|
---|
88 |
|
---|
89 | #
|
---|
90 | # 実行環境の定義(ターゲット依存に上書きされる場合がある)
|
---|
91 | #
|
---|
92 | DBGENV := @(DBGENV)
|
---|
93 |
|
---|
94 | #
|
---|
95 | # カーネルライブラリ(libkernel.a)のディレクトリ名
|
---|
96 | # (カーネルライブラリもmake対象にする時は,空に定義する)
|
---|
97 | #
|
---|
98 | KERNEL_LIB = @(KERNEL_LIB)
|
---|
99 |
|
---|
100 | #
|
---|
101 | # カーネルを関数単位でコンパイルするかどうかの定義
|
---|
102 | #
|
---|
103 | KERNEL_FUNCOBJS = @(KERNEL_FUNCOBJS)
|
---|
104 |
|
---|
105 | #
|
---|
106 | # トレースログを取得するかどうかの定義
|
---|
107 | #
|
---|
108 | ENABLE_TRACE = @(ENABLE_TRACE)
|
---|
109 |
|
---|
110 | #
|
---|
111 | # システムタイマ(タイマドライバ)を使用するかどうかの定義
|
---|
112 | #
|
---|
113 | ENABLE_SYS_TIMER = @(ENABLE_SYS_TIMER)
|
---|
114 |
|
---|
115 | #
|
---|
116 | # ハードウェアカウンタを無効にするかどうかの定義
|
---|
117 | #
|
---|
118 | OMIT_HW_COUNTER = @(OMIT_HW_COUNTER)
|
---|
119 |
|
---|
120 | #
|
---|
121 | # トレースログに関する設定
|
---|
122 | #
|
---|
123 | ifeq ($(ENABLE_TRACE),true)
|
---|
124 | ENABLE_SYS_TIMER = true
|
---|
125 | CDEFS := $(CDEFS) -DTOPPERS_ENABLE_TRACE
|
---|
126 | KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/logtrace
|
---|
127 | KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
|
---|
128 | endif
|
---|
129 |
|
---|
130 | #
|
---|
131 | # コンフィギュレーションファイルに関する定義
|
---|
132 | #
|
---|
133 | CFGNAME = @(CFGNAME)
|
---|
134 | @(CFG_SERIAL)
|
---|
135 | ifdef ENABLE_SYS_TIMER
|
---|
136 | CFGNAME := $(CFGNAME) target_timer
|
---|
137 | endif
|
---|
138 | ifndef OMIT_HW_COUNTER
|
---|
139 | CFGNAME := $(CFGNAME) target_hw_counter
|
---|
140 | endif
|
---|
141 | CFGNAME := $(CFGNAME) target_mem
|
---|
142 |
|
---|
143 | #
|
---|
144 | # ユーティリティプログラムの名称
|
---|
145 | #
|
---|
146 | PERL = @(PERL)
|
---|
147 | CFG = @(CFG)
|
---|
148 |
|
---|
149 | #
|
---|
150 | # オブジェクトファイル名の定義
|
---|
151 | #
|
---|
152 | OBJNAME = atk2-sc3
|
---|
153 | ifdef OBJEXT
|
---|
154 | OBJFILE = $(OBJNAME).$(OBJEXT)
|
---|
155 | CFG1_OUT = cfg1_out.$(OBJEXT)
|
---|
156 | CFG2_OUT = cfg2_out.$(OBJEXT)
|
---|
157 | CFG3_OUT = cfg3_out.$(OBJEXT)
|
---|
158 | else
|
---|
159 | OBJFILE = $(OBJNAME)
|
---|
160 | CFG1_OUT = cfg1_out
|
---|
161 | CFG2_OUT = cfg2_out
|
---|
162 | CFG3_OUT = cfg3_out
|
---|
163 | endif
|
---|
164 |
|
---|
165 | #
|
---|
166 | # ターゲット依存部のディレクトリの定義
|
---|
167 | #
|
---|
168 | TARGETDIR = $(SRCDIR)/target/$(TARGET)
|
---|
169 |
|
---|
170 | #
|
---|
171 | # ターゲット依存の定義のインクルード
|
---|
172 | #
|
---|
173 | include $(TARGETDIR)/Makefile.target
|
---|
174 |
|
---|
175 | #
|
---|
176 | # ジェネレータ関係の変数の定義
|
---|
177 | #
|
---|
178 | PASS2_TF = $(SRCDIR)/kernel/kernel.tf $(SRCDIR)/kernel/kernel_common.tf
|
---|
179 | DEF_TABS = $(SRCDIR)/kernel/kernel.csv
|
---|
180 | CFG_KERNEL = atk2
|
---|
181 | CFG_TABS := --ini-file $(SRCDIR)/kernel/kernel.ini $(CFG_TABS)
|
---|
182 | CFG_TABS := --api-table $(DEF_TABS) \
|
---|
183 | --cfg1-def-table $(SRCDIR)/kernel/kernel_def.csv $(CFG_TABS)
|
---|
184 | CFG_OBJS := Os_Lcfg.o kernel_mem.o Ioc.o $(CFG_OBJS)
|
---|
185 | CFG2_OUT_SRCS := Os_Lcfg.h Os_Lcfg.c Os_Cfg.h kernel_mem2.c Ioc.c Ioc.h $(CFG2_OUT_SRCS)
|
---|
186 | CFG3_OUT_SRCS := kernel_mem3.c $(CFG3_OUT_SRCS)
|
---|
187 | CFG2_OBJS := Os_Lcfg.o kernel_mem2.o Ioc.o $(CFG2_OBJS)
|
---|
188 | CFG3_OBJS := Os_Lcfg.o kernel_mem3.o Ioc.o $(CFG3_OBJS)
|
---|
189 | ifndef USE_CFG_PASS3
|
---|
190 | ALL_CFG_OBJS := $(CFG_OBJS) cfg1_out.o kernel_mem2.o $(ALL_CFG_OBJS)
|
---|
191 | else
|
---|
192 | ALL_CFG_OBJS := $(CFG_OBJS) cfg1_out.o kernel_mem2.o kernel_mem3.o $(ALL_CFG_OBJS)
|
---|
193 | endif
|
---|
194 |
|
---|
195 | #
|
---|
196 | # 共通コンパイルオプションの定義
|
---|
197 | #
|
---|
198 |
|
---|
199 | COPTS := $(COPTS) -g @(COPTS)
|
---|
200 | ifndef OMIT_WARNING_ALL
|
---|
201 | COPTS := $(COPTS) -Wall -Wno-unused-label -Wpointer-arith
|
---|
202 | endif
|
---|
203 | ifndef OMIT_OPTIMIZATION
|
---|
204 | COPTS := $(COPTS) -O2
|
---|
205 | endif
|
---|
206 | CDEFS := $(CDEFS) @(CDEFS) -DUSE_KERNEL_LIBRARY_SYSLOG
|
---|
207 | INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR)/arch -I$(SRCDIR) $(INCLUDES)
|
---|
208 | LDFLAGS := $(LDFLAGS) @(LDFLAGS)
|
---|
209 | CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) @(LDFLAGS)
|
---|
210 | CFG2_OUT_LDFLAGS := $(CFG2_OUT_LDFLAGS) @(LDFLAGS)
|
---|
211 | CFG3_OUT_LDFLAGS := $(CFG3_OUT_LDFLAGS) @(LDFLAGS)
|
---|
212 | LIBS := $(LIBS) $(CXXLIBS)
|
---|
213 | CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
|
---|
214 |
|
---|
215 | #
|
---|
216 | # アプリケーションプログラムに関する定義
|
---|
217 | #
|
---|
218 | APPLNAME = @(APPLNAME)
|
---|
219 | APPLDIR = @(APPLDIR)
|
---|
220 | APPL_CFG_INPUT := $(foreach file,$(CFGNAME),$(file).arxml)
|
---|
221 |
|
---|
222 | APPL_DIR = $(APPLDIR) $(SRCDIR)/library
|
---|
223 | APPL_ASMOBJS =
|
---|
224 | ifdef USE_CXX
|
---|
225 | APPL_CXXOBJS = $(APPLNAME).o @(APPLOBJS)
|
---|
226 | APPL_COBJS =
|
---|
227 | else
|
---|
228 | APPL_COBJS = $(APPLNAME).o @(APPLOBJS)
|
---|
229 | endif
|
---|
230 | APPL_CFLAGS =
|
---|
231 | APPL_LIBS =
|
---|
232 | ifdef APPLDIR
|
---|
233 | INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIR),-I$(dir))
|
---|
234 | endif
|
---|
235 |
|
---|
236 |
|
---|
237 | #
|
---|
238 | # システムモジュールに関する定義
|
---|
239 | #
|
---|
240 | SYSMOD_DIR := $(SYSMOD_DIR) $(SRCDIR)/sysmod $(SRCDIR)/library
|
---|
241 | SYSMOD_ASMOBJS := $(SYSMOD_ASMOBJS)
|
---|
242 | SYSMOD_COBJS := $(SYSMOD_COBJS) banner.o syslog.o serial.o \
|
---|
243 | log_output.o vasyslog.o t_perror.o strerror.o chkobj.o \
|
---|
244 | $(CXXRTS)
|
---|
245 | SYSMOD_CFLAGS := $(SYSMOD_CFLAGS)
|
---|
246 | SYSMOD_LIBS := $(SYSMOD_LIBS)
|
---|
247 | INCLUDES := $(INCLUDES)
|
---|
248 |
|
---|
249 | #
|
---|
250 | # カーネルに関する定義
|
---|
251 | #
|
---|
252 | # KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
|
---|
253 | # オブジェクトファイル.
|
---|
254 | # KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
|
---|
255 | # ファイルと1対1に対応するオブジェクトファイル.
|
---|
256 | # KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで,
|
---|
257 | # 1つのソースファイルから複数のオブジェクトファイルを生
|
---|
258 | # 成するもの.
|
---|
259 | # KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル.
|
---|
260 | # KERNEL_AUX_COBJS: ロードモジュールに含めないが,カーネルのソースファ
|
---|
261 | # イルと同じオプションを適用してコンパイルすべき,ソー
|
---|
262 | # スがC言語のオブジェクトファイル.
|
---|
263 | #
|
---|
264 | KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/kernel
|
---|
265 | KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
|
---|
266 | KERNEL_COBJS := $(KERNEL_COBJS)
|
---|
267 | KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(SRCDIR)/kernel
|
---|
268 | ifdef OMIT_MAKEOFFSET
|
---|
269 | OFFSET_H =
|
---|
270 | else
|
---|
271 | OFFSET_H = offset.h
|
---|
272 | endif
|
---|
273 |
|
---|
274 |
|
---|
275 | #
|
---|
276 | # ターゲットファイル(複数を同時に選択してはならない)
|
---|
277 | #
|
---|
278 | all: $(OBJFILE)
|
---|
279 | #all: $(OBJNAME).bin
|
---|
280 | #all: $(OBJNAME).srec
|
---|
281 |
|
---|
282 | ##### 以下は編集しないこと #####
|
---|
283 |
|
---|
284 | #
|
---|
285 | # 環境に依存するコンパイルオプションの定義
|
---|
286 | #
|
---|
287 | ifdef DBGENV
|
---|
288 | CDEFS := $(CDEFS) -D$(DBGENV)
|
---|
289 | endif
|
---|
290 |
|
---|
291 | #
|
---|
292 | # カーネルのファイル構成の定義
|
---|
293 | #
|
---|
294 | include $(SRCDIR)/kernel/Makefile.kernel
|
---|
295 | ifdef KERNEL_FUNCOBJS
|
---|
296 | KERNEL_LCSRCS := $(KERNEL_FCSRCS)
|
---|
297 | KERNEL_LCOBJS := $(foreach file,$(KERNEL_FCSRCS),$($(file:.c=)))
|
---|
298 | else
|
---|
299 | KERNEL_CFLAGS := -DALLFUNC $(KERNEL_CFLAGS)
|
---|
300 | KERNEL_COBJS := $(KERNEL_COBJS) \
|
---|
301 | $(foreach file,$(KERNEL_FCSRCS),$(file:.c=.o))
|
---|
302 | endif
|
---|
303 |
|
---|
304 | #
|
---|
305 | # ソースファイルのあるディレクトリに関する定義
|
---|
306 | #
|
---|
307 | vpath %.c $(KERNEL_DIR) $(SYSMOD_DIR) $(APPL_DIR)
|
---|
308 | vpath %.S $(KERNEL_DIR) $(SYSMOD_DIR) $(APPL_DIR)
|
---|
309 | vpath %.arxml $(KERNEL_DIR) $(SYSMOD_DIR) $(APPL_DIR)
|
---|
310 |
|
---|
311 | #
|
---|
312 | # コンパイルのための変数の定義
|
---|
313 | #
|
---|
314 | KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
|
---|
315 | SYSMOD_OBJS = $(SYSMOD_ASMOBJS) $(SYSMOD_COBJS)
|
---|
316 | APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
|
---|
317 | ALL2_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG2_OBJS) \
|
---|
318 | $(END_OBJS) $(HIDDEN_OBJS)
|
---|
319 | ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG_OBJS) \
|
---|
320 | $(END_OBJS) $(HIDDEN_OBJS)
|
---|
321 | ifdef KERNEL_LIB
|
---|
322 | ALL_LIBS = $(APPL_LIBS) $(SYSMOD_LIBS) -lkernel $(LIBS)
|
---|
323 | LIBS_DEP = $(filter %.a,$(ALL_LIBS)) $(KERNEL_LIB)/libkernel.a
|
---|
324 | LDFLAGS := $(LDFLAGS) -L$(KERNEL_LIB)
|
---|
325 | CFG2_OUT_LDFLAGS := $(CFG2_OUT_LDFLAGS) -L$(KERNEL_LIB)
|
---|
326 | CFG3_OUT_LDFLAGS := $(CFG3_OUT_LDFLAGS) -L$(KERNEL_LIB)
|
---|
327 | else
|
---|
328 | ALL_LIBS = $(APPL_LIBS) $(SYSMOD_LIBS) libkernel.a $(LIBS)
|
---|
329 | LIBS_DEP = $(filter %.a,$(ALL_LIBS))
|
---|
330 | endif
|
---|
331 |
|
---|
332 | ifdef LDSCRIPT
|
---|
333 | LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
|
---|
334 | endif
|
---|
335 | ifdef CFG1_OUT_LDSCRIPT
|
---|
336 | CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS) -T $(CFG1_OUT_LDSCRIPT)
|
---|
337 | endif
|
---|
338 | ifdef CFG2_OUT_LDSCRIPT
|
---|
339 | CFG2_OUT_LDFLAGS := $(CFG2_OUT_LDFLAGS) -T $(CFG2_OUT_LDSCRIPT)
|
---|
340 | endif
|
---|
341 | ifdef CFG3_OUT_LDSCRIPT
|
---|
342 | CFG3_OUT_LDFLAGS := $(CFG3_OUT_LDFLAGS) -T $(CFG3_OUT_LDSCRIPT)
|
---|
343 | endif
|
---|
344 |
|
---|
345 | #
|
---|
346 | # オフセットファイル(offset.h)の生成規則
|
---|
347 | #
|
---|
348 | offset.h: $(APPL_CFG_INPUT) Os_Lcfg.timestamp $(SRCDIR)/kernel/genoffset.tf
|
---|
349 | $(CFG) --pass 3 --kernel $(CFG_KERNEL) $(INCLUDES) \
|
---|
350 | --rom-image cfg1_out.srec --symbol-table cfg1_out.syms \
|
---|
351 | -T $(OFFSET_TF) $(CFG_TABS) $(filter %.arxml,$^)
|
---|
352 |
|
---|
353 | #
|
---|
354 | # カーネルのコンフィギュレーションファイルの生成
|
---|
355 | #
|
---|
356 | cfg1_out.c: $(APPL_CFG_INPUT) $(SRCDIR)/kernel/kernel_def.csv
|
---|
357 | $(CFG) --pass 1 --kernel $(CFG_KERNEL) $(INCLUDES) $(CFG_TABS) $(filter %.arxml,$^)
|
---|
358 |
|
---|
359 | $(CFG2_OUT_SRCS): Os_Lcfg.timestamp
|
---|
360 | Os_Lcfg.timestamp: $(APPL_CFG_INPUT) $(START_OBJS) cfg1_out.o $(END_OBJS) $(HIDDEN_OBJS) $(PASS2_TF) $(DEF_TABS)
|
---|
361 | $(LINK) $(CFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
|
---|
362 | $(START_OBJS) cfg1_out.o $(END_OBJS)
|
---|
363 | $(NM) -n $(CFG1_OUT) > cfg1_out.syms
|
---|
364 | $(OBJCOPY) -O srec -S $(CFG1_OUT) cfg1_out.srec
|
---|
365 | $(CFG) --pass 2 --kernel $(CFG_KERNEL) $(INCLUDES) \
|
---|
366 | -T $(TARGETDIR)/target.tf $(CFG_TABS) $(filter %.arxml,$^)
|
---|
367 |
|
---|
368 | # 既存Os_Cfg.hとpass2で生成したOs_Cfg_tmp.hとの差分がある場合Os_Cfg.hを上書き
|
---|
369 | if ! cmp Os_Cfg.h Os_Cfg_tmp.h >/dev/null 2>&1 ; then \
|
---|
370 | mv Os_Cfg_tmp.h Os_Cfg.h ;\
|
---|
371 | else \
|
---|
372 | rm Os_Cfg_tmp.h ;\
|
---|
373 | fi
|
---|
374 | ifdef KERNEL_LIB
|
---|
375 | if ! cmp Os_Cfg.h $(KERNEL_LIB)/Os_Cfg.h >/dev/null 2>&1 ; then \
|
---|
376 | echo Config files Os_Cfg.h and $(KERNEL_LIB)/Os_Cfg.h differ! ;\
|
---|
377 | diff -c Os_Cfg.h $(KERNEL_LIB)/Os_Cfg.h ;\
|
---|
378 | false;\
|
---|
379 | fi
|
---|
380 | endif
|
---|
381 |
|
---|
382 | touch -r Os_Lcfg.c Os_Lcfg.timestamp
|
---|
383 | #
|
---|
384 | # パス3を使用する場合
|
---|
385 | #
|
---|
386 | ifdef USE_CFG_PASS3
|
---|
387 | kernel_mem3.c: $(APPL_CFG_INPUT) Os_Lcfg.timestamp $(ALL2_OBJS) $(LIBS_DEP) $(SRCDIR)/kernel/kernel_mem.tf
|
---|
388 | $(LINK) $(CFLAGS) $(CFG2_OUT_LDFLAGS) -o $(CFG2_OUT) $(START_OBJS) \
|
---|
389 | $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG2_OBJS) $(ALL_LIBS) $(END_OBJS)
|
---|
390 | $(NM) -n $(CFG2_OUT) > cfg2_out.syms
|
---|
391 | $(OBJCOPY) -O srec -S $(CFG2_OUT) cfg2_out.srec
|
---|
392 | rm -f $(CFG3_OUT_LDSCRIPT)
|
---|
393 | $(CFG) --pass 3 --kernel $(CFG_KERNEL) $(INCLUDES) \
|
---|
394 | --rom-image cfg2_out.srec --symbol-table cfg2_out.syms \
|
---|
395 | -T $(TARGETDIR)/target_opt.tf $(CFG_TABS) $(filter %.arxml,$^)
|
---|
396 | if ! [ -f $(CFG3_OUT_LDSCRIPT) ]; then \
|
---|
397 | sed "s/kernel_mem2\.o/kernel_mem3\.o/g" < $(CFG2_OUT_LDSCRIPT) \
|
---|
398 | > $(CFG3_OUT_LDSCRIPT); \
|
---|
399 | fi
|
---|
400 |
|
---|
401 |
|
---|
402 | kernel_mem.c: $(APPL_CFG_INPUT) $(CFG3_OBJS) $(SRCDIR)/kernel/kernel_opt.tf $(LIBS_DEP)
|
---|
403 | $(LINK) $(CFLAGS) $(CFG3_OUT_LDFLAGS) -o $(CFG3_OUT) $(START_OBJS) \
|
---|
404 | $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG3_OBJS) $(ALL_LIBS) $(END_OBJS)
|
---|
405 | $(NM) -n $(CFG3_OUT) > cfg3_out.syms
|
---|
406 | $(OBJCOPY) -O srec -S $(CFG3_OUT) cfg3_out.srec
|
---|
407 | rm -f $(LDSCRIPT)
|
---|
408 | $(CFG) --pass 4 --kernel $(CFG_KERNEL) $(INCLUDES) \
|
---|
409 | --rom-image cfg3_out.srec --symbol-table cfg3_out.syms \
|
---|
410 | -T $(TARGETDIR)/target_mem.tf $(CFG_TABS) $(filter %.arxml,$^)
|
---|
411 | if ! [ -f $(LDSCRIPT) ]; then \
|
---|
412 | sed "s/kernel_mem3\.o/kernel_mem\.o/g" < $(CFG3_OUT_LDSCRIPT) \
|
---|
413 | > $(LDSCRIPT); \
|
---|
414 | fi
|
---|
415 | sed -e '/_kernel_mo_/d' cfg3_out.syms | awk '{print $$1" "$$3}' > cfg3_out-tmp.syms
|
---|
416 | mv cfg3_out-tmp.syms cfg3_out.syms
|
---|
417 | endif
|
---|
418 |
|
---|
419 | #
|
---|
420 | # パス3を使用しない場合
|
---|
421 | #
|
---|
422 | ifndef USE_CFG_PASS3
|
---|
423 | kernel_mem.c: $(APPL_CFG_INPUT) $(CFG2_OBJS) $(SRCDIR)/kernel/kernel_mem.tf $(ATK2_SCHEMA) $(LIBS_DEP)
|
---|
424 | $(LINK) $(CFLAGS) $(CFG2_OUT_LDFLAGS) -o $(CFG2_OUT) $(START_OBJS) \
|
---|
425 | $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG2_OBJS) $(ALL_LIBS) $(END_OBJS)
|
---|
426 | $(NM) -n $(CFG2_OUT) > cfg2_out.syms
|
---|
427 | $(OBJCOPY) -O srec -S $(CFG2_OUT) cfg2_out.srec
|
---|
428 | touch cfg3_out.tf
|
---|
429 | $(CFG) --pass 4 --kernel $(CFG_KERNEL) $(INCLUDES) \
|
---|
430 | --rom-image cfg2_out.srec --symbol-table cfg2_out.syms \
|
---|
431 | -T $(TARGETDIR)/target_mem.tf $(CFG_TABS) $(filter %.arxml,$^)
|
---|
432 | if ! [ -f $(LDSCRIPT) ]; then \
|
---|
433 | sed "s/kernel_mem2\.o/kernel_mem\.o/g" < $(CFG2_OUT_LDSCRIPT) \
|
---|
434 | > $(LDSCRIPT); \
|
---|
435 | fi
|
---|
436 | sed -e '/_kernel_mo_/d' cfg2_out.syms | awk '{print $$1" "$$3}' > cfg2_out-tmp.syms
|
---|
437 | mv cfg2_out-tmp.syms cfg2_out.syms
|
---|
438 | endif
|
---|
439 |
|
---|
440 |
|
---|
441 | #
|
---|
442 | # カーネルライブラリファイルの生成
|
---|
443 | #
|
---|
444 | libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
|
---|
445 | rm -f libkernel.a
|
---|
446 | $(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
|
---|
447 | $(RANLIB) libkernel.a
|
---|
448 |
|
---|
449 | #
|
---|
450 | # 特別な依存関係の定義
|
---|
451 | #
|
---|
452 | banner.o: Os_Lcfg.timestamp $(filter-out banner.o,$(ALL2_OBJS)) $(LIBS_DEP)
|
---|
453 |
|
---|
454 | #
|
---|
455 | # 全体のリンク
|
---|
456 | #
|
---|
457 | $(OBJFILE): $(APPL_CFG_INPUT) Os_Lcfg.timestamp $(ALL_OBJS) $(LIBS_DEP)
|
---|
458 | $(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) $(START_OBJS) \
|
---|
459 | -Wl,-Map,$(OBJNAME).map \
|
---|
460 | $(APPL_OBJS) $(SYSMOD_OBJS) $(CFG_OBJS) $(ALL_LIBS) $(END_OBJS)
|
---|
461 | $(NM) -n $(OBJFILE) | awk '{print $$1" "$$3}' > $(OBJNAME).syms
|
---|
462 | $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
|
---|
463 | ifndef USE_CFG_PASS3
|
---|
464 | diff cfg2_out.syms $(OBJNAME).syms
|
---|
465 | else
|
---|
466 | diff cfg3_out.syms $(OBJNAME).syms
|
---|
467 | endif
|
---|
468 | $(OBJDUMP) -d $(OBJFILE) > $(OBJNAME).dump
|
---|
469 |
|
---|
470 | #
|
---|
471 | # バイナリファイルの生成
|
---|
472 | #
|
---|
473 | $(OBJNAME).bin: $(OBJFILE)
|
---|
474 | $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
|
---|
475 |
|
---|
476 | #
|
---|
477 | # Sレコードファイルの生成
|
---|
478 | #
|
---|
479 | $(OBJNAME).srec: $(OBJFILE)
|
---|
480 | $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
|
---|
481 |
|
---|
482 | #
|
---|
483 | # コンパイル結果の消去
|
---|
484 | #
|
---|
485 | .PHONY: clean
|
---|
486 | clean:
|
---|
487 | rm -f \#* *~ *.o $(CLEAN_FILES)
|
---|
488 | rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin $(OBJNAME).map
|
---|
489 | rm -f kernel_mem.c kernel_mem.h $(CFG3_OUT) cfg3_out.tf cfg3_out.syms cfg3_out.srec
|
---|
490 | rm -f $(CFG2_OUT) cfg2_out.tf cfg2_out.syms cfg2_out.srec
|
---|
491 | rm -f Os_Lcfg.timestamp $(CFG2_OUT_SRCS) $(CFG3_OUT_SRCS)
|
---|
492 | rm -f cfg1_out.c $(CFG1_OUT) cfg1_out.syms cfg1_out.srec
|
---|
493 | rm -f $(OBJNAME).dump
|
---|
494 | rm -f kernel.res
|
---|
495 | ifndef KERNEL_LIB
|
---|
496 | rm -f libkernel.a
|
---|
497 | endif
|
---|
498 | rm -f offset.h
|
---|
499 |
|
---|
500 | .PHONY: cleankernel
|
---|
501 | cleankernel:
|
---|
502 | rm -rf $(KERNEL_LIB_OBJS)
|
---|
503 | rm -f offset.h
|
---|
504 |
|
---|
505 | .PHONY: cleandep
|
---|
506 | cleandep:
|
---|
507 | if ! [ -f Makefile.depend ]; then \
|
---|
508 | rm -f Os_Lcfg.timestamp $(CFG2_OUT_SRCS); \
|
---|
509 | rm -f cfg1_out.c cfg1_out.o $(CFG1_OUT) cfg1_out.syms cfg1_out.srec; \
|
---|
510 | rm -f offset.h; \
|
---|
511 | fi
|
---|
512 | rm -f Makefile.depend
|
---|
513 |
|
---|
514 | .PHONY: realclean
|
---|
515 | realclean: cleandep clean
|
---|
516 | rm -f $(REALCLEAN_FILES)
|
---|
517 |
|
---|
518 | #
|
---|
519 | # ジェネレータが生成したファイルのコンパイルルールと依存関係作成ルール
|
---|
520 | # の定義
|
---|
521 | #
|
---|
522 | # ジェネレータが生成したファイルは,アプリケーションプログラム用,シス
|
---|
523 | # テムサービス用,カーネル用のすべてのオプションを付けてコンパイルする.
|
---|
524 | #
|
---|
525 | OS_LCFG_CFLAGS = $(APPL_CFLAGS) $(SYSMOD_CFLAGS) $(KERNEL_CFLAGS)
|
---|
526 |
|
---|
527 | $(ALL_CFG_OBJS): %.o: %.c
|
---|
528 | $(CC) -c $(CFLAGS) $(OS_LCFG_CFLAGS) $<
|
---|
529 |
|
---|
530 | $(ALL_CFG_OBJS:.o=.s): %.s: %.c
|
---|
531 | $(CC) -S $(CFLAGS) $(OS_LCFG_CFLAGS) $<
|
---|
532 |
|
---|
533 | $(ALL_CFG_OBJS:.o=.d): %.d: %.c
|
---|
534 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
535 | -O "$(CFLAGS) $(OS_LCFG_CFLAGS)" $< >> Makefile.depend
|
---|
536 |
|
---|
537 | #
|
---|
538 | # 特殊な依存関係作成ルールの定義
|
---|
539 | #
|
---|
540 | cfg1_out.depend: $(APPL_CFG_INPUT)
|
---|
541 | @$(CFG) -M cfg1_out.c $(INCLUDES) $< >> Makefile.depend
|
---|
542 |
|
---|
543 | #
|
---|
544 | # 依存関係ファイルの生成
|
---|
545 | #
|
---|
546 | .PHONY: gendepend
|
---|
547 | gendepend:
|
---|
548 | @echo "Generating Makefile.depend."
|
---|
549 |
|
---|
550 | .PHONY: depend
|
---|
551 | ifdef KERNEL_LIB
|
---|
552 | depend: cleandep Os_Lcfg.timestamp gendepend \
|
---|
553 | cfg1_out.depend cfg1_out.d \
|
---|
554 | $(ALL2_OBJS:.o=.d)
|
---|
555 | else
|
---|
556 | depend: cleandep $(OFFSET_H) Os_Lcfg.timestamp gendepend \
|
---|
557 | cfg1_out.depend cfg1_out.d \
|
---|
558 | $(KERNEL_AUX_COBJS:.o=.d) $(KERNEL_ASMOBJS:.o=.d) \
|
---|
559 | $(KERNEL_COBJS:.o=.d) $(KERNEL_LCSRCS:.c=.d) $(ALL2_OBJS:.o=.d)
|
---|
560 | endif
|
---|
561 |
|
---|
562 | #
|
---|
563 | # 依存関係ファイルをインクルード
|
---|
564 | #
|
---|
565 | -include Makefile.depend
|
---|
566 |
|
---|
567 | #
|
---|
568 | # 開発ツールのコマンド名の定義
|
---|
569 | #
|
---|
570 | ifeq ($(TOOL),gcc)
|
---|
571 | #
|
---|
572 | # GNU開発環境用
|
---|
573 | #
|
---|
574 | ifdef GCC_TARGET
|
---|
575 | GCC_TARGET_PREFIX = $(GCC_TARGET)-
|
---|
576 | else
|
---|
577 | GCC_TARGET_PREFIX =
|
---|
578 | endif
|
---|
579 | CC = $(GCC_TARGET_PREFIX)gcc
|
---|
580 | CXX = $(GCC_TARGET_PREFIX)g++
|
---|
581 | AS = $(GCC_TARGET_PREFIX)as
|
---|
582 | LD = $(GCC_TARGET_PREFIX)ld
|
---|
583 | AR = $(GCC_TARGET_PREFIX)ar
|
---|
584 | NM = $(GCC_TARGET_PREFIX)nm
|
---|
585 | RANLIB = $(GCC_TARGET_PREFIX)ranlib
|
---|
586 | OBJCOPY = $(GCC_TARGET_PREFIX)objcopy
|
---|
587 | OBJDUMP = $(GCC_TARGET_PREFIX)objdump
|
---|
588 | endif
|
---|
589 |
|
---|
590 | ifdef USE_CXX
|
---|
591 | LINK = $(CXX)
|
---|
592 | else
|
---|
593 | LINK = $(CC)
|
---|
594 | endif
|
---|
595 |
|
---|
596 | #
|
---|
597 | # コンパイルルールの定義
|
---|
598 | #
|
---|
599 | KERNEL_ALL_COBJS = $(KERNEL_COBJS) $(KERNEL_AUX_COBJS)
|
---|
600 |
|
---|
601 | $(KERNEL_ALL_COBJS): %.o: %.c
|
---|
602 | $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
603 |
|
---|
604 | $(KERNEL_ALL_COBJS:.o=.s): %.s: %.c
|
---|
605 | $(CC) -S $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
606 |
|
---|
607 | $(KERNEL_LCOBJS): %.o:
|
---|
608 | $(CC) -DTOPPERS_$(*F) -o $@ -c $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
609 |
|
---|
610 | $(KERNEL_LCOBJS:.o=.s): %.s:
|
---|
611 | $(CC) -DTOPPERS_$(*F) -o $@ -S $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
612 |
|
---|
613 | $(KERNEL_ASMOBJS): %.o: %.S
|
---|
614 | $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
615 |
|
---|
616 | $(SYSMOD_COBJS): %.o: %.c
|
---|
617 | $(CC) -c $(CFLAGS) $(SYSMOD_CFLAGS) $<
|
---|
618 |
|
---|
619 | $(SYSMOD_COBJS:.o=.s): %.s: %.c
|
---|
620 | $(CC) -S $(CFLAGS) $(SYSMOD_CFLAGS) $<
|
---|
621 |
|
---|
622 | $(SYSMOD_ASMOBJS): %.o: %.S
|
---|
623 | $(CC) -c $(CFLAGS) $(SYSMOD_CFLAGS) $<
|
---|
624 |
|
---|
625 | $(APPL_COBJS): %.o: %.c
|
---|
626 | $(CC) -c $(CFLAGS) $(APPL_CFLAGS) $<
|
---|
627 |
|
---|
628 | $(APPL_COBJS:.o=.s): %.s: %.c
|
---|
629 | $(CC) -S $(CFLAGS) $(APPL_CFLAGS) $<
|
---|
630 |
|
---|
631 | $(APPL_CXXOBJS): %.o: %.cpp
|
---|
632 | $(CXX) -c $(CFLAGS) $(APPL_CFLAGS) $<
|
---|
633 |
|
---|
634 | $(APPL_CXXOBJS:.o=.s): %.s: %.cpp
|
---|
635 | $(CXX) -S $(CFLAGS) $(APPL_CFLAGS) $<
|
---|
636 |
|
---|
637 | $(APPL_ASMOBJS): %.o: %.S
|
---|
638 | $(CC) -c $(CFLAGS) $(APPL_CFLAGS) $<
|
---|
639 |
|
---|
640 | #
|
---|
641 | # 依存関係作成ルールの定義
|
---|
642 | #
|
---|
643 | $(KERNEL_COBJS:.o=.d): %.d: %.c
|
---|
644 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
645 | -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
|
---|
646 |
|
---|
647 | $(KERNEL_LCSRCS:.c=.d): %.d: %.c
|
---|
648 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) -T "$($*)" \
|
---|
649 | -O "-DALLFUNC $(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
|
---|
650 |
|
---|
651 | $(KERNEL_ASMOBJS:.o=.d): %.d: %.S
|
---|
652 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
653 | -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
|
---|
654 |
|
---|
655 | $(SYSMOD_COBJS:.o=.d): %.d: %.c
|
---|
656 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
657 | -O "$(CFLAGS) $(SYSMOD_CFLAGS)" $< >> Makefile.depend
|
---|
658 |
|
---|
659 | $(SYSMOD_ASMOBJS:.o=.d): %.d: %.S
|
---|
660 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
661 | -O "$(CFLAGS) $(SYSMOD_CFLAGS)" $< >> Makefile.depend
|
---|
662 |
|
---|
663 | $(APPL_COBJS:.o=.d): %.d: %.c
|
---|
664 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
665 | -O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
|
---|
666 |
|
---|
667 | $(APPL_CXXOBJS:.o=.d): %.d: %.cpp
|
---|
668 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CXX) $(MAKEDEP_OPTS) \
|
---|
669 | -O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
|
---|
670 |
|
---|
671 | $(APPL_ASMOBJS:.o=.d): %.d: %.S
|
---|
672 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
673 | -O "$(CFLAGS) $(APPL_CFLAGS)" $< >> Makefile.depend
|
---|
674 |
|
---|
675 | #
|
---|
676 | # デフォルトコンパイルルールを上書き
|
---|
677 | #
|
---|
678 | %.o: %.c
|
---|
679 | @echo "*** Default compile rules should not be used."
|
---|
680 | $(CC) -c $(CFLAGS) $<
|
---|
681 |
|
---|
682 | %.s: %.c
|
---|
683 | @echo "*** Default compile rules should not be used."
|
---|
684 | $(CC) -S $(CFLAGS) $<
|
---|
685 |
|
---|
686 | %.o: %.cpp
|
---|
687 | @echo "*** Default compile rules should not be used."
|
---|
688 | $(CXX) -c $(CFLAGS) $<
|
---|
689 |
|
---|
690 | %.s: %.cpp
|
---|
691 | @echo "*** Default compile rules should not be used."
|
---|
692 | $(CXX) -S $(CFLAGS) $<
|
---|
693 |
|
---|
694 | %.o: %.S
|
---|
695 | @echo "*** Default compile rules should not be used."
|
---|
696 | $(CC) -c $(CFLAGS) $<
|
---|