source: atk2-sc3-1.4.0-ntisr/obj/Makefile@ 172

Last change on this file since 172 was 172, checked in by ertl-ishikawa, 8 years ago

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

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