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

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

initial

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