source: EcnlProtoTool/trunk/ntshell/Debug/Makefile@ 441

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

NTShellタスクを更新

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