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

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

initial

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