source: anotherchoice/tags/jsp-1.4.4-full-UTF8/sample/Makefile@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 14.5 KB
Line 
1#
2# TOPPERS/JSP Kernel
3# Toyohashi Open Platform for Embedded Real-Time Systems/
4# Just 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) 2005 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10#
11# 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13# によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15# 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16# を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18# 利用と呼ぶ)することを無償で許諾する.
19# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21# スコード中に含まれていること.
22# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23# 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26# 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28# の無保証規定を掲載すること.
29# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30# 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32# と.
33# (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36# 作権表示,この利用条件および下記の無保証規定を掲載すること.
37# (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40# 報告すること.
41# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42# 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45#
46# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48# よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49# 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50# 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51#
52# @(#) $Id: Makefile,v 1.34 2007/01/05 02:44:45 honda Exp $
53#
54
55#
56# ターゲットの指定(Makefile.config で上書きされるのを防ぐため)
57#
58all:
59
60#
61# ターゲット名の定義
62#
63CPU = @(CPU)
64SYS = @(SYS)
65TOOL = @(TOOL)
66
67#
68# プログラミング言語の定義
69#
70PROGRAM_LANG = @(LANG)
71ifeq ($(PROGRAM_LANG),c++)
72 USE_CXX = true
73 CXXLIBS = -lstdc++ -lm -lc
74 CXXRTS = cxxrt.o newlibrt.o
75endif
76
77#
78# ソースファイルのディレクトリの定義
79#
80SRCDIR = @(SRCDIR)
81CONFIGDIR ?= $(SRCDIR)/config
82
83#
84# オブジェクトファイル名の拡張子の設定
85#
86OBJEXT = @(OBJEXT)
87
88#
89# 実行環境の定義(どれにも該当しない場合は,すべてコメントアウトする)
90# (ターゲット依存に上書きされる場合がある)
91#
92DBGENV := GDB_STUB
93
94#
95# カーネルライブラリ(libkernel.a)のディレクトリ名
96# (カーネルライブラリも make 対象にする時は,空に定義する)
97#
98KERNEL_LIB = @(KERNEL_LIB)
99
100#
101# ターゲット依存の定義のインクルード
102#
103ifdef TOOL
104 ifdef SYS
105 include $(CONFIGDIR)/$(CPU)-$(TOOL)/$(SYS)/Makefile.config
106 endif
107 include $(CONFIGDIR)/$(CPU)-$(TOOL)/Makefile.config
108else
109 ifdef SYS
110 include $(CONFIGDIR)/$(CPU)/$(SYS)/Makefile.config
111 endif
112 include $(CONFIGDIR)/$(CPU)/Makefile.config
113endif
114
115#
116# å…
117±é€šã‚³ãƒ³ãƒ‘イルオプションの定義
118#
119COPTS := $(COPTS)
120CDEFS := $(CDEFS)
121INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES)
122LDFLAGS := -nostdlib $(LDFLAGS)
123LIBS := $(LIBS) $(CXXLIBS) -lgcc
124CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
125
126#
127# アプリケーションプログラムに関する定義
128#
129UNAME = @(UNAME)
130UTASK_CFG = $(UNAME).cfg
131
132UTASK_DIR = $(SRCDIR)/library
133UTASK_ASMOBJS =
134ifdef USE_CXX
135 UTASK_CXXOBJS = $(UNAME).o @(UTASK)
136 UTASK_COBJS =
137else
138 UTASK_COBJS = $(UNAME).o @(UTASK)
139endif
140UTASK_CFLAGS =
141UTASK_LIBS =
142
143#
144# システムサービスに関する定義
145#
146STASK_DIR := $(STASK_DIR):$(SRCDIR)/systask:$(SRCDIR)/library
147STASK_ASMOBJS := $(STASK_ASMOBJS)
148STASK_COBJS := $(STASK_COBJS) timer.o serial.o logtask.o \
149 log_output.o vasyslog.o t_perror.o strerror.o \
150 $(CXXRTS)
151STASK_CFLAGS := $(STASK_CFLAGS) -I$(SRCDIR)/systask
152STASK_LIBS := $(STASK_LIBS)
153
154#
155# カーネルに関する定義
156#
157# KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の
158# オブジェクトファイル.
159# KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース
160# ファイルと1対1に対応するオブジェクトファイル.
161# KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで,
162# 1つのソースファイルから複数のオブジェクトファイルを生
163# 成するもの(Makefile.kernel で定義).
164# KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル
165# (Makefile.kernel で定義).
166# KERNEL_AUX_COBJS: ロードモジュールに含めないが,カーネルのソースファ
167# イルと同じオプションを適用してコンパイルすべきファ
168# イル.
169#
170KERNEL = $(SRCDIR)/kernel
171KERNEL_DIR := $(KERNEL_DIR):$(KERNEL)
172KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
173KERNEL_COBJS := startup.o banner.o $(KERNEL_COBJS)
174KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(KERNEL)
175ifdef OMIT_MAKEOFFSET
176 OFFSET_H =
177 KERNEL_AUX_COBJS = kernel_chk.o
178else
179 OFFSET_H = offset.h
180 KERNEL_AUX_COBJS = makeoffset.o kernel_chk.o
181endif
182
183#
184# オブジェクトファイル名の定義
185#
186OBJNAME = jsp
187ifdef OBJEXT
188 OBJFILE = $(OBJNAME).$(OBJEXT)
189else
190 OBJFILE = $(OBJNAME)
191endif
192
193#
194# ターゲットファイル(複数を同時に選択してはならない)
195#
196all: $(OBJFILE)
197#all: $(OBJNAME).out
198#all: $(OBJNAME).bin
199#all: $(OBJNAME).srec
200
201#
202# カーネルのコンフィギュレーションファイルの生成
203#
204kernel_cfg.c kernel_id.h kernel_chk.c: $(UTASK_CFG)
205 $(CC) -E $(INCLUDES) $(CDEFS) -x c-header $(UTASK_CFG) > tmpfile1
206 $(SRCDIR)/cfg/cfg -s tmpfile1 -c -obj -cpu $(CPU) -system $(SYS)
207 rm -f tmpfile1
208
209##### 以下は編集しないこと #####
210
211#
212# 環境に依存するコンパイルオプションの定義
213#
214ifdef DBGENV
215 CDEFS := $(CDEFS) -D$(DBGENV)
216endif
217
218#
219# カーネルライブラリに関連する定義
220#
221ifdef KERNEL_LIB
222 MAKE_KERNEL =
223 LIBKERNEL = $(KERNEL_LIB)/libkernel.a
224else
225 MAKE_KERNEL = libkernel.a
226 LIBKERNEL = $(MAKE_KERNEL)
227endif
228
229#
230# カーネルのファイル構成の定義
231#
232include $(KERNEL)/Makefile.kernel
233
234#
235# $(OBJNAME).chk の生成規則(静的APIのパラメータチェック)
236#
237$(OBJNAME).chk: kernel_chk.s $(SRCDIR)/utils/gencheck
238 $(PERL) $(SRCDIR)/utils/gencheck kernel_chk.s > tmpfile2
239 mv tmpfile2 $(OBJNAME).chk
240
241#
242# offset.h の生成規則(構造体内
243のオフセット値の算出)
244#
245offset.h: makeoffset.s $(SRCDIR)/utils/genoffset
246 $(PERL) $(SRCDIR)/utils/genoffset makeoffset.s > tmpfile3
247 mv tmpfile3 offset.h
248
249#
250# ソースファイルのあるディレクトリに関する定義
251#
252vpath %.c $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR)
253vpath %.S $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR)
254
255#
256# コンパイルのための変数の定義
257#
258KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
259STASK_OBJS = $(STASK_ASMOBJS) $(STASK_COBJS)
260UTASK_OBJS = $(UTASK_ASMOBJS) $(UTASK_COBJS) $(UTASK_CXXOBJS)
261TASK_OBJS = $(UTASK_OBJS) $(STASK_OBJS) kernel_cfg.o
262ALL_OBJS = $(START_OBJS) $(TASK_OBJS) $(END_OBJS)
263ALL_LIBS = $(UTASK_LIBS) $(STASK_LIBS) $(LIBKERNEL) $(LIBS)
264
265ifdef TEXT_START_ADDRESS
266 LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
267endif
268ifdef DATA_START_ADDRESS
269 LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
270endif
271ifdef LDSCRIPT
272 LDFLAGS := $(LDFLAGS) -T $(CONFIGDIR)/$(LDSCRIPT)
273endif
274
275#
276# カーネルライブラリファイルの生成
277#
278libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
279 rm -f libkernel.a
280 $(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
281 $(RANLIB) libkernel.a
282
283#
284# å…
285¨ä½“のリンク
286#
287$(OBJFILE): Makefile.depend $(ALL_OBJS) $(MAKE_KERNEL) $(OBJNAME).chk
288 $(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) \
289 $(START_OBJS) $(TASK_OBJS) $(ALL_LIBS) $(END_OBJS)
290 $(NM) $(OBJFILE) > $(OBJNAME).syms
291 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
292 $(OBJCOPY) -O ihex -S $(OBJFILE) $(OBJNAME).hex
293 $(SRCDIR)/cfg/chk -m $(OBJNAME).syms,$(OBJNAME).srec \
294 -obj -cs $(OBJNAME).chk -cpu $(CPU) -system $(SYS)
295
296#
297# バイナリファイルの生成
298#
299$(OBJNAME).bin: $(OBJFILE)
300 $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
301
302#
303# Sレコードファイルの生成
304#
305$(OBJNAME).srec: $(OBJFILE)
306 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
307
308#
309# コンパイル結果の消去
310#
311clean:
312 rm -f \#* *~ *.o tmpfile?
313 rm -f $(MAKE_KERNEL) $(OBJNAME)
314 rm -f $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).chk
315 rm -f $(OBJNAME).exe $(OBJNAME).bin $(OBJNAME).out
316 rm -f kernel_cfg.c kernel_chk.c kernel_chk.s kernel_id.h kernel_obj.dat
317 rm -f makeoffset.s offset.h
318
319cleankernel:
320 rm -rf $(KERNEL_LIB_OBJS)
321 rm -f makeoffset.s offset.h
322
323cleandep:
324 rm -f Makefile.depend
325
326realclean: cleandep clean
327
328#
329# kernel_cfg.c のコンパイルルールと依存関係作成ルールの定義
330#
331# kernel_cfg.c は,アプリケーションプログラム用,システムサービス用,
332# カーネル用のすべてのオプションを付けてコンパイルする.
333#
334KERNEL_CFG_CFLAGS = $(UTASK_CFLAGS) $(STASK_CFLAGS) $(KERNEL_CFLAGS)
335
336kernel_cfg.o: kernel_cfg.c
337 $(CC) -c $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
338
339kernel_cfg.s: kernel_cfg.c
340 $(CC) -S $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
341
342kernel_cfg.d: kernel_cfg.c
343 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
344 -O "$(CFLAGS) $(KERNEL_CFG_CFLAGS)" $< >> Makefile.depend
345
346#
347# 特別な依存関係の定義
348#
349banner.o: $(filter-out banner.o,$(KERNEL_LIB_OBJS))
350
351#
352# 特殊な依存関係作成ルールの定義
353#
354kernel_id.d: $(UTASK_CFG)
355 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -X \
356 -T "kernel_cfg.c kernel_id.h kernel_chk.c" \
357 -O "$(INCLUDES)" $< >> Makefile.depend
358
359makeoffset.d: makeoffset.c
360 @$(PERL) $(SRCDIR)/utils/makedep -s -C $(CC) \
361 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
362
363kernel_chk.d: kernel_chk.c
364 @$(PERL) $(SRCDIR)/utils/makedep -s -C $(CC) \
365 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
366
367#
368# 依存関係ファイルの生成
369#
370gendepend:
371 @echo "Generating Makefile.depend."
372
373ifdef KERNEL_LIB
374depend: cleandep kernel_cfg.c gendepend kernel_id.d \
375 kernel_chk.d $(ALL_OBJS:.o=.d)
376else
377depend: cleandep $(OFFSET_H) kernel_cfg.c gendepend kernel_id.d \
378 $(KERNEL_AUX_COBJS:.o=.d) $(KERNEL_ASMOBJS:.o=.d) \
379 $(KERNEL_COBJS:.o=.d) $(KERNEL_LCSRCS:.c=.d) $(ALL_OBJS:.o=.d)
380endif
381
382#
383# 依存関係ファイルをインクルード
384#
385-include Makefile.depend
386
387#
388# 開発ツールのコマンド名の定義
389#
390ifndef TOOL
391 #
392 # GNU開発環境用
393 #
394 ifdef TARGET
395 TARGET_PREFIX = $(TARGET)-
396 else
397 TARGET_PREFIX =
398 endif
399 CC = $(TARGET_PREFIX)gcc
400 CXX = $(TARGET_PREFIX)g++
401 AS = $(TARGET_PREFIX)as
402 LD = $(TARGET_PREFIX)ld
403 AR = $(TARGET_PREFIX)ar
404 NM = $(TARGET_PREFIX)nm
405 RANLIB = $(TARGET_PREFIX)ranlib
406 OBJCOPY = $(TARGET_PREFIX)objcopy
407 OBJDUMP = $(TARGET_PREFIX)objdump
408else
409 TARGET_PREFIX =
410endif
411
412ifdef USE_CXX
413 LINK = $(CXX)
414else
415 LINK = $(CC)
416endif
417
418PERL = @(PERL)
419
420#
421# コンパイルルールの定義
422#
423KERNEL_ALL_COBJS = $(KERNEL_COBJS) $(KERNEL_AUX_COBJS)
424
425$(KERNEL_ALL_COBJS): %.o: %.c
426 $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
427
428$(KERNEL_ALL_COBJS:.o=.s): %.s: %.c
429 $(CC) -S $(CFLAGS) $(KERNEL_CFLAGS) $<
430
431$(KERNEL_LCOBJS): %.o:
432 $(CC) -D__$(*F) -o $@ -c $(CFLAGS) $(KERNEL_CFLAGS) $<
433
434$(KERNEL_LCOBJS:.o=.s): %.s:
435 $(CC) -D__$(*F) -o $@ -S $(CFLAGS) $(KERNEL_CFLAGS) $<
436
437$(KERNEL_ASMOBJS): %.o: %.S
438 $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
439
440$(STASK_COBJS): %.o: %.c
441 $(CC) -c $(CFLAGS) $(STASK_CFLAGS) $<
442
443$(STASK_COBJS:.o=.s): %.s: %.c
444 $(CC) -S $(CFLAGS) $(STASK_CFLAGS) $<
445
446$(STASK_ASMOBJS): %.o: %.S
447 $(CC) -c $(CFLAGS) $(STASK_CFLAGS) $<
448
449$(UTASK_COBJS): %.o: %.c
450 $(CC) -c $(CFLAGS) $(UTASK_CFLAGS) $<
451
452$(UTASK_COBJS:.o=.s): %.s: %.c
453 $(CC) -S $(CFLAGS) $(UTASK_CFLAGS) $<
454
455$(UTASK_CXXOBJS): %.o: %.cpp
456 $(CXX) -c $(CFLAGS) $(UTASK_CFLAGS) $<
457
458$(UTASK_CXXOBJS:.o=.s): %.s: %.cpp
459 $(CXX) -S $(CFLAGS) $(UTASK_CFLAGS) $<
460
461$(UTASK_ASMOBJS): %.o: %.S
462 $(CC) -c $(CFLAGS) $(UTASK_CFLAGS) $<
463
464#
465# 依存関係作成ルールの定義
466#
467$(KERNEL_COBJS:.o=.d): %.d: %.c
468 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
469 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
470
471$(KERNEL_LCSRCS:.c=.d): %.d: %.c
472 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -T "$($*)" \
473 -O "$(foreach sym,$($*),-D__$(sym:.o=)) \
474 $(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
475
476$(KERNEL_LCOBJS:.o=.d): %.d:
477 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -T $*.o \
478 -O "-D__$(*F) $(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
479
480$(KERNEL_ASMOBJS:.o=.d): %.d: %.S
481 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
482 -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
483
484$(STASK_COBJS:.o=.d): %.d: %.c
485 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
486 -O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
487
488$(STASK_ASMOBJS:.o=.d): %.d: %.S
489 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
490 -O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
491
492$(UTASK_COBJS:.o=.d): %.d: %.c
493 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
494 -O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
495
496$(UTASK_CXXOBJS:.o=.d): %.d: %.cpp
497 @$(PERL) $(SRCDIR)/utils/makedep -C $(CXX) \
498 -O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
499
500$(UTASK_ASMOBJS:.o=.d): %.d: %.S
501 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
502 -O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
503
504#
505# デフォルトコンパイルルールを上書き
506#
507%.o: %.c
508 @echo "*** Default compile rules should not be used."
509 $(CC) -c $(CFLAGS) $<
510
511%.s: %.c
512 @echo "*** Default compile rules should not be used."
513 $(CC) -S $(CFLAGS) $<
514
515%.o: %.cpp
516 @echo "*** Default compile rules should not be used."
517 $(CXX) -c $(CFLAGS) $<
518
519%.s: %.cpp
520 @echo "*** Default compile rules should not be used."
521 $(CXX) -S $(CFLAGS) $<
522
523%.o: %.S
524 @echo "*** Default compile rules should not be used."
525 $(CC) -c $(CFLAGS) $<
Note: See TracBrowser for help on using the repository browser.