source: anotherchoice/tags/jsp-1.4.4-full-UTF8/utils/m16c-renesas/configure.m16c@ 26

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

initial

File size: 7.5 KB
Line 
1#! /usr/bin/perl
2#
3# TOPPERS/JSP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Just Standard Profile Kernel
6#
7# Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
8# Toyohashi Univ. of Technology, JAPAN
9# Copyright (C) 2003-2004,2010 by Naoki Saito
10# Nagoya Municipal Industrial Research Institute, JAPAN
11#
12# 上記著作権者
13は,以下の (1)〜(4) の条件か,Free Software Foundation
14# によってå…
15¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
16# 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17# を改変したものを含む.以下同じ)を使用・複製・改変・再é…
18å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
19# 利用と呼ぶ)することを無償で許諾する.
20# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
21# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22# スコード中に含まれていること.
23# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
24# 用できる形で再é…
25å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
26å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
27# 者
28マニュアルなど)に,上記の著作権表示,この利用条件および下記
29# の無保証規定を掲載すること.
30# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31# 用できない形で再é…
32å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
33# と.
34# (a) 再é…
35å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
36マニュアルなど)に,上記の著
37# 作権表示,この利用条件および下記の無保証規定を掲載すること.
38# (b) 再é…
39å¸ƒã®å½¢æ…
40‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
41# 報告すること.
42# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
43# 害からも,上記著作権者
44およびTOPPERSプロジェクトをå…
45è²¬ã™ã‚‹ã“と.
46#
47# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49# よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
50# 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
51# 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
52#
53# @(#) $Id: configure.m16c,v 1.5 2007/03/23 08:25:47 honda Exp $
54#
55
56require "getopt.pl";
57
58# オプションの定義
59#
60# -C <cpu> プロセッサ名
61# -S <sys> システム名
62# -T <tool> 開発環境名
63# -A <uname> アプリケーションプログラム名
64# -U <utask> 他のアプリケーションプログラムファイル
65# (.r30 ファイル名で指定.複数指定可)
66# -L <kernel_lib> カーネルライブラリ(libkernel.lib)のディレクトリ名
67# (省略した場合,カーネルライブラリも make する)
68# -D <srcdir> カーネル等のソースの置かれているディレクトリ
69# -P <prefix> 開発環境インストール時の PREFIX
70# (現在は PREFIX を使っているファイルはない)
71# -p <perl> perl のパス名(明示的に指定する場合)
72# -l <lang> プログラミング言語(現時点ではC++のみサポート)
73# -d <dir> テンプレートディレクトリを指定(デフォルトはsample)
74
75# 使用例(1)
76#
77# % ..\utils\m16c-renesas\configure -C m16c -S oaks16 -T renesas -D .. -A test1 -U test_support.r30 -L .
78#
79# 使用例(2)
80#
81# % ../configure -C linux
82# アプリケーションプログラムは sample1 になる.
83
84#
85# オプションの処理
86#
87Getopt("CSTAULDPpld");
88
89$cpu = $opt_C ? $opt_C : "m16c";
90$sys = $opt_S ? $opt_S : "oaks16";
91$tool = $opt_T ? $opt_T : "renesas";
92$uname = $opt_A ? $opt_A : "sample1";
93$utask = $opt_U ? $opt_U : "";
94$kernel_lib = $opt_L ? $opt_L : "";
95$prefix = $opt_P ? $opt_P : "\\mtool";
96$perl = $opt_p ? $opt_p : get_path("perl.exe", ("\\perl\\bin"));
97$lang = $opt_l ? $opt_l : "";
98$templatedir = $opt_d ? $opt_d : "sample";
99
100#
101# オブジェクトファイル名の拡張子を返す
102#
103sub get_objext {
104 local(@uname);
105
106 use POSIX;
107 @uname = uname();
108 if ($uname[0] =~ /^cygwin/i) {
109 return("exe");
110 }
111 else {
112 return("");
113 }
114}
115
116#
117# プログラムの場所を検索する
118#
119sub get_path {
120 local($progname, @pathlist) = @_;
121 local($path);
122
123 foreach $path (@pathlist) {
124 if (-x $path."\\".$progname) {
125 return($path."\\".$progname);
126 }
127 }
128 return("");
129}
130
131#
132# ファイルを変換する
133#
134sub convert {
135 local($infile, $outfile) = @_;
136 local($line, $varname, $varval);
137
138 print STDERR "configure: Generating $outfile from $infile.\n";
139 if (-f $outfile) {
140 print STDERR "configure: $outfile exists.",
141 " Save as $outfile.bak.\n";
142 rename($outfile, $outfile.".bak");
143 }
144 unless (open(INFILE, $infile)) {
145 print STDERR "configure: can't open $infile\n";
146 exit(1);
147 }
148 unless (open(OUTFILE, "> ".$outfile)) {
149 print STDERR "configure: can't open $outfile\n";
150 exit(1);
151 }
152
153 while ($line = <INFILE>) {
154 chop $line;
155 while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
156 $line = $1.$vartable{$2}.$3;
157 }
158 print OUTFILE $line,"\n";
159 }
160
161 close(INFILE);
162 close(OUTFILE);
163}
164
165#
166# サンプルを見つけてファイルを生成する
167#
168sub generate {
169 local($file, $mandatory) = @_;
170 local($path);
171
172 if ($sys) {
173 $path = $sampledir.$file.".".$cpu."-".$sys;
174 if (-f $path) {
175 convert($path, $file);
176 return;
177 }
178
179 $path = $sampledir.$file.".".$sys;
180 if (-f $path) {
181 convert($path, $file);
182 return;
183 }
184 }
185
186 $path = $sampledir.$file.".".$cpu;
187 if (-f $path) {
188 convert($path, $file);
189 return;
190 }
191
192 $path = $sampledir.$file;
193 if ($mandatory || -f $path) {
194 convert($path, $file);
195 }
196}
197
198#
199# 変数の初期化
200#
201
202#
203# ソースディレクトリ名を取り出す
204#
205$pwd = `chdir`; chop $pwd;
206if ($opt_D) {
207 $srcabsdir = $srcdir = $opt_D;
208}
209elsif ($0 =~ /(.*)\\utils\\$cpu-$tool\\configure\.m16c/) {
210 $srcdir = $1;
211 if ($srcdir =~ /^([a-zA-Z]:)*\\/) {
212 $srcabsdir = $srcdir;
213 }
214 else {
215 $srcabsdir = $pwd."\\".$srcdir;
216 }
217}
218else {
219 $srcabsdir = $srcdir = $pwd;
220}
221$sampledir = $srcdir."\\".$templatedir."\\";
222
223#
224# 変数テーブルの作成
225#
226%vartable = ();
227$vartable{"CPU"} = $cpu;
228$vartable{"SYS"} = $sys;
229$vartable{"TOOL"} = $tool;
230$vartable{"UNAME"} = $uname;
231$vartable{"UTASK"} = $utask;
232$vartable{"KERNEL_LIB"} = $kernel_lib;
233$vartable{"SRCDIR"} = $srcdir;
234$vartable{"SRCABSDIR"} = $srcabsdir;
235$vartable{"PREFIX"} = $prefix;
236$vartable{"OBJEXT"} = get_objext();
237$vartable{"PERL"} = $perl;
238$vartable{"LANG"} = $lang;
239
240#
241# ディレクトリのチェック
242#
243
244if (! $tool && ! $sys && ! -d $srcdir."\\config\\".$cpu) {
245 print STDERR "configure: $srcdir/config/$cpu not exist\n";
246 exit(1);
247}
248if (! $tool && $sys && ! -d $srcdir."\\config\\".$cpu."\\".$sys) {
249 print STDERR "configure: $srcdir/config/$cpu/$sys not exist\n";
250 exit(1);
251}
252if ($tool && ! $sys && ! -d $srcdir."\\config\\".$cpu."-".$tool) {
253 print STDERR "configure: $srcdir/config/$cpu-$tool not exist\n";
254 exit(1);
255}
256if ($tool && $sys && ! -d $srcdir."\\config\\".$cpu."-".$tool."\\".$sys) {
257 print STDERR "configure: $srcdir/config/$cpu-$tool/$sys not exist\n";
258 exit(1);
259}
260
261#
262# Makefile とアプリケーションファイルの生成
263#
264
265generate("Makefile", 1);
266generate($uname.".c", 0);
267generate($uname.".cpp", 0);
268generate($uname.".h", 0);
269generate($uname.".cfg", 0);
Note: See TracBrowser for help on using the repository browser.