source: EcnlProtoTool/trunk/asp3_dcre/sample/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: 18.5 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 = @(TARGET)
52
53#
54# プログラミング言語の定義
55#
56SRCLANG = @(SRCLANG)
57ifeq ($(SRCLANG),c)
58 LIBS = -lc
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 = @(SRCDIR)
70
71#
72# オブジェクトファイル名の拡張子の設定
73#
74OBJEXT = @(OBJEXT)
75
76#
77# カーネルライブラリ(libkernel.a)のディレクトリ名
78# (カーネルライブラリもmake対象にする時は,空に定義する)
79#
80KERNEL_LIB = @(KERNEL_LIB)
81
82#
83# カーネルを関数単位でコンパイルするかどうかの定義
84#
85KERNEL_FUNCOBJS = @(KERNEL_FUNCOBJS)
86
87#
88# TECSを外すかどうかの定義
89#
90OMIT_TECS = @(OMIT_TECS)
91
92#
93# TECS関係ファイルのディレクトリの定義
94#
95TECSDIR = @(TECSDIR)
96
97#
98# トレースログを取得するかどうかの定義
99#
100ENABLE_TRACE = @(ENABLE_TRACE)
101
102#
103# 開発ツール(コンパイラ等)のディレクトリの定義
104#
105DEVTOOLDIR = @(DEVTOOLDIR)
106
107#
108# ユーティリティプログラムの名称
109#
110CFG = @(CFG)
111TECSGEN = @(TECSGEN)
112
113#
114# オブジェクトファイル名の定義
115#
116OBJNAME = asp
117ifdef OBJEXT
118 OBJFILE = $(OBJNAME).$(OBJEXT)
119 CFG1_OUT = cfg1_out.$(OBJEXT)
120else
121 OBJFILE = $(OBJNAME)
122 CFG1_OUT = cfg1_out
123endif
124
125#
126# 中間オブジェクトファイルと依存関係ファイルを置くディレクトリの定義
127#
128OBJDIR = @(OBJDIR)
129DEPDIR = @(OBJDIR)
130
131#
132# ターゲット依存部のディレクトリの定義
133#
134TARGETDIR = $(SRCDIR)/target/$(TARGET)
135
136#
137# ターゲット依存の定義のインクルード
138#
139include $(TARGETDIR)/Makefile.target
140
141#
142# TECS生成ファイルのディレクトリの定義
143#
144TECSGENDIR = ./gen
145ifndef OMIT_TECS
146 TECSGEN_TIMESTAMP = $(TECSGENDIR)/tecsgen.timestamp
147 INIT_TECS_COBJ = init_tecs.o
148endif
149
150#
151# TECSが生成する定義のインクルード
152#
153ifndef OMIT_TECS
154 GEN_DIR = $(TECSGENDIR)
155 -include $(TECSGENDIR)/Makefile.tecsgen
156endif
157
158TINETDIR =
159
160#
161# mbedサービスの定義
162#
163
164include $(SRCDIR)/mbed/Makefile.mbed
165
166#
167# 共通コンパイルオプションの定義
168#
169COPTS := -g @(COPTS) $(COPTS)
170ifndef OMIT_WARNING_ALL
171 COPTS := -Wall $(COPTS)
172endif
173ifndef OMIT_OPTIMIZATION
174 COPTS := -O2 $(COPTS)
175endif
176ifdef OMIT_TECS
177 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
178endif
179CDEFS := $(CDEFS) @(CDEFS)
180INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES) -I$(SRCDIR)
181LDFLAGS := $(LDFLAGS) @(LDFLAGS)
182LIBS := $(LIBS) $(CXXLIBS)
183CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
184
185#
186# アプリケーションプログラムに関する定義
187#
188APPLNAME = @(APPLNAME)
189APPLDIRS = @(APPLDIRS)
190APPL_CFG = @(CFGFILE)
191APPL_CDL = @(CDLFILE)
192
193APPL_DIRS := $(APPLDIRS) $(SRCDIR)/library
194APPL_ASMOBJS :=
195ifdef USE_CXX
196 APPL_CXXOBJS := @(APPLOBJS)
197 APPL_COBJS :=
198else
199 APPL_COBJS := @(APPLOBJS)
200endif
201APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o mbed_stub.o
202APPL_CFLAGS := $(APPL_CFLAGS)
203ifdef APPLDIRS
204 INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIRS),-I$(dir))
205endif
206
207ifdef TINETDIR
208 #
209 # ネットワークサービスの定義
210 #
211 NO_USE_TINET_LIBRARY = true
212
213 # ネットワークインタフェースの選択、何れか一つ選択する。
214 NET_IF = ether
215
216 # イーサネット・ディバイスドライバの選択
217 NET_DEV = if_mbed
218
219 # ネットワーク層の選択
220 #SUPPORT_INET6 = true
221 SUPPORT_INET4 = true
222
223 # API に組込む機能の選択
224 #API_CFG_IP4MAPPED_ADDR = true
225
226 # トランスポート層の選択
227 SUPPORT_TCP = true
228 #SUPPORT_UDP = true
229
230 # IGMPを有効に設定
231 #SUPPORT_IGMP = true
232
233 #
234 # ネットワークサービスの Makefile のインクルード
235 #
236 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
237endif
238
239#
240# システムサービスに関する定義
241#
242SYSSVC_DIRS := $(TECSGENDIR) $(SRCDIR)/tecs_kernel \
243 $(SYSSVC_DIRS) $(SRCDIR)/syssvc
244SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
245SYSSVC_COBJS := $(SYSSVC_COBJS) $(TECS_COBJS) \
246 $(INIT_TECS_COBJ) $(CXXRTS)
247SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
248INCLUDES := $(INCLUDES) -I$(TECSGENDIR) -I$(SRCDIR)/tecs_kernel
249
250#
251# トレースログ記録のサンプルコードに関する定義
252#
253ifdef ENABLE_TRACE
254 COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
255 SYSSVC_DIRS := $(SYSSVC_DIRS) $(SRCDIR)/arch/tracelog
256endif
257
258#
259# ターゲットファイル
260#
261.PHONY: all
262ifndef OMIT_TECS
263all: tecs | $(DEPDIR)
264# @$(MAKE) check
265 @$(MAKE) check $(OBJNAME).bin
266# @$(MAKE) check $(OBJNAME).srec
267else
268#all: check
269all: check $(OBJNAME).bin
270#all: check $(OBJNAME).srec
271endif
272
273##### 以下は編集しないこと #####
274
275#
276# コンフィギュレータに関する定義
277#
278CFG_KERNEL := --kernel asp
279ifndef TINETDIR
280 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
281 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
282 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
283else
284 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T $(TARGETDIR)/target_kernel.trb:kernel
285 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
286 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
287 --symval-table $(TINET_ROOT)/tcpip_sym.def \
288 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
289endif
290CFG_ASMOBJS := $(CFG_ASMOBJS)
291CFG_COBJS := kernel_cfg.o $(CFG_COBJS)
292CFG_CFLAGS := -DTOPPERS_CB_TYPE_ONLY $(CFG_CFLAGS)
293
294CFG2_OUT_SRCS := kernel_cfg.h kernel_cfg.c $(CFG2_OUT_SRCS)
295
296#
297# カーネルに関する定義
298#
299# KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
300# オブジェクトファイル.
301# KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
302# ファイルと1対1に対応するオブジェクトファイル.
303# KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで,
304# 1つのソースファイルから複数のオブジェクトファイルを生
305# 成するもの.
306# KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル.
307#
308KERNEL_DIRS := $(KERNEL_DIRS) $(SRCDIR)/kernel
309KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
310KERNEL_COBJS := $(KERNEL_COBJS)
311KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(SRCDIR)/kernel
312
313#
314# カーネルのファイル構成の定義
315#
316include $(SRCDIR)/kernel/Makefile.kernel
317ifdef KERNEL_FUNCOBJS
318 KERNEL_LCSRCS := $(KERNEL_FCSRCS)
319 KERNEL_LCOBJS := $(foreach file,$(KERNEL_FCSRCS),$($(file:.c=)))
320else
321 KERNEL_CFLAGS := -DALLFUNC $(KERNEL_CFLAGS)
322 KERNEL_COBJS := $(KERNEL_COBJS) \
323 $(foreach file,$(KERNEL_FCSRCS),$(file:.c=.o))
324endif
325ifdef TARGET_OFFSET_TRB
326 OFFSET_H = offset.h
327endif
328ifndef TARGET_OFFSET_TRB
329 TARGET_OFFSET_TRB := $(TARGETDIR)/target_offset.trb
330endif
331ifndef TARGET_KERNEL_TRB
332 TARGET_KERNEL_TRB := $(TARGETDIR)/target_kernel.trb
333endif
334ifndef TARGET_CHECK_TRB
335 TARGET_CHECK_TRB := $(TARGETDIR)/target_check.trb
336endif
337ifndef TARGET_KERNEL_CFG
338 TARGET_KERNEL_CFG := $(TARGETDIR)/target_kernel.cfg
339endif
340ifndef TARGET_TCPIP_TRB
341 TARGET_TCPIP_TRB := $(SRCDIR)/$(TINETDIR)/tinet.trb
342endif
343
344#
345# ソースファイルのあるディレクトリに関する定義
346#
347vpath %.c $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
348vpath %.S $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS)
349vpath %.cfg $(APPL_DIRS)
350vpath %.cdl $(APPL_DIRS)
351
352#
353# 中間オブジェクトファイルを置くディレクトリの処理
354#
355APPL_ASMOBJS := $(addprefix $(OBJDIR)/, $(APPL_ASMOBJS))
356APPL_CXXOBJS := $(addprefix $(OBJDIR)/, $(APPL_CXXOBJS))
357APPL_COBJS := $(addprefix $(OBJDIR)/, $(APPL_COBJS))
358SYSSVC_ASMOBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_ASMOBJS))
359SYSSVC_COBJS := $(addprefix $(OBJDIR)/, $(SYSSVC_COBJS))
360KERNEL_ASMOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_ASMOBJS))
361KERNEL_COBJS := $(addprefix $(OBJDIR)/, $(KERNEL_COBJS))
362KERNEL_LCOBJS := $(addprefix $(OBJDIR)/, $(KERNEL_LCOBJS))
363CFG_ASMOBJS := $(addprefix $(OBJDIR)/, $(CFG_ASMOBJS))
364CFG_COBJS := $(addprefix $(OBJDIR)/, $(CFG_COBJS))
365
366#
367# コンパイルのための変数の定義
368#
369APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
370SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS)
371KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
372CFG_OBJS = $(CFG_ASMOBJS) $(CFG_COBJS)
373ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
374 $(END_OBJS) $(HIDDEN_OBJS)
375ALL_LIBS = -lkernel $(LIBS)
376ifdef KERNEL_LIB
377 LIBS_DEP = $(KERNEL_LIB)/libkernel.a $(filter %.a,$(LIBS))
378 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L$(KERNEL_LIB)
379 REALCLEAN_FILES := libkernel.a $(REALCLEAN_FILES)
380else
381 LIBS_DEP = libkernel.a $(filter %.a,$(LIBS))
382 OBJ_LDFLAGS := $(OBJ_LDFLAGS) -L.
383endif
384
385ifdef TEXT_START_ADDRESS
386 LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
387endif
388ifdef DATA_START_ADDRESS
389 LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
390endif
391ifdef LDSCRIPT
392 LDFLAGS := $(LDFLAGS) -Wl,-T,$(LDSCRIPT)
393endif
394
395#
396# tecsgenからCプリプロセッサを呼び出す際のオプションの定義
397#
398TECS_CPP = $(CC) $(CDEFS) $(INCLUDES) $(SYSSVC_CFLAGS) -D TECSGEN -E
399
400#
401# tecsgenの呼出し
402#
403.PHONY: tecs
404tecs $(TECSGEN_SRCS) $(TECS_HEADERS): $(TECSGEN_TIMESTAMP) ;
405$(TECSGEN_TIMESTAMP): $(APPL_CDL) $(TECS_IMPORTS)
406 $(TECSGEN) $< -R $(INCLUDES) --cpp "$(subst ", \", $(TECS_CPP))" -g $(TECSGENDIR)
407
408#
409# カーネルのコンフィギュレーションファイルの生成
410#
411cfg1_out.c cfg1_out.db: cfg1_out.timestamp ;
412cfg1_out.timestamp: $(APPL_CFG) $(TECSGEN_TIMESTAMP)
413 $(CFG) --pass 1 $(CFG_KERNEL) $(INCLUDES) $(CFG_TABS) \
414 -M $(DEPDIR)/cfg1_out_c.d $(TARGET_KERNEL_CFG) $<
415
416$(CFG1_OUT): $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(END_OBJS) $(HIDDEN_OBJS)
417 $(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \
418 $(START_OBJS) $(OBJDIR)/cfg1_out.o $(CFG_DMY) $(LIBS) $(END_OBJS)
419
420cfg1_out.syms: $(CFG1_OUT)
421 $(NM) -n $(CFG1_OUT) > cfg1_out.syms
422
423cfg1_out.srec: $(CFG1_OUT)
424 $(OBJCOPY) -O srec -S $(CFG1_OUT) cfg1_out.srec
425
426$(CFG2_OUT_SRCS) cfg2_out.db: kernel_cfg.timestamp ;
427kernel_cfg.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
428 $(CFG) --pass 2 $(CFG_KERNEL) $(INCLUDES) $(CFG_TRB)
429
430#
431# オフセットファイル(offset.h)の生成規則
432#
433$(OFFSET_H): offset.timestamp ;
434offset.timestamp: cfg1_out.db cfg1_out.syms cfg1_out.srec
435 $(CFG) --pass 2 -O $(CFG_KERNEL) $(INCLUDES) -T $(TARGET_OFFSET_TRB) \
436 --rom-symbol cfg1_out.syms --rom-image cfg1_out.srec
437
438#
439# カーネルライブラリファイルの生成
440#
441libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
442 rm -f libkernel.a
443 $(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
444 $(RANLIB) libkernel.a
445
446#
447# 並列makeのための依存関係の定義
448#
449$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
450$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
451 | offset.timestamp
452
453#
454# 特別な依存関係の定義
455#
456$(OBJDIR)/@(BANNEROBJ): $(filter-out $(OBJDIR)/@(BANNEROBJ),$(ALL_OBJS)) \
457 $(LIBS_DEP)
458
459#
460# 全体のリンク
461#
462$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
463 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
464 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
465 $(ALL_LIBS) $(END_OBJS)
466
467#
468# 依存関係フォルダの作成
469#
470$(DEPDIR):
471 mkdir $@
472
473#
474# シンボルファイルの生成
475#
476$(OBJNAME).syms: $(OBJFILE)
477 $(NM) -n $(OBJFILE) > $(OBJNAME).syms
478
479#
480# バイナリファイルの生成
481#
482$(OBJNAME).bin: $(OBJFILE)
483 $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
484
485#
486# Sレコードファイルの生成
487#
488$(OBJNAME).srec: $(OBJFILE)
489 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
490
491#
492# エラーチェック処理
493#
494.PHONY: check
495check: check.timestamp ;
496check.timestamp: cfg2_out.db $(OBJNAME).syms $(OBJNAME).srec
497 $(CFG) --pass 3 $(CFG_KERNEL) -O $(INCLUDES) -T $(TARGET_CHECK_TRB) \
498 --rom-symbol $(OBJNAME).syms --rom-image $(OBJNAME).srec
499 @echo "configuration check passed"
500
501#
502# コンパイル結果の消去
503#
504.PHONY: clean
505clean:
506 rm -f \#* *~ $(OBJDIR)/*.o $(DEPDIR)/*.d $(CLEAN_FILES) check.timestamp
507 rm -f $(OBJFILE) $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).bin
508 rm -f kernel_cfg.timestamp $(CFG2_OUT_SRCS) cfg2_out.db
509 rm -f offset.timestamp $(OFFSET_H)
510 rm -f cfg1_out.syms cfg1_out.srec $(CFG1_OUT)
511 rm -f cfg1_out.timestamp cfg1_out.c cfg1_out.db
512 rm -rf $(TECSGENDIR)
513ifndef KERNEL_LIB
514 rm -f libkernel.a
515endif
516
517.PHONY: cleankernel
518cleankernel:
519 rm -f $(OFFSET_H) $(KERNEL_LIB_OBJS)
520 rm -f $(KERNEL_LIB_OBJS:$(OBJDIR)/%.o=$(DEPDIR)/%.d)
521
522.PHONY: realclean
523realclean: clean
524 rm -f $(REALCLEAN_FILES)
525
526#
527# コンフィギュレータが生成したファイルのコンパイルルールの定義
528#
529# コンフィギュレータが生成したファイルは,共通のコンパイルオプション
530# のみを付けてコンパイルする.
531#
532ALL_CFG_COBJS = $(CFG_COBJS) $(OBJDIR)/cfg1_out.o
533ALL_CFG_ASMOBJS = $(CFG_ASMOBJS)
534
535$(ALL_CFG_COBJS): $(OBJDIR)/%.o: %.c
536 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
537
538$(ALL_CFG_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
539 $(CC) -S -o $@ $(CFLAGS) $(CFG_CFLAGS) $<
540
541$(ALL_CFG_ASMOBJS): $(OBJDIR)/%.o: %.S
542 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(CFG_CFLAGS) $<
543
544#
545# 依存関係ファイルのインクルード
546#
547-include $(DEPDIR)/*.d
548
549#
550# 開発ツールのコマンド名の定義
551#
552ifeq ($(TOOL),gcc)
553 #
554 # GNU開発環境用
555 #
556 ifdef GCC_TARGET
557 GCC_TARGET_PREFIX = $(GCC_TARGET)-
558 else
559 GCC_TARGET_PREFIX =
560 endif
561 CC := $(GCC_TARGET_PREFIX)gcc
562 CXX := $(GCC_TARGET_PREFIX)g++
563 AS := $(GCC_TARGET_PREFIX)as
564 LD := $(GCC_TARGET_PREFIX)ld
565 AR := $(GCC_TARGET_PREFIX)ar
566 NM := $(GCC_TARGET_PREFIX)nm
567 RANLIB := $(GCC_TARGET_PREFIX)ranlib
568 OBJCOPY := $(GCC_TARGET_PREFIX)objcopy
569 OBJDUMP := $(GCC_TARGET_PREFIX)objdump
570endif
571
572ifdef DEVTOOLDIR
573 CC := $(DEVTOOLDIR)/$(CC)
574 CXX := $(DEVTOOLDIR)/$(CXX)
575 AS := $(DEVTOOLDIR)/$(AS)
576 LD := $(DEVTOOLDIR)/$(LD)
577 AR := $(DEVTOOLDIR)/$(AR)
578 NM := $(DEVTOOLDIR)/$(NM)
579 RANLIB := $(DEVTOOLDIR)/$(RANLIB)
580 OBJCOPY := $(DEVTOOLDIR)/$(OBJCOPY)
581 OBJDUMP := $(DEVTOOLDIR)/$(OBJDUMP)
582endif
583
584ifdef USE_CXX
585 LINK = $(CXX)
586else
587 LINK = $(CC)
588endif
589
590#
591# コンパイルルールの定義
592#
593$(KERNEL_COBJS): $(OBJDIR)/%.o: %.c
594 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
595
596$(KERNEL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
597 $(CC) -S -o $@ $(CFLAGS) $(KERNEL_CFLAGS) $<
598
599$(KERNEL_LCOBJS): $(OBJDIR)/%.o:
600 $(CC) -c -o $@ -DTOPPERS_$(*F) -MD -MP -MF $(DEPDIR)/$*.d \
601 $(CFLAGS) $(KERNEL_CFLAGS) $<
602
603$(KERNEL_LCOBJS:$(OBJDIR)/%.o=%.s): %.s:
604 $(CC) -S -o $@ -DTOPPERS_$(*F) $(CFLAGS) $(KERNEL_CFLAGS) $<
605
606$(KERNEL_ASMOBJS): $(OBJDIR)/%.o: %.S
607 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(KERNEL_CFLAGS) $<
608
609$(SYSSVC_COBJS): $(OBJDIR)/%.o: %.c
610 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
611
612$(SYSSVC_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
613 $(CC) -S -o $@ $(CFLAGS) $(SYSSVC_CFLAGS) $<
614
615$(SYSSVC_ASMOBJS): $(OBJDIR)/%.o: %.S
616 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(SYSSVC_CFLAGS) $<
617
618$(APPL_COBJS): $(OBJDIR)/%.o: %.c
619 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
620
621$(APPL_COBJS:$(OBJDIR)/%.o=%.s): %.s: %.c
622 $(CC) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
623
624$(APPL_CXXOBJS): $(OBJDIR)/%.o: %.cpp
625 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
626
627$(APPL_CXXOBJS:$(OBJDIR)/%.o=%.s): %.s: %.cpp
628 $(CXX) -S -o $@ $(CFLAGS) $(APPL_CFLAGS) $<
629
630$(APPL_ASMOBJS): $(OBJDIR)/%.o: %.S
631 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
632
633#
634# デフォルトコンパイルルールを上書き
635#
636$(OBJDIR)/%.o: %.c
637 @echo "*** Default compile rules should not be used."
638 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
639
640%.s: %.c
641 @echo "*** Default compile rules should not be used."
642 $(CC) -S -o $@ $(CFLAGS) $<
643
644$(OBJDIR)/%.o: %.cpp
645 @echo "*** Default compile rules should not be used."
646 $(CXX) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
647
648%.s: %.cpp
649 @echo "*** Default compile rules should not be used."
650 $(CXX) -S -o $@ $(CFLAGS) $<
651
652$(OBJDIR)/%.o: %.S
653 @echo "*** Default compile rules should not be used."
654 $(CC) -c -o $@ -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $<
Note: See TracBrowser for help on using the repository browser.