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

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

ASP3, TINET, mbed を更新

File size: 22.0 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
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
216APPL_ASMOBJS :=
217ifdef USE_CXX
218 APPL_CXXOBJS := main.o
219 APPL_COBJS := fdtable.o io_stub.o socket_stub.o ffarch.o fftime.o tlsf.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
220else
221 APPL_COBJS := main.o fdtable.o io_stub.o socket_stub.o ffarch.o fftime.o tlsf.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
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#
265ifdef TCINSTALL
266GCC_PATH = $(TCINSTALL)
267else
268GCC_PATH = $(shell which $(CC))/../../
269endif
270MALLOC_LIB = "${GCC_PATH}arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc.a"
271MALLOC_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
272
273SYSSVC_DIRS := $(TECSGENDIR) $(SRCDIR)/tecs_kernel \
274 $(SYSSVC_DIRS) $(SRCDIR)/syssvc
275SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
276SYSSVC_COBJS := $(SYSSVC_COBJS) $(TECS_COBJS) \
277 $(INIT_TECS_COBJ) $(CXXRTS)
278SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
279INCLUDES := $(INCLUDES) -I$(TECSGENDIR) -I$(SRCDIR)/tecs_kernel -I../../musl-1.1.18/include
280
281#
282# トレースログ記録のサンプルコードに関する定義
283#
284ifdef ENABLE_TRACE
285 COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
286 SYSSVC_DIRS := $(SYSSVC_DIRS) $(SRCDIR)/arch/tracelog
287endif
288
289#
290# ターゲットファイル
291#
292.PHONY: all
293ifndef OMIT_TECS
294all: tecs | $(DEPDIR)
295# @$(MAKE) check
296 @$(MAKE) check $(OBJNAME).bin
297# @$(MAKE) check $(OBJNAME).srec
298else
299#all: check
300all: check $(OBJNAME).bin
301#all: check $(OBJNAME).srec
302endif
303 $(OBJCOPY) -B arm -I binary -O elf32-littlearm --rename-section .data=.boot $(OBJNAME).bin $(OBJNAME)_bin.o
304
305##### 以下は編集しないこと #####
306
307#
308# コンフィギュレータに関する定義
309#
310CFG_KERNEL := --kernel asp
311ifndef TINETDIR
312 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
313 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
314 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
315else
316 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T $(TARGETDIR)/target_kernel.trb:kernel
317 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
318 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
319 --symval-table $(TINET_ROOT)/tcpip_sym.def \
320 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
321endif
322CFG_ASMOBJS := $(CFG_ASMOBJS)
323CFG_COBJS := kernel_cfg.o $(CFG_COBJS)
324CFG_CFLAGS := -DTOPPERS_CB_TYPE_ONLY $(CFG_CFLAGS)
325
326CFG2_OUT_SRCS := kernel_cfg.h kernel_cfg.c $(CFG2_OUT_SRCS)
327
328#
329# カーネルに関する定義
330#
331# KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
332# オブジェクトファイル.
333# KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
334# ファイルと1対1に対応するオブジェクトファイル.
335# KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで,
336# 1つのソースファイルから複数のオブジェクトファイルを生
337# 成するもの.
338# KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル.
339#
340KERNEL_DIRS := $(KERNEL_DIRS) $(SRCDIR)/kernel
341KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
342KERNEL_COBJS := $(KERNEL_COBJS)
343KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(SRCDIR)/kernel
344
345#
346# カーネルのファイル構成の定義
347#
348include $(SRCDIR)/kernel/Makefile.kernel
349ifdef KERNEL_FUNCOBJS
350 KERNEL_LCSRCS := $(KERNEL_FCSRCS)
351 KERNEL_LCOBJS := $(foreach file,$(KERNEL_FCSRCS),$($(file:.c=)))
352else
353 KERNEL_CFLAGS := -DALLFUNC $(KERNEL_CFLAGS)
354 KERNEL_COBJS := $(KERNEL_COBJS) \
355 $(foreach file,$(KERNEL_FCSRCS),$(file:.c=.o))
356endif
357ifdef TARGET_OFFSET_TRB
358 OFFSET_H = offset.h
359endif
360ifndef TARGET_OFFSET_TRB
361 TARGET_OFFSET_TRB := $(TARGETDIR)/target_offset.trb
362endif
363ifndef TARGET_KERNEL_TRB
364 TARGET_KERNEL_TRB := $(TARGETDIR)/target_kernel.trb
365endif
366ifndef TARGET_CHECK_TRB
367 TARGET_CHECK_TRB := $(TARGETDIR)/target_check.trb
368endif
369ifndef TARGET_KERNEL_CFG
370 TARGET_KERNEL_CFG := $(TARGETDIR)/target_kernel.cfg
371endif
372ifndef TARGET_TCPIP_TRB
373 TARGET_TCPIP_TRB := $(SRCDIR)/$(TINETDIR)/tinet.trb
374endif
375
376#
377# ソースファイルのあるディレクトリに関する定義
378#
379vpath %.c $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
380vpath %.S $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
381vpath %.cfg $(APPL_DIRS)
382vpath %.cdl $(APPL_DIRS)
383vpath %.bin $(APPL_DIRS)
384
385#
386# 中間オブジェクトファイルを置くディレクトリの処理
387#
388APPL_ASMOBJS := $(addprefix $(OBJDIR)/, $(APPL_ASMOBJS))
389APPL_CXXOBJS := $(addprefix $(OBJDIR)/, $(APPL_CXXOBJS))
390APPL_COBJS := $(addprefix $(OBJDIR)/, $(APPL_COBJS))
391APPL_BINOBJS := $(addprefix $(OBJDIR)/, $(APPL_BINOBJS))
392SYSSVC_ASMOBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_ASMOBJS))
393SYSSVC_COBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_COBJS))
394KERNEL_ASMOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_ASMOBJS))
395KERNEL_COBJS := $(addprefix $(OBJDIR)/, $(KERNEL_COBJS))
396KERNEL_LCOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_LCOBJS))
397CFG_ASMOBJS := $(addprefix $(OBJDIR)/, $(CFG_ASMOBJS))
398CFG_COBJS := $(addprefix $(OBJDIR)/, $(CFG_COBJS))
399CFG_DMY := $(addprefix $(OBJDIR)/, $(CFG_DMY))
400MALLOC_OBJS := $(addprefix $(OBJDIR)/, $(MALLOC_OBJS))
401
402#
403# コンパイルのための変数の定義
404#
405APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS) $(APPL_BINOBJS)
406SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS) $(HIDDEN_OBJS)
407KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS) $(MALLOC_OBJS)
408CFG_OBJS = $(CFG_ASMOBJS) $(CFG_COBJS)
409ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
410 $(END_OBJS) $(HIDDEN_OBJS)
411ALL_LIBS = -lkernel $(LIBS)
412ifdef KERNEL_LIB
413 LIBS_DEP = $(KERNEL_LIB)/libkernel.a $(filter %.a,$(LIBS))
414 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(KERNEL_LIB)
415 REALCLEAN_FILES := libkernel.a $(REALCLEAN_FILES)
416else
417 LIBS_DEP = libkernel.a $(filter %.a,$(LIBS))
418 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
419endif
420ifdef SYSSVC_LIB
421 LIBS_DEP := $(LIBS_DEP) $(SYSSVC_LIB)/libsyssvc.a
422 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(SYSSVC_LIB)
423 REALCLEAN_FILES := $(REALCLEAN_FILES) libsyssvc.a
424else
425 LIBS_DEP := $(LIBS_DEP) libsyssvc.a
426 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
427endif
428
429ifdef TEXT_START_ADDRESS
430 LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
431endif
432ifdef DATA_START_ADDRESS
433 LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
434endif
435ifdef LDSCRIPT
436 LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
437endif
438
439#
440# tecsgenからCプリプロセッサを呼び出す際のオプションの定義
441#
442TECS_CPP = $(CC) $(CDEFS) $(INCLUDES) $(SYSSVC_CFLAGS) -D TECSGEN -E
443
444#
445# tecsgenの呼出し
446#
447.PHONY: tecs
448tecs $(TECSGEN_SRCS) $(TECS_HEADERS): $(TECSGEN_TIMESTAMP) ;
449$(TECSGEN_TIMESTAMP): $(APPL_CDL) $(TECS_IMPORTS)
450 $(TECSGEN) $< -R $(INCLUDES) --cpp "$(subst ", \", $(TECS_CPP))" -g $(TECSGENDIR)
451
452#
453# カーネルのコンフィギュレーションファイルの生成
454#
455cfg1_out.c cfg1_out.db: cfg1_out.timestamp ;
456cfg1_out.timestamp: $(APPL_CFG) $(TECSGEN_TIMESTAMP)
457 $(CFG) --pass 1 $(CFG_KERNEL) $(INCLUDES) $(CFG_TABS) \
458 -M $(DEPDIR)/cfg1_out_c.d $(TARGET_KERNEL_CFG) $<
459
460$(CFG1_OUT): $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(END_OBJS) $(HIDDEN_OBJS)
461 $(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
462 $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(LIBS) $(END_OBJS) $(HIDDEN_OBJS)
463
464cfg1_out.syms: $(CFG1_OUT)
465 $(NM) -n $(CFG1_OUT) > cfg1_out.syms
466
467cfg1_out.srec: $(CFG1_OUT)
468 $(OBJCOPY) -O srec -S $(CFG1_OUT) cfg1_out.srec
469
470$(CFG2_OUT_SRCS) cfg2_out.db: kernel_cfg.timestamp ;
471kernel_cfg.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
472 $(CFG) --pass 2 $(CFG_KERNEL) $(INCLUDES) $(CFG_TRB)
473
474#
475# オフセットファイル(offset.h)の生成規則
476#
477$(OFFSET_H): offset.timestamp ;
478offset.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
479 $(CFG) --pass 2 -O $(CFG_KERNEL) $(INCLUDES) -T $(TARGET_OFFSET_TRB) \
480 --rom-symbol cfg1_out.syms --rom-image cfg1_out.srec
481
482#
483# カーネルライブラリファイルの生成
484#
485libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
486 rm -f libkernel.a
487 $(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
488 $(RANLIB) libkernel.a
489
490#
491# システムサービスコールライブラリファイルの生成
492#
493libsyssvc.a: $(filter-out $(OBJDIR)/tBannerMain.o, $(SYSSVC_OBJS))
494 rm -f libsyssvc.a
495 $(AR) -rcs libsyssvc.a $(filter-out $(OBJDIR)/tBannerMain.o, $(SYSSVC_OBJS))
496 $(RANLIB) libsyssvc.a
497
498#
499# 並列makeのための依存関係の定義
500#
501$(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp
502$(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
503 | offset.timestamp
504
505#
506# 特別な依存関係の定義
507#
508$(OBJDIR)/tBannerMain.o: $(filter-out $(OBJDIR)/tBannerMain.o,$(ALL_OBJS)) \
509 $(LIBS_DEP)
510
511#
512# å…
513¨ä½“のリンク
514#
515$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
516 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
517 -Wl,-Map=$(OBJNAME).map,--cref -Wl,--gc-sections -Wl,-e_kernel__start,--gc-keep-exported=_kernel_istk \
518 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
519 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
520
521#
522# 依存関係フォルダの作成
523#
524$(DEPDIR):
525 mkdir $@
526
527#
528# シンボルファイルの生成
529#
530$(OBJNAME).syms: $(OBJFILE)
531 $(NM) -n $(OBJFILE) > $(OBJNAME).syms
532
533#
534# バイナリファイルの生成
535#
536$(OBJNAME).bin: $(OBJFILE)
537 $(OBJCOPY) -O binary -R .nc_bss -S $(OBJFILE) $(OBJNAME).bin
538 $(OBJDUMP) -h $(OBJFILE)
539 $(SIZE) $(OBJFILE)
540
541#
542# Sレコードファイルの生成
543#
544$(OBJNAME).srec: $(OBJFILE)
545 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
546
547#
548# エラーチェック処理
549#
550.PHONY: check
551check: check.timestamp ;
552check.timestamp: cfg2_out.db $(OBJNAME).syms $(OBJNAME).srec
553 $(CFG) --pass 3 $(CFG_KERNEL) -O $(INCLUDES) -T $(TARGET_CHECK_TRB) \
554 --rom-symbol $(OBJNAME).syms --rom-image $(OBJNAME).srec
555 @echo "configuration check passed"
556
557#
558# コンパイル結果の消去
559#
560.PHONY: clean
561clean:
562 rm -f \#* *~ $(OBJDIR)/*.o $(DEPDIR)/*.d $(CLEAN_FILES) check.timestamp
563 rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin
564 rm -f kernel_cfg.timestamp $(CFG2_OUT_SRCS) cfg2_out.db
565 rm -f offset.timestamp $(OFFSET_H)
566 rm -f cfg1_out.syms cfg1_out.srec $(CFG1_OUT)
567 rm -f cfg1_out.timestamp cfg1_out.c cfg1_out.db
568 rm -rf $(TECSGENDIR)
569ifndef KERNEL_LIB
570 rm -f libkernel.a
571endif
572ifndef SYSSVC_LIB
573 rm -f libsyssvc.a
574endif
575 rm -f $(MALLOC_OBJS)
576
577.PHONY: cleankernel
578cleankernel:
579 rm -f $(OFFSET_H) $(KERNEL_LIB_OBJS)
580 rm -f $(KERNEL_LIB_OBJS:$(OBJDIR)/%.o=$(DEPDIR)/%.d)
581
582.PHONY: cleansyssvc
583cleansyssvc:
584 rm -f $(SYSSVC_OBJS)
585 rm -f $(SYSSVC_OBJS:$(OBJDIR)/%.o=$(DEPDIR)/%.d)
586
587.PHONY: realclean
588realclean: clean
589 rm -f $(REALCLEAN_FILES)
590
591#
592# コンフィギュレータが生成したファイルのコンパイルルールの定義
593#
594# コンフィギュレータが生成したファイルは,å…
595±é€šã®ã‚³ãƒ³ãƒ‘イルオプション
596# のみを付けてコンパイルする.
597#
598ALL_CFG_COBJS = $(CFG_COBJS) $(OBJDIR)/cfg1_out.o
599ALL_CFG_ASMOBJS = $(CFG_ASMOBJS)
600
601$(ALL_CFG_COBJS): $(OBJDIR)/%.o: %.c
602 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
603
604$(ALL_CFG_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
605 $(CC) -S -o $@ $(CFLAGS) $(CFG_CFLAGS) $<
606
607$(ALL_CFG_ASMOBJS): $(OBJDIR)/%.o: %.S
608 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
609
610#
611# 依存関係ファイルのインクルード
612#
613-include $(DEPDIR)/*.d
614
615#
616# 開発ツールのコマンド名の定義
617#
618ifeq ($(TOOL),gcc)
619 #
620 # GNU開発環境用
621 #
622 ifdef GCC_TARGET
623 GCC_TARGET_PREFIX = $(GCC_TARGET)-
624 else
625 GCC_TARGET_PREFIX =
626 endif
627 CC := $(GCC_TARGET_PREFIX)gcc
628 CXX := $(GCC_TARGET_PREFIX)g++
629 AS := $(GCC_TARGET_PREFIX)as
630 LD := $(GCC_TARGET_PREFIX)ld
631 AR := $(GCC_TARGET_PREFIX)ar
632 NM := $(GCC_TARGET_PREFIX)nm
633 RANLIB := $(GCC_TARGET_PREFIX)ranlib
634 OBJCOPY := $(GCC_TARGET_PREFIX)objcopy
635 OBJDUMP := $(GCC_TARGET_PREFIX)objdump
636 SIZE := $(GCC_TARGET_PREFIX)size
637endif
638
639ifdef DEVTOOLDIR
640 CC := $(DEVTOOLDIR)/$(CC)
641 CXX := $(DEVTOOLDIR)/$(CXX)
642 AS := $(DEVTOOLDIR)/$(AS)
643 LD := $(DEVTOOLDIR)/$(LD)
644 AR := $(DEVTOOLDIR)/$(AR)
645 NM := $(DEVTOOLDIR)/$(NM)
646 RANLIB := $(DEVTOOLDIR)/$(RANLIB)
647 OBJCOPY := $(DEVTOOLDIR)/$(OBJCOPY)
648 OBJDUMP := $(DEVTOOLDIR)/$(OBJDUMP)
649endif
650
651ifdef USE_CXX
652 LINK = $(CXX)
653else
654 LINK = $(CC)
655endif
656
657#
658# コンパイルルールの定義
659#
660$(KERNEL_COBJS): $(OBJDIR)/%.o: %.c
661 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
662
663$(KERNEL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
664 $(CC) -S -o $@ $(CFLAGS) $(KERNEL_CFLAGS) $<
665
666$(KERNEL_LCOBJS): $(OBJDIR)/%.o:
667 $(CC) -c -o $@ -DTOPPERS_$(*F) -MD -MP -MF $(DEPDIR)/$*.d \
668 $(CFLAGS) $(KERNEL_CFLAGS) $<
669
670$(KERNEL_LCOBJS:$(OBJDIR)/%.o=%.s): %.s:
671 $(CC) -S -o $@ -DTOPPERS_$(*F) $(CFLAGS) $(KERNEL_CFLAGS) $<
672
673$(KERNEL_ASMOBJS): $(OBJDIR)/%.o: %.S
674 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
675
676$(SYSSVC_COBJS): $(OBJDIR)/%.o: %.c
677 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
678
679$(SYSSVC_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
680 $(CC) -S -o $@ $(CFLAGS) $(SYSSVC_CFLAGS) $<
681
682$(SYSSVC_ASMOBJS): $(OBJDIR)/%.o: %.S
683 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
684
685$(APPL_COBJS): $(OBJDIR)/%.o: %.c
686 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
687
688$(APPL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
689 $(CC) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
690
691$(APPL_CXXOBJS): $(OBJDIR)/%.o: %.cpp
692 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
693
694$(APPL_CXXOBJS:$(OBJDIR)/%.o=%.s): %.s: %.cpp
695 $(CXX) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
696
697$(APPL_ASMOBJS): $(OBJDIR)/%.o: %.S
698 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
699
700$(APPL_BINOBJS): $(OBJDIR)/%.o: %.bin
701 $(OBJCOPY) -B arm -I binary -O elf32-littlearm --rename-section .data=.rodata $< $(OBJDIR)/$*.o
702
703$(MALLOC_OBJS): $(OBJDIR)/%.o:
704 $(AR) x $(MALLOC_LIB) $(notdir $@)
705 mv $(notdir $@) $@
706
707#
708# デフォルトコンパイルルールを上書き
709#
710$(OBJDIR)/%.o: %.c
711 @echo "*** Default compile rules should not be used."
712 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
713
714%.s: %.c
715 @echo "*** Default compile rules should not be used."
716 $(CC) -S -o $@ $(CFLAGS) $<
717
718$(OBJDIR)/%.o: %.cpp
719 @echo "*** Default compile rules should not be used."
720 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
721
722%.s: %.cpp
723 @echo "*** Default compile rules should not be used."
724 $(CXX) -S -o $@ $(CFLAGS) $<
725
726$(OBJDIR)/%.o: %.S
727 @echo "*** Default compile rules should not be used."
728 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
Note: See TracBrowser for help on using the repository browser.