source: atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/Makefile@ 5

Last change on this file since 5 was 5, checked in by msugi, 14 years ago

新世代カーネル対応コンフィギュレータと必要なファイル追加.

File size: 10.9 KB
Line 
1#
2# TOPPERS/OSEK Kernel
3# Toyohashi Open Platform for Embedded Real-Time Systems/
4# OSEK Kernel
5#
6# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7# Toyohashi Univ. of Technology, JAPAN
8# Copyright (C) 2004-2006 by Witz Corporation, JAPAN
9# Copyright (C) 2010 by Meika Sugimoto
10#
11# 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12# によって公表されている GNU General Public License の Version 2 に記
13# 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14# を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
15# 利用と呼ぶ)することを無償で許諾する.
16# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18# スコード中に含まれていること.
19# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22# の無保証規定を掲載すること.
23# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25# と.
26# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27# 作権表示,この利用条件および下記の無保証規定を掲載すること.
28# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29# 報告すること.
30# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32#
33# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34# よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35# 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36# 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
37#
38#
39
40all:
41#
42# ターゲット名の定義
43#
44CPU = sh2-gnu
45SYS = cq7144a
46
47#
48# コンフォーマンスクラスの定義
49#
50
51CONFCLASS = ecc2
52
53#
54# ソースファイルのトップディレクトリの定義
55#
56TOPDIR = ../../..
57
58#
59# 出力ファイルのディレクトリの定義
60#
61OUTDIR = ./output
62
63#
64# コンフィギュレーションファイルの改行コード変換ツール定義
65#
66# SystemGeneratorにより出力されるコンフィグレーションファイルの
67# 改行コードはCR+LFとなっているため、
68# LFに変換するツール名・パス名・オプションを定義する。
69# 使用するツールは任意。以下は参考使用例
70#
71#CHANGELINE_TOOL = nkf.exe
72#CHANGELINE_TOOL_PATH =
73#CHANGELINE_TOOL_OPTION = -d
74
75#
76# ターゲット依存の定義のインクルード
77#
78include $(TOPDIR)/config/$(CPU)/$(SYS)/Makefile.config
79include $(TOPDIR)/config/$(CPU)/Makefile.config
80
81#
82# 共通コンパイルオプションの定義
83#
84COPTS := $(COPTS)
85CDEFS := $(CDEFS)
86INCLUDES := -I. -I$(TOPDIR)/include $(INCLUDES) \
87 -I$(TOPDIR)/syslib -I$(TOPDIR)/syslib/$(CPU)/$(SYS)
88LDFLAGS := -nostdlib -lgcc $(LDFLAGS)
89LIBS := $(LIBS)
90CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
91
92#
93# アプリケーションプログラムに関する定義
94#
95UNAME = sample1_ecc2
96UTASK_DIR := $(UTASK_DIR):$(TOPDIR)/sample
97UTASK_ASMOBJS =
98UTASK_COBJS = $(UNAME).o sample1_log_ecc2.o
99UTASK_CFLAGS =
100UTASK_LIBS =
101
102#
103# システムサービスに関する定義
104# (現在システムサービスに関する定義は存在しないが、将来の追加のため準備してある)
105#
106STASK_DIR := $(STASK_DIR)
107STASK_ASMOBJS := $(STASK_ASMOBJS)
108STASK_COBJS := $(STASK_COBJS)
109STASK_CFLAGS := $(STASK_CFLAGS)
110STASK_LIBS := $(STASK_LIBS)
111
112#
113# カーネルに関する定義
114#
115# KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
116# オブジェクトファイル.
117# KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
118# ファイルと1対1に対応するオブジェクトファイル.
119KERNEL = $(TOPDIR)/kernel
120KERNEL_DIR := $(KERNEL_DIR):$(KERNEL):$(KERNEL)/$(CONFCLASS)
121KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
122KERNEL_COBJS := alarm.o event.o interrupt.o osctl.o resource.o \
123 task.o task_manage.o $(KERNEL_COBJS)
124KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(KERNEL) -I$(KERNEL)/$(CONFCLASS)
125
126#
127# システムライブラリに関する定義
128#
129SYSLIB_DIR := $(SYSLIB_DIR):$(TOPDIR)/syslib:$(TOPDIR)/syslib/$(CPU)/$(SYS)
130SYSLIB_ASMOBJS =
131SYSLIB_COBJS := $(SYSLIB_COBJS) serial.o sys_timer.o
132SYSLIB_CFLAGS =
133SYSLIB_LIBS =
134
135#
136# システムライブラリ依存部に関する定義
137#
138SYSLIB_DIR := $(SYSLIB_DIR):$(TOPDIR)/syslib/$(CPU)/$(SYS)
139SYSLIB_ASMOBJS =
140SYSLIB_COBJS := $(SYSLIB_COBJS) hw_serial.o hw_sys_timer.o sample_config.o
141SYSLIB_CFLAGS =
142SYSLIB_LIBS =
143
144#
145# オブジェクトファイル名の拡張子の設定
146#
147OBJEXT = elf
148
149#
150# オブジェクトファイル名の定義
151#
152OBJNAME = toppers_osek_$(SYS)
153ifdef OBJEXT
154 OBJFILE = $(OUTDIR)/$(OBJNAME).$(OBJEXT)
155else
156 OBJFILE = $(OUTDIR)/$(OBJNAME)
157endif
158
159#
160# ターゲットファイル(複数を同時に選択してはならない)
161#
162all: $(OBJNAME).mot
163
164
165##### 以下は編集しないこと #####
166
167#
168# ソースファイルのあるディレクトリに関する定義
169#
170vpath %.c $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR):$(SYSLIB_DIR)
171vpath %.S $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR):$(SYSLIB_DIR)
172
173#
174# オブジェクトファイルのあるディレクトリに関する定義
175#
176vpath %.o $(OUTDIR)
177
178#
179# コンパイルのための変数の定義
180#
181START_OBJS = $(START_ASMOBJS)
182KERNEL_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS)
183STASK_OBJS = $(STASK_ASMOBJS) $(STASK_COBJS)
184UTASK_OBJS = $(UTASK_ASMOBJS) $(UTASK_COBJS)
185SYSLIB_OBJS = $(SYSLIB_ASMOBJS) $(SYSLIB_COBJS)
186
187ALL_OBJS = $(START_OBJS) kernel_cfg.o $(KERNEL_OBJS) $(UTASK_OBJS) $(STASK_OBJS) $(SYSLIB_OBJS)
188
189ifdef LDSCRIPT
190 LDFLAGS := $(LDFLAGS) -T $(TOPDIR)/config/$(LDSCRIPT)
191endif
192
193#
194# 全体のリンク
195#
196$(OBJFILE): $(ALL_OBJS)
197 $(LINK) $(CFLAGS) -Wl,-Map,$(OUTDIR)/$(OBJNAME).map -o $(OBJFILE) $(addprefix $(OUTDIR)/, $(ALL_OBJS)) $(LDFLAGS)
198 $(NM) $(OBJFILE) > $(OUTDIR)/$(OBJNAME).syms
199
200#
201# MOTファイルの生成(Sレコードファイルと同一)
202#
203$(OBJNAME).mot: $(OBJFILE)
204 $(OBJCOPY) -O srec -S $(OBJFILE) $(OUTDIR)/$(OBJNAME).mot
205
206
207#
208# コンパイル結果の消去
209#
210clean:
211 rm -f \#* *~ $(OUTDIR)/*.o tmpfile?
212 rm -f $(OUTDIR)/$(OBJNAME).map
213 rm -f $(OUTDIR)/$(OBJNAME)
214 rm -f $(OUTDIR)/$(OBJNAME).syms $(OUTDIR)/$(OBJNAME).mot
215 rm -f $(OUTDIR)/$(OBJNAME).elf
216 rm -f kernel_cfg.c kernel_id.h
217 rm -f cfg1_out*
218
219cleandep:
220 rm -f Makefile.depend
221
222realclean: cleandep clean
223
224#
225# カーネルのコンフィギュレーションファイルの生成
226#
227
228# !!kernel_config.tfも必要なので定義を依存部に分離要
229TF = $(KERNEL)/$(CONFCLASS)/kernel_ecc2.tf $(KERNEL)/kernel.tf \
230 $(TOPDIR)/config/$(CPU)/cpu.tf \
231 $(TOPDIR)/config/$(CPU)/$(SYS)/sys.tf
232
233kernel_cfg.c kernel_id.h: cfg1_out.srec cfg1_out.syms $(UNAME).oil $(TF)
234 $(TOPDIR)/cfg/cfg.exe $(UNAME).oil -I$(TOPDIR)/cfg/impl_oil \
235 --pass 2 --kernel atk1 -T $(KERNEL)/$(CONFCLASS)/kernel_ecc2.tf \
236 $(INCLUDES) -I$(KERNEL) \
237 --api-table $(KERNEL)/$(CONFCLASS)/atk_object_table.csv \
238 --cfg1-def-table $(TOPDIR)/config/$(CPU)/cpu_def.csv \
239 --cfg1-def-table $(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv \
240 --cfg1-def-table $(KERNEL)/$(CONFCLASS)/kernel_def.csv
241
242cfg1_out.srec cfg1_out.syms : cfg1_out.c
243 $(CC) -c $(KERNEL_CFLAGS) $(INCLUDES) $<
244 $(LD) cfg1_out.o -o cfg1_out
245 $(NM) cfg1_out > cfg1_out.syms
246 $(OBJCOPY) -O srec cfg1_out cfg1_out.srec
247
248cfg1_out.c : $(UNAME).oil $(TOPDIR)/config/$(CPU)/cpu_def.csv \
249 $(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv \
250 $(KERNEL)/$(CONFCLASS)/kernel_def.csv
251 $(TOPDIR)/cfg/cfg.exe $< --pass 1 --kernel atk1 \
252 -I $(TOPDIR)/cfg/impl_oil \
253 --api-table $(KERNEL)/$(CONFCLASS)/atk_object_table.csv \
254 --cfg1-def-table $(TOPDIR)/config/$(CPU)/cpu_def.csv \
255 --cfg1-def-table $(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv \
256 --cfg1-def-table $(KERNEL)/$(CONFCLASS)/kernel_def.csv
257
258#
259# コンフィギュレーションファイルの改行コード変換
260# 上記SystemGeneratorにより出力されるコンフィグレーションファイルの
261# 改行コードはCR+LFとなっているため、LFに変換する。
262#
263ifdef CHANGELINE_TOOL
264 @echo "kernel_cfg.c/kernel_id.h Change Line CR+LF -> LF!!"
265 $(CHANGELINE_TOOL_PATH)/$(CHANGELINE_TOOL) $(CHANGELINE_TOOL_OPTION) kernel_cfg.c
266 $(CHANGELINE_TOOL_PATH)/$(CHANGELINE_TOOL) $(CHANGELINE_TOOL_OPTION) kernel_id.h
267endif
268
269#
270# kernel_cfg.c のコンパイルルール
271#
272# kernel_cfg.c は,アプリケーションプログラム用,システムサービス用,
273# カーネル用のすべてのオプションを付けてコンパイルする.
274#
275KERNEL_CFG_CFLAGS = $(UTASK_CFLAGS) $(STASK_CFLAGS) $(KERNEL_CFLAGS) $(SYSLIB_CFLAGS)
276
277kernel_cfg.o: kernel_cfg.c
278 $(CC) -c $(CFLAGS) -o $(OUTDIR)/kernel_cfg.o $(KERNEL_CFG_CFLAGS) $<
279
280kernel_cfg.d: kernel_cfg.c
281 $(PERL) makedep -C $(CC) \
282 -O "$(CFLAGS) $(KERNEL_CFG_CFLAGS)" $< >> Makefile.depend
283
284#
285# 依存関係ファイルの生成
286#
287gendepend:
288 @echo "Generating Makefile.depend."
289
290depend: cleandep gendepend $(ALL_OBJS:.o=.d)
291
292#
293# 依存関係ファイルをインクルード
294#
295-include Makefile.depend
296
297#
298# 開発ツールのコマンド名の定義
299#
300#
301# GNU開発環境用
302#
303TARGET_PREFIX = $(TARGET)-
304
305CC = $(TARGET_PREFIX)gcc
306CXX = $(TARGET_PREFIX)g++
307AS = $(TARGET_PREFIX)as
308LD = $(TARGET_PREFIX)ld
309AR = $(TARGET_PREFIX)ar
310NM = $(TARGET_PREFIX)nm
311RANLIB = $(TARGET_PREFIX)ranlib
312OBJCOPY = $(TARGET_PREFIX)objcopy
313OBJDUMP = $(TARGET_PREFIX)objdump
314
315LINK = $(CC)
316
317PERL = perl
318
319#
320# コンパイルルールの定義
321#
322$(KERNEL_COBJS): %.o: %.c
323 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(KERNEL_CFLAGS) $<
324
325$(KERNEL_ASMOBJS): %.o: %.S
326 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(KERNEL_CFLAGS) $<
327
328$(STASK_COBJS): %.o: %.c
329 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(STASK_CFLAGS) $<
330
331$(STASK_ASMOBJS): %.o: %.S
332 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(STASK_CFLAGS) $<
333
334$(UTASK_COBJS): %.o: %.c
335 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(UTASK_CFLAGS) $<
336
337$(UTASK_ASMOBJS): %.o: %.S
338 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<))) $(UTASK_CFLAGS) $<
339
340$(SYSLIB_COBJS): %.o: %.c
341 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(SYSLIB_CFLAGS) $<
342
343$(SYSLIB_ASMOBJS): %.o: %.S
344 $(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(SYSLIB_CFLAGS) $<
345
346#
347# 依存関係作成ルールの定義
348#
349$(KERNEL_COBJS:.o=.d): %.d: %.c
350 @$(PERL) makedep -C $(CC) \
351 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
352
353$(KERNEL_ASMOBJS:.o=.d): %.d: %.S
354 @$(PERL) makedep -C $(CC) \
355 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
356
357$(STASK_COBJS:.o=.d): %.d: %.c
358 @$(PERL) makedep -C $(CC) \
359 -O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
360
361$(STASK_ASMOBJS:.o=.d): %.d: %.S
362 @$(PERL) makedep -C $(CC) \
363 -O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
364
365$(UTASK_COBJS:.o=.d): %.d: %.c
366 @$(PERL) makedep -C $(CC) \
367 -O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
368
369$(UTASK_ASMOBJS:.o=.d): %.d: %.S
370 @$(PERL) makedep -C $(CC) \
371 -O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
372
373$(SYSLIB_COBJS:.o=.d): %.d: %.c
374 @$(PERL) makedep -C $(CC) \
375 -O "$(CFLAGS) $(SYSLIB_CFLAGS)" $< >> Makefile.depend
376
377$(SYSLIB_ASMOBJS:.o=.d): %.d: %.S
378 @$(PERL) makedep -C $(CC) \
379 -O "$(CFLAGS) $(SYSLIB_CFLAGS)" $< >> Makefile.depend
380
381#
382# デフォルトコンパイルルールを上書き
383#
384%.o: %.c
385 @echo "*** Default compile rules should not be used."
386 $(CC) -c $(CFLAGS) $<
387
388%.s: %.c
389 @echo "*** Default compile rules should not be used."
390 $(CC) -S $(CFLAGS) $<
391
392%.o: %.S
393 @echo "*** Default compile rules should not be used."
394 $(CC) -c $(CFLAGS) $<
395
396test:
397 @echo $(INCLUDES) $(KERNEL)
Note: See TracBrowser for help on using the repository browser.