# # TOPPERS/JSP Kernel # Toyohashi Open Platform for Embedded Real-Time Systems/ # Just Standard Profile Kernel # # Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory # Toyohashi Univ. of Technology, JAPAN # Copyright (C) 2003-2004, 2010 by Naoki Saito # Nagoya Municipal Industrial Research Institute, JAPAN # # 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation # によって公表されている GNU General Public License の Version 2 に記 # 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア # を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, # 利用と呼ぶ)することを無償で許諾する. # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー # スコード中に含まれていること. # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 # の無保証規定を掲載すること. # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ # と. # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 # 作権表示,この利用条件および下記の無保証規定を掲載すること. # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに # 報告すること. # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. # # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お # よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も # 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 # 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. # # @(#) $Id: Makefile.m32c-oaks32,v 1.2 2005/12/06 03:06:03 honda Exp $ # # # ターゲットの指定(Makefile.config で上書きされるのを防ぐため) # all: # # ターゲット名の定義 # CPU = m32c SYS = oaks32 TOOL = renesas # # ターゲットシステム依存の定義 # # # アドレス設定(末尾の"h"は付けなくて良い) # # ISPの初期値 RAMEND = 07800 # RAMの先頭番地(SFRは含まない) RAM_START_ADR = 00400 # ROMの先頭番地 ROM_START_ADR = 0f80000 # # ツールのインストール先ディレクトリ # TOOLDIR = C:\Hew\Tools\Renesas\nc308wa\v542r00 # タスクモニタを使用するか(しない場合は0に、使用する場合は1に) MON = 0 # KD3083を使用するか(しない場合は0に、使用する場合は1にする) USE_KD3083 = 1 # LB308を使うかどうか(使用しない場合はコメントアウトする) #USE_LB308 = 1 # # ソースファイルのディレクトリの定義 # SRCDIR = @(SRCDIR) CONFIGDIR ?= $(SRCDIR)\config # # カーネルライブラリ(libkernel.lib)のディレクトリ名 # (カーネルライブラリも make 対象にする時は,空に定義する) # configure でMakefile生成時に -L オプション指定でも設定できる # KERNEL_LIB = @(KERNEL_LIB) # # 共通コンパイルオプションの定義 # COPTS = -dir . -silent -g # -O2 ## -O2はエントリー版では未サポート ifndef USE_LB308 CDEFS = -DNEED_API endif INCLUDES = -I. -I$(SRCDIR)\include -I$(CONFIGDIR)\$(CPU)-$(TOOL) \ -I$(CONFIGDIR)\$(CPU)-$(TOOL)\$(SYS) CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) LDFLAGS = -. -MSL -M82 -G LIBS = nc382lib ASMFLAGS = -O. -. -I. -M82 # # アプリケーションプログラムに関する定義 # UNAME = @(UNAME) UTASK_CFG = $(UNAME).cfg UTASK_DIR = $(SRCDIR)\library UTASK_ASMOBJS = UTASK_COBJS = $(UNAME).r30 @(UTASK) UTASK_CFLAGS = UTASK_LIBS = # # システムサービスに関する定義 # STASK_DIR = $(SRCDIR)\systask:$(SRCDIR)\library STASK_ASMOBJS = STASK_COBJS = timer.r30 serial.r30 logtask.r30 \ log_output.r30 vasyslog.r30 t_perror.r30 strerror.r30 sfruart.r30 STASK_CFLAGS = -I$(SRCDIR)\systask STASK_LIBS = # # カーネルに関する定義 # # KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の # オブジェクトファイル. # KERNEL_COBJS: カーネルのライブラリに含める,ソースがC言語で,ソース # ファイルと1対1に対応するオブジェクトファイル. # KERNEL_LCSRCS: カーネルのライブラリに含めるC言語のソースファイルで, # 1つのソースファイルから複数のオブジェクトファイルを生 # 成するもの(Makefile.kernel で定義). # KERNEL_LCOBJS: 上のソースファイルから生成されるオブジェクトファイル # (Makefile.kernel で定義). # KERNEL_AUX_COBJS: ロードモジュールに含めないが,カーネルのソースファ # イルと同じオプションを適用してコンパイルすべきファ # イル. # KERNEL = $(SRCDIR)\kernel KERNEL_DIR = $(KERNEL):$(CONFIGDIR)\$(CPU)-$(TOOL):$(CONFIGDIR)\$(CPU)-$(TOOL)\$(SYS) KERNEL_ASMOBJS = cpu_support.r30 KERNEL_COBJS = startup.r30 banner.r30 cpu_config.r30 sys_config.r30 KERNEL_AUX_COBJS = kernel_chk.r30 KERNEL_ASMFLAGS = -DRAMEND=$(RAMEND)h:MON=$(MON):USE_KD3083=$(USE_KD3083) KERNEL_CFLAGS = -I$(KERNEL) # # オブジェクトファイル名の定義 # OBJNAME = jsp OBJFILE = $(OBJNAME).x30 # # ターゲットファイル(複数を同時に選択してはならない) # #all: $(OBJFILE) all: $(OBJNAME).mot # # カーネルのコンフィギュレーションファイルの生成 # kernel_cfg.c kernel_id.h kernel_chk.c: $(UTASK_CFG) $(CPP) $(INCLUDES) $(CDEFS) $(UTASK_CFG) > tmpfile1 $(SRCDIR)\cfg\cfg -s tmpfile1 -c -obj -cpu $(CPU) -system $(SYS) @-del tmpfile1 ##### 以下は編集しないこと ##### # # スタートアップモジュール関連 # START_OBJS = start.r30 # 依存関係作成ルール(何もしない) $(START_OBJS:.r30=.d): %.d: %.a30 # スタートアップモジュールのコンパイルルール $(START_OBJS): %.r30: %.a30 m16cvec.inc $(AS) $(ASMFLAGS) -DRAMEND=$(RAMEND)h:MON=$(MON) $( kernel_cfg.i $(SRCDIR)\utils\m16c-renesas\m16cvec.exe -M0 -F0ffffdch # # カーネルライブラリに関連する定義 # # 既存のカーネルライブラリファイルがある場合 ifdef KERNEL_LIB MAKE_KERNEL = LIBKERNEL = $(KERNEL_LIB)\libkernel.lib else ifdef USE_LB308 # 既存のカーネルライブラリがなく、ライブラリを作る場合 MAKE_KERNEL = libkernel.lib LIBKERNEL = $(MAKE_KERNEL) else # 既存のカーネルライブラリがなく、ライブラリを作らない場合 MAKE_KERNEL = $(KERNEL_LIB_OBJS) LIBKERNEL = endif endif # # カーネルのファイル構成の定義 # include $(CONFIGDIR)\$(CPU)-$(TOOL)\$(SYS)\Makefile.kernel # # ソースファイルのあるディレクトリに関する定義 # vpath %.c $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR) vpath %.a30 $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR) vpath %.inc $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR) # # コンパイルのための変数の定義 # # # カーネルライブラリに含めるオブジェクトファイル # KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS) # オブジェクトファイルの定義 STASK_OBJS = $(STASK_ASMOBJS) $(STASK_COBJS) UTASK_OBJS = $(UTASK_ASMOBJS) $(UTASK_COBJS) TASK_OBJS = $(UTASK_OBJS) $(STASK_OBJS) kernel_cfg.r30 # リンクする(ライブラリでない)オブジェクトファイル ALL_OBJS = $(START_OBJS) $(TASK_OBJS) $(END_OBJS) # 使用するライブラリ ALL_LIBS := $(UTASK_LIBS) $(STASK_LIBS) $(LIBKERNEL) $(LIBS) # # カーネルライブラリファイルの生成 # libkernel.lib: $(KERNEL_LIB_OBJS) @-del libkernel.lib $(AR) -. -c $@ $(KERNEL_LIB_OBJS) # # 全体のリンク # $(OBJFILE): Makefile.depend $(ALL_OBJS) $(MAKE_KERNEL) # $(OBJNAME).chk @echo $(LDFLAGS) > $(OBJNAME).cmd @echo -O $(OBJFILE) >> $(OBJNAME).cmd @echo -NOSTOP >> $(OBJNAME).cmd @echo -ORDER data_NE=$(RAM_START_ADR) >> $(OBJNAME).cmd @echo -ORDER data_NO >> $(OBJNAME).cmd @echo -ORDER bss_NE >> $(OBJNAME).cmd @echo -ORDER bss_NO >> $(OBJNAME).cmd @echo -ORDER program=$(ROM_START_ADR) >> $(OBJNAME).cmd @echo -ORDER rom_FE >> $(OBJNAME).cmd @echo -ORDER rom_FO >> $(OBJNAME).cmd @echo -ORDER data_NEI >> $(OBJNAME).cmd @echo -ORDER data_NOI >> $(OBJNAME).cmd @echo -ORDER vvector >> $(OBJNAME).cmd @echo -ORDER fvector >> $(OBJNAME).cmd @echo $(ALL_OBJS) >> $(OBJNAME).cmd ifndef USE_LB308 @echo $(wordlist 1,5,$(KERNEL_LIB_OBJS)) >> $(OBJNAME).cmd @echo $(wordlist 6,10,$(KERNEL_LIB_OBJS)) >> $(OBJNAME).cmd @echo $(wordlist 11,15,$(KERNEL_LIB_OBJS)) >> $(OBJNAME).cmd @echo $(wordlist 16,20,$(KERNEL_LIB_OBJS)) >> $(OBJNAME).cmd @echo $(wordlist 21,25,$(KERNEL_LIB_OBJS)) >> $(OBJNAME).cmd endif @echo -L $(subst $(space),$(comma),$(strip $(ALL_LIBS))) >> $(OBJNAME).cmd $(LD) @$(OBJNAME).cmd # # Sレコードファイルの生成 # $(OBJNAME).mot: $(OBJFILE) $(OBJCOPY) -. -ID#00000000000000 $< # # コンパイル結果の消去 # clean: @-del \#* *~ *.r30 tmpfile? @-del $(MAKE_KERNEL) $(OBJNAME) @-del $(OBJNAME).syms $(OBJNAME).mot $(OBJNAME).chk @-del $(OBJNAME).exe $(OBJNAME).bin $(OBJNAME).out @-del $(OBJNAME).map $(OBJFILE) $(OBJNAME).id $(OBJNAME).cmd @-del kernel_cfg.c kernel_chk.c kernel_chk.a30 kernel_id.h kernel_obj.dat @-del m16cvec.inc cleankernel: @-del $(KERNEL_LIB_OBJS) @-del $(KERNEL_LCOBJS:.r30=.a30) @-del m16cvec.inc cleandep: @-del Makefile.depend realclean: cleandep clean # # kernel_cfg.c のコンパイルルールと依存関係作成ルールの定義 # # kernel_cfg.c は,アプリケーションプログラム用,システムサービス用, # カーネル用のすべてのオプションを付けてコンパイルする. # KERNEL_CFG_CFLAGS = $(UTASK_CFLAGS) $(STASK_CFLAGS) $(KERNEL_CFLAGS) kernel_cfg.r30: kernel_cfg.c $(CC) -c $(CFLAGS) $(KERNEL_CFG_CFLAGS) $(> Makefile.depend # # 特別な依存関係の定義 # banner.r30: $(filter-out banner.r30,$(KERNEL_LIB_OBJS)) # # 特殊な依存関係作成ルールの定義 # kernel_id.d: $(UTASK_CFG) @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) \ -T "kernel_cfg.c kernel_id.h kernel_chk.c" \ -O "$(INCLUDES)" $(> Makefile.depend kernel_chk.d: kernel_chk.c @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -s -C $(CPP) \ -O "$(INCLUDES) -I$(KERNEL)" $(> Makefile.depend # # 依存関係ファイルの生成 # gendepend: @echo "Generating Makefile.depend." ifdef KERNEL_LIB depend: cleandep kernel_cfg.c gendepend kernel_id.d \ kernel_chk.d $(ALL_OBJS:.r30=.d) else depend: cleandep kernel_cfg.c gendepend kernel_id.d \ $(KERNEL_AUX_COBJS:.r30=.d) $(KERNEL_ASMOBJS:.r30=.d) \ $(KERNEL_COBJS:.r30=.d) $(KERNEL_LCSRCS:.c=.d) $(ALL_OBJS:.r30=.d) endif # # 依存関係ファイルをインクルード # -include Makefile.depend # # 開発ツールのコマンド名の定義 # CC = $(TOOLDIR)\bin\nc308 AS = $(TOOLDIR)\bin\as308 AR = $(TOOLDIR)\bin\lb308 LD = $(TOOLDIR)\bin\ln308 CPP = $(TOOLDIR)\lib308\cpp308 OBJCOPY = $(TOOLDIR)\bin\lmc308 PERL = @(PERL) # # コンパイルルールの定義 # KERNEL_ALL_COBJS = $(KERNEL_COBJS) $(KERNEL_AUX_COBJS) $(KERNEL_ALL_COBJS): %.r30: %.c $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $(> Makefile.depend ifdef USE_LB308 $(KERNEL_LCSRCS:.c=.d): %.d: %.c @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) -T "$($*)" \ -O "$(foreach sym,$($*),-D__$(sym:.r30=)) \ $(INCLUDES) -I$(KERNEL)" $(> Makefile.depend $(KERNEL_LCOBJS:.r30=.d): %.d: @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) -T $*.r30 \ -O "-D__$(*F) $(INCLUDES) -I$(KERNEL)" $(> Makefile.depend else $(KERNEL_LCOBJS:.r30=.d): %.d: %.c @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) \ -O "$(INCLUDES) -I$(KERNEL)" $(> Makefile.depend endif $(KERNEL_ASMOBJS:.r30=.d): %.d: %.a30 $(STASK_COBJS:.r30=.d): %.d: %.c @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) \ -O "$(INCLUDES) -I$(SRCDIR)\systask" $(> Makefile.depend $(STASK_ASMOBJS:.r30=.d): %.d: %.a30 $(UTASK_COBJS:.r30=.d): %.d: %.c @$(PERL) $(SRCDIR)\utils\m16c-renesas\makedep.m16c -C $(CPP) \ -O "$(INCLUDES)" $(> Makefile.depend $(UTASK_ASMOBJS:.r30=.d): %.d: %.a30 # # デフォルトコンパイルルールを上書き # %.r30: %.c @echo "*** Default compile rules should not be used." $(CC) -c $(CFLAGS) $(