source: EcnlProtoTool/trunk/asp3_dcre/Debug/Makefile@ 439

Last change on this file since 439 was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-makefile;charset=UTF-8
File size: 20.3 KB
Line 
1#
2# TOPPERS/ASP Kernel
3# Toyohashi Open Platform for Embedded Real-Time Systems/
4# Advanced Standard Profile Kernel
5#
6# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7# Toyohashi Univ. of Technology, JAPAN
8# Copyright (C) 2006-2019 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10#
11# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16# スコード中に含まれていること.
17# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20# の無保証規定を掲載すること.
21# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23# と.
24# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25# 作権表示,この利用条件および下記の無保証規定を掲載すること.
26# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27# 報告すること.
28# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32# 免責すること.
33#
34# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38# の責任を負わない.
39#
40# $Id$
41#
42
43#
44# ターゲットの指定(Makefile.targetで上書きされるのを防ぐため)
45#
46all:
47
48#
49# ターゲット略称の定義
50#
51TARGET = gr_peach_gcc
52
53#
54# プログラミング言語の定義
55#
56SRCLANG = c
57ifeq ($(SRCLANG),c)
58 LIBS = -lc -lnosys
59endif
60ifeq ($(SRCLANG),c++)
61 USE_CXX = true
62 CXXLIBS = -lstdc++ -lm -lc
63 CXXRTS = cxxrt.o newlibrt.o
64endif
65
66#
67# ソースファイルのディレクトリの定義
68#
69SRCDIR = ..
70
71#
72# オブジェクトファイル名の拡張子の設定
73#
74OBJEXT = elf
75
76#
77# カーネルライブラリ(libkernel.a)のディレクトリ名
78# (カーネルライブラリもmake対象にする時は,空に定義する)
79#
80KERNEL_LIB =
81
82#
83# システムサービスコールライブラリ(libsyssvc.a)のディレクトリ名
84# (システムサービスコールライブラリもmake対象にする時は,空に定義する)
85#
86SYSSVC_LIB =
87
88#
89# カーネルを関数単位でコンパイルするかどうかの定義
90#
91KERNEL_FUNCOBJS =
92
93#
94# TECSを外すかどうかの定義
95#
96OMIT_TECS =
97
98#
99# TECS関係ファイルのディレクトリの定義
100#
101TECSDIR =
102
103#
104# トレースログを取得するかどうかの定義
105#
106ENABLE_TRACE =
107
108#
109# 開発ツール(コンパイラ等)のディレクトリの定義
110#
111DEVTOOLDIR =
112
113#
114# ユーティリティプログラムの名称
115#
116CFG = ruby -Eutf-8 $(SRCDIR)/cfg/cfg.rb
117TECSGEN = ruby -Eutf-8 $(SRCDIR)/tecsgen/tecsgen.rb
118
119#
120# オブジェクトファイル名の定義
121#
122OBJNAME = asp
123ifdef OBJEXT
124 OBJFILE = $(OBJNAME).$(OBJEXT)
125 CFG1_OUT = cfg1_out.$(OBJEXT)
126else
127 OBJFILE = $(OBJNAME)
128 CFG1_OUT = cfg1_out
129endif
130
131#
132# 中間オブジェクトファイルと依存関係ファイルを置くディレクトリの定義
133#
134OBJDIR = obj
135DEPDIR = obj
136
137#
138# ターゲット依存部のディレクトリの定義
139#
140TARGETDIR = $(SRCDIR)/target/$(TARGET)
141
142#
143# ターゲット依存の定義のインクルード
144#
145include $(TARGETDIR)/Makefile.target
146
147#
148# TECS生成ファイルのディレクトリの定義
149#
150TECSGENDIR = ./gen
151ifndef OMIT_TECS
152 TECSGEN_TIMESTAMP = $(TECSGENDIR)/tecsgen.timestamp
153 INIT_TECS_COBJ = init_tecs.o
154endif
155
156#
157# TECSが生成する定義のインクルード
158#
159ifndef OMIT_TECS
160 GEN_DIR = $(TECSGENDIR)
161 -include $(TECSGENDIR)/Makefile.tecsgen
162endif
163
164TINETDIR = tinet
165
166#
167# mbedサービスの定義
168#
169
170include $(SRCDIR)/mbed/Makefile.mbed
171
172#
173# 共通コンパイルオプションの定義
174#
175COPTS := -g -std=gnu99 -ffunction-sections -fdata-sections $(COPTS)
176ifndef OMIT_WARNING_ALL
177 COPTS := -Wall $(COPTS)
178endif
179ifndef OMIT_OPTIMIZATION
180 COPTS := -Og $(COPTS)
181endif
182ifdef OMIT_TECS
183 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
184endif
185CDEFS := $(CDEFS)
186INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES) -I$(SRCDIR)
187LDFLAGS := $(LDFLAGS) -L.
188LIBS := $(LIBS) $(CXXLIBS)
189CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
190
191#
192# アプリケーションプログラムに関する定義
193#
194APPLNAME = sample1n
195APPLDIRS = $(SRCDIR)/sample
196APPL_CFG = sample1n.cfg
197APPL_CDL = sample1n.cdl
198
199APPL_DIRS := $(APPLDIRS) $(SRCDIR)/library
200APPL_ASMOBJS :=
201ifdef USE_CXX
202 APPL_CXXOBJS := sample1n.o sample1.o
203 APPL_COBJS :=
204else
205 APPL_COBJS := sample1n.o sample1.o
206endif
207APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o mbed_stub.o
208APPL_CFLAGS := $(APPL_CFLAGS)
209ifdef APPLDIRS
210 INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIRS),-I$(dir))
211endif
212
213ifdef TINETDIR
214 #
215 # ネットワークサービスの定義
216 #
217 NO_USE_TINET_LIBRARY = true
218
219 # ネットワークインタフェースの選択、何れか一つ選択する。
220 NET_IF = ether
221
222 # イーサネット・ディバイスドライバの選択
223 NET_DEV = if_mbed
224
225 # ネットワーク層の選択
226 SUPPORT_INET6 = true
227 SUPPORT_INET4 = true
228
229 # API に組込む機能の選択
230 #API_CFG_IP4MAPPED_ADDR = true
231
232 # トランスポート層の選択
233 SUPPORT_TCP = true
234 SUPPORT_UDP = true
235
236 # IGMPを有効に設定
237 #SUPPORT_IGMP = true
238
239 #
240 # ネットワークサービスの Makefile のインクルード
241 #
242 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
243endif
244
245#
246# システムサービスに関する定義
247#
248ifdef TCINSTALL
249GCC_PATH = $(TCINSTALL)
250else
251GCC_PATH = $(shell which $(CC))/../../
252endif
253MALLOC_LIB = "${GCC_PATH}arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc.a"
254MALLOC_OBJS = lib_a-reent.o lib_a-impure.o lib_a-malloc.o lib_a-mallocr.o lib_a-calloc.o lib_a-callocr.o lib_a-realloc.o lib_a-reallocr.o lib_a-sbrkr.o lib_a-freer.o
255
256SYSSVC_DIRS := $(TECSGENDIR) $(SRCDIR)/tecs_kernel \
257 $(SYSSVC_DIRS) $(SRCDIR)/syssvc
258SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
259SYSSVC_COBJS := $(SYSSVC_COBJS) $(TECS_COBJS) \
260 $(INIT_TECS_COBJ) $(CXXRTS)
261SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
262INCLUDES := $(INCLUDES) -I$(TECSGENDIR) -I$(SRCDIR)/tecs_kernel -I../../musl-1.1.18/include
263
264#
265# トレースログ記録のサンプルコードに関する定義
266#
267ifdef ENABLE_TRACE
268 COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
269 SYSSVC_DIRS := $(SYSSVC_DIRS) $(SRCDIR)/arch/tracelog
270endif
271
272#
273# ターゲットファイル
274#
275.PHONY: all
276ifndef OMIT_TECS
277all: tecs | $(DEPDIR)
278# @$(MAKE) check
279 @$(MAKE) check $(OBJNAME).bin
280# @$(MAKE) check $(OBJNAME).srec
281else
282#all: check
283all: check $(OBJNAME).bin
284#all: check $(OBJNAME).srec
285endif
286
287##### 以下は編集しないこと #####
288
289#
290# コンフィギュレータに関する定義
291#
292CFG_KERNEL := --kernel asp
293ifndef TINETDIR
294 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
295 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
296 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
297else
298 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T $(TARGETDIR)/target_kernel.trb:kernel
299 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
300 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
301 --symval-table $(TINET_ROOT)/tcpip_sym.def \
302 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
303endif
304CFG_ASMOBJS := $(CFG_ASMOBJS)
305CFG_COBJS := kernel_cfg.o $(CFG_COBJS)
306CFG_OBJS := $(CFG_ASMOBJS) $(CFG_COBJS)
307CFG_CFLAGS := -DTOPPERS_CB_TYPE_ONLY $(CFG_CFLAGS)
308
309CFG2_OUT_SRCS := kernel_cfg.h kernel_cfg.c $(CFG2_OUT_SRCS)
310
311#
312# カーネルに関する定義
313#
314# KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
315# オブジェクトファイル.
316# KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
317# ファイルと1対1に対応するオブジェクトファイル.
318# KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで,
319# 1つのソースファイルから複数のオブジェクトファイルを生
320# 成するもの.
321# KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル.
322#
323KERNEL_DIRS := $(KERNEL_DIRS) $(SRCDIR)/kernel
324KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
325KERNEL_COBJS := $(KERNEL_COBJS)
326KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(SRCDIR)/kernel
327
328#
329# カーネルのファイル構成の定義
330#
331include $(SRCDIR)/kernel/Makefile.kernel
332ifdef KERNEL_FUNCOBJS
333 KERNEL_LCSRCS := $(KERNEL_FCSRCS)
334 KERNEL_LCOBJS := $(foreach file,$(KERNEL_FCSRCS),$($(file:.c=)))
335else
336 KERNEL_CFLAGS := -DALLFUNC $(KERNEL_CFLAGS)
337 KERNEL_COBJS := $(KERNEL_COBJS) \
338 $(foreach file,$(KERNEL_FCSRCS),$(file:.c=.o))
339endif
340ifdef TARGET_OFFSET_TRB
341 OFFSET_H = offset.h
342endif
343ifndef TARGET_OFFSET_TRB
344 TARGET_OFFSET_TRB := $(TARGETDIR)/target_offset.trb
345endif
346ifndef TARGET_KERNEL_TRB
347 TARGET_KERNEL_TRB := $(TARGETDIR)/target_kernel.trb
348endif
349ifndef TARGET_CHECK_TRB
350 TARGET_CHECK_TRB := $(TARGETDIR)/target_check.trb
351endif
352ifndef TARGET_KERNEL_CFG
353 TARGET_KERNEL_CFG := $(TARGETDIR)/target_kernel.cfg
354endif
355ifndef TARGET_TCPIP_TRB
356 TARGET_TCPIP_TRB := $(SRCDIR)/$(TINETDIR)/tinet.trb
357endif
358
359#
360# ソースファイルのあるディレクトリに関する定義
361#
362vpath %.c $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
363vpath %.S $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
364vpath %.cfg $(APPL_DIRS)
365vpath %.cdl $(APPL_DIRS)
366vpath %.bin $(APPL_DIRS)
367
368#
369# 中間オブジェクトファイルを置くディレクトリの処理
370#
371APPL_ASMOBJS := $(addprefix $(OBJDIR)/, $(APPL_ASMOBJS))
372APPL_CXXOBJS := $(addprefix $(OBJDIR)/, $(APPL_CXXOBJS))
373APPL_COBJS := $(addprefix $(OBJDIR)/, $(APPL_COBJS))
374SYSSVC_ASMOBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_ASMOBJS))
375SYSSVC_COBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_COBJS))
376KERNEL_ASMOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_ASMOBJS))
377KERNEL_COBJS := $(addprefix $(OBJDIR)/, $(KERNEL_COBJS))
378KERNEL_LCOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_LCOBJS))
379CFG_ASMOBJS := $(addprefix $(OBJDIR)/, $(CFG_ASMOBJS))
380CFG_COBJS := $(addprefix $(OBJDIR)/, $(CFG_COBJS))
381CFG_DMY := $(addprefix $(OBJDIR)/, $(CFG_DMY))
382MALLOC_OBJS := $(addprefix $(OBJDIR)/, $(MALLOC_OBJS))
383
384#
385# コンパイルのための変数の定義
386#
387APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
388SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS) $(HIDDEN_OBJS)
389KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS) $(MALLOC_OBJS)
390CFG_OBJS = $(CFG_ASMOBJS) $(CFG_COBJS)
391ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
392 $(END_OBJS) $(HIDDEN_OBJS)
393ALL_LIBS = -lkernel $(LIBS)
394ifdef KERNEL_LIB
395 LIBS_DEP = $(KERNEL_LIB)/libkernel.a $(filter %.a,$(LIBS))
396 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(KERNEL_LIB)
397 REALCLEAN_FILES := libkernel.a $(REALCLEAN_FILES)
398else
399 LIBS_DEP = libkernel.a $(filter %.a,$(LIBS))
400 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
401endif
402ifdef SYSSVC_LIB
403 LIBS_DEP := $(LIBS_DEP) $(SYSSVC_LIB)/libsyssvc.a
404 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(SYSSVC_LIB)
405 REALCLEAN_FILES := $(REALCLEAN_FILES) libsyssvc.a
406else
407 LIBS_DEP := $(LIBS_DEP) libsyssvc.a
408 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
409endif
410
411ifdef TEXT_START_ADDRESS
412 LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
413endif
414ifdef DATA_START_ADDRESS
415 LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
416endif
417ifdef LDSCRIPT
418 LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
419endif
420
421#
422# tecsgenからCプリプロセッサを呼び出す際のオプションの定義
423#
424TECS_CPP = $(CC) $(CDEFS) $(INCLUDES) $(SYSSVC_CFLAGS) -D TECSGEN -E
425
426#
427# tecsgenの呼出し
428#
429.PHONY: tecs
430tecs $(TECSGEN_SRCS) $(TECS_HEADERS): $(TECSGEN_TIMESTAMP) ;
431$(TECSGEN_TIMESTAMP): $(APPL_CDL) $(TECS_IMPORTS)
432 $(TECSGEN) $< -R $(INCLUDES) --cpp "$(subst ", \", $(TECS_CPP))" -g $(TECSGENDIR)
433
434#
435# カーネルのコンフィギュレーションファイルの生成
436#
437cfg1_out.c cfg1_out.db: cfg1_out.timestamp ;
438cfg1_out.timestamp: $(APPL_CFG) $(TECSGEN_TIMESTAMP)
439 $(CFG) --pass 1 $(CFG_KERNEL) $(INCLUDES) $(CFG_TABS) \
440 -M $(DEPDIR)/cfg1_out_c.d $(TARGET_KERNEL_CFG) $<
441
442$(CFG1_OUT): $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(END_OBJS) $(HIDDEN_OBJS)
443 $(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
444 $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(LIBS) $(END_OBJS) $(HIDDEN_OBJS)
445
446cfg1_out.syms: $(CFG1_OUT)
447 $(NM) -n $(CFG1_OUT) > cfg1_out.syms
448
449cfg1_out.srec: $(CFG1_OUT)
450 $(OBJCOPY) -O srec -S $(CFG1_OUT) cfg1_out.srec
451
452$(CFG2_OUT_SRCS) cfg2_out.db: kernel_cfg.timestamp ;
453kernel_cfg.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
454 $(CFG) --pass 2 $(CFG_KERNEL) $(INCLUDES) $(CFG_TRB)
455
456#
457# オフセットファイル(offset.h)の生成規則
458#
459$(OFFSET_H): offset.timestamp ;
460offset.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
461 $(CFG) --pass 2 -O $(CFG_KERNEL) $(INCLUDES) -T $(TARGET_OFFSET_TRB) \
462 --rom-symbol cfg1_out.syms --rom-image cfg1_out.srec
463
464#
465# カーネルライブラリファイルの生成
466#
467libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
468 rm -f libkernel.a
469 $(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
470 $(RANLIB) libkernel.a
471
472#
473# システムサービスコールライブラリファイルの生成
474#
475libsyssvc.a: $(filter-out $(OBJDIR)/tBannerMain.o, $(SYSSVC_OBJS))
476 rm -f libsyssvc.a
477 $(AR) -rcs libsyssvc.a $(filter-out $(OBJDIR)/tBannerMain.o, $(SYSSVC_OBJS))
478 $(RANLIB) libsyssvc.a
479
480#
481# 並列makeのための依存関係の定義
482#
483$(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp
484$(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
485 | offset.timestamp
486
487#
488# 特別な依存関係の定義
489#
490$(OBJDIR)/tBannerMain.o: $(filter-out $(OBJDIR)/tBannerMain.o,$(ALL_OBJS)) \
491 $(LIBS_DEP)
492
493#
494# 全体のリンク
495#
496$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
497 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
498 -Wl,-Map=$(OBJNAME).map,--cref -Wl,--gc-sections -Wl,-e_kernel__start,--gc-keep-exported=_kernel_istk \
499 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
500 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
501
502#
503# 依存関係フォルダの作成
504#
505$(DEPDIR):
506 mkdir $@
507
508#
509# シンボルファイルの生成
510#
511$(OBJNAME).syms: $(OBJFILE)
512 $(NM) -n $(OBJFILE) > $(OBJNAME).syms
513
514#
515# バイナリファイルの生成
516#
517$(OBJNAME).bin: $(OBJFILE)
518 $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
519 $(OBJDUMP) -h $(OBJFILE)
520 $(SIZE) $(OBJFILE)
521
522#
523# Sレコードファイルの生成
524#
525$(OBJNAME).srec: $(OBJFILE)
526 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
527
528#
529# エラーチェック処理
530#
531.PHONY: check
532check: check.timestamp ;
533check.timestamp: cfg2_out.db $(OBJNAME).syms $(OBJNAME).srec
534 $(CFG) --pass 3 $(CFG_KERNEL) -O $(INCLUDES) -T $(TARGET_CHECK_TRB) \
535 --rom-symbol $(OBJNAME).syms --rom-image $(OBJNAME).srec
536 @echo "configuration check passed"
537
538#
539# コンパイル結果の消去
540#
541.PHONY: clean
542clean:
543 rm -f \#* *~ $(OBJDIR)/*.o $(DEPDIR)/*.d $(CLEAN_FILES) check.timestamp
544 rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin
545 rm -f kernel_cfg.timestamp $(CFG2_OUT_SRCS) cfg2_out.db
546 rm -f offset.timestamp $(OFFSET_H)
547 rm -f cfg1_out.syms cfg1_out.srec $(CFG1_OUT)
548 rm -f cfg1_out.timestamp cfg1_out.c cfg1_out.db
549 rm -rf $(TECSGENDIR)
550ifndef KERNEL_LIB
551 rm -f libkernel.a
552endif
553ifndef SYSSVC_LIB
554 rm -f libsyssvc.a
555endif
556 rm -f $(MALLOC_OBJS)
557
558.PHONY: cleankernel
559cleankernel:
560 rm -f $(OFFSET_H) $(KERNEL_LIB_OBJS)
561 rm -f $(KERNEL_LIB_OBJS:$(OBJDIR)/%.o=$(DEPDIR)/%.d)
562
563.PHONY: cleansyssvc
564cleansyssvc:
565 rm -f $(SYSSVC_OBJS)
566 rm -f $(SYSSVC_OBJS:$(OBJDIR)/%.o=$(DEPDIR)/%.d)
567
568.PHONY: realclean
569realclean: clean
570 rm -f $(REALCLEAN_FILES)
571
572#
573# コンフィギュレータが生成したファイルのコンパイルルールの定義
574#
575# コンフィギュレータが生成したファイルは,共通のコンパイルオプション
576# のみを付けてコンパイルする.
577#
578ALL_CFG_COBJS = $(CFG_COBJS) $(OBJDIR)/cfg1_out.o
579ALL_CFG_ASMOBJS = $(CFG_ASMOBJS)
580
581$(ALL_CFG_COBJS): $(OBJDIR)/%.o: %.c
582 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
583
584$(ALL_CFG_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
585 $(CC) -S -o $@ $(CFLAGS) $(CFG_CFLAGS) $<
586
587$(ALL_CFG_ASMOBJS): $(OBJDIR)/%.o: %.S
588 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
589
590#
591# 依存関係ファイルのインクルード
592#
593-include $(DEPDIR)/*.d
594
595#
596# 開発ツールのコマンド名の定義
597#
598ifeq ($(TOOL),gcc)
599 #
600 # GNU開発環境用
601 #
602 ifdef GCC_TARGET
603 GCC_TARGET_PREFIX = $(GCC_TARGET)-
604 else
605 GCC_TARGET_PREFIX =
606 endif
607 CC := $(GCC_TARGET_PREFIX)gcc
608 CXX := $(GCC_TARGET_PREFIX)g++
609 AS := $(GCC_TARGET_PREFIX)as
610 LD := $(GCC_TARGET_PREFIX)ld
611 AR := $(GCC_TARGET_PREFIX)ar
612 NM := $(GCC_TARGET_PREFIX)nm
613 RANLIB := $(GCC_TARGET_PREFIX)ranlib
614 OBJCOPY := $(GCC_TARGET_PREFIX)objcopy
615 OBJDUMP := $(GCC_TARGET_PREFIX)objdump
616 SIZE := $(GCC_TARGET_PREFIX)size
617endif
618
619ifdef DEVTOOLDIR
620 CC := $(DEVTOOLDIR)/$(CC)
621 CXX := $(DEVTOOLDIR)/$(CXX)
622 AS := $(DEVTOOLDIR)/$(AS)
623 LD := $(DEVTOOLDIR)/$(LD)
624 AR := $(DEVTOOLDIR)/$(AR)
625 NM := $(DEVTOOLDIR)/$(NM)
626 RANLIB := $(DEVTOOLDIR)/$(RANLIB)
627 OBJCOPY := $(DEVTOOLDIR)/$(OBJCOPY)
628 OBJDUMP := $(DEVTOOLDIR)/$(OBJDUMP)
629endif
630
631ifdef USE_CXX
632 LINK = $(CXX)
633else
634 LINK = $(CC)
635endif
636
637#
638# コンパイルルールの定義
639#
640$(KERNEL_COBJS): $(OBJDIR)/%.o: %.c
641 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
642
643$(KERNEL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
644 $(CC) -S -o $@ $(CFLAGS) $(KERNEL_CFLAGS) $<
645
646$(KERNEL_LCOBJS): $(OBJDIR)/%.o:
647 $(CC) -c -o $@ -DTOPPERS_$(*F) -MD -MP -MF $(DEPDIR)/$*.d \
648 $(CFLAGS) $(KERNEL_CFLAGS) $<
649
650$(KERNEL_LCOBJS:$(OBJDIR)/%.o=%.s): %.s:
651 $(CC) -S -o $@ -DTOPPERS_$(*F) $(CFLAGS) $(KERNEL_CFLAGS) $<
652
653$(KERNEL_ASMOBJS): $(OBJDIR)/%.o: %.S
654 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
655
656$(SYSSVC_COBJS): $(OBJDIR)/%.o: %.c
657 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
658
659$(SYSSVC_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
660 $(CC) -S -o $@ $(CFLAGS) $(SYSSVC_CFLAGS) $<
661
662$(SYSSVC_ASMOBJS): $(OBJDIR)/%.o: %.S
663 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
664
665$(APPL_COBJS): $(OBJDIR)/%.o: %.c
666 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
667
668$(APPL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
669 $(CC) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
670
671$(APPL_CXXOBJS): $(OBJDIR)/%.o: %.cpp
672 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
673
674$(APPL_CXXOBJS:$(OBJDIR)/%.o=%.s): %.s: %.cpp
675 $(CXX) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
676
677$(APPL_ASMOBJS): $(OBJDIR)/%.o: %.S
678 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
679
680$(MALLOC_OBJS): $(OBJDIR)/%.o:
681 $(AR) x $(MALLOC_LIB) $(notdir $@)
682 mv $(notdir $@) $@
683
684#
685# デフォルトコンパイルルールを上書き
686#
687$(OBJDIR)/%.o: %.c
688 @echo "*** Default compile rules should not be used."
689 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
690
691%.s: %.c
692 @echo "*** Default compile rules should not be used."
693 $(CC) -S -o $@ $(CFLAGS) $<
694
695$(OBJDIR)/%.o: %.cpp
696 @echo "*** Default compile rules should not be used."
697 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
698
699%.s: %.cpp
700 @echo "*** Default compile rules should not be used."
701 $(CXX) -S -o $@ $(CFLAGS) $<
702
703$(OBJDIR)/%.o: %.S
704 @echo "*** Default compile rules should not be used."
705 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
Note: See TracBrowser for help on using the repository browser.