[kernel] translate 'del' -> 'bs' in serial.c
[wikipediardware.git] / jsp / configure
blobec3b6395a83019ef9082bc6139f5b67e43663b68
1 #! /usr/bin/perl
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 # 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11 # によって公表されている GNU General Public License の Version 2 に記
12 # 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13 # を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14 # 利用と呼ぶ)することを無償で許諾する.
15 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 # スコード中に含まれていること.
18 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 # の無保証規定を掲載すること.
22 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 # と.
25 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26 # 作権表示,この利用条件および下記の無保証規定を掲載すること.
27 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 # 報告すること.
29 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34 # 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35 # 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
37 # @(#) $Id: configure,v 1.13 2003/12/06 06:16:16 hiro Exp $
40 require "getopt.pl";
42 # オプションの定義
44 # -C <cpu> プロセッサ名(必須)
45 # -S <sys> システム名
46 # -T <tool> 開発環境名
47 # -A <uname> アプリケーションプログラム名
48 # -U <utask> 他のアプリケーションプログラムファイル
49 # (.o ファイル名で指定.複数指定可)
50 # -L <kernel_lib> カーネルライブラリ(libkernel.a)のディレクトリ名
51 # (省略した場合,カーネルライブラリも make する)
52 # -D <srcdir> カーネル等のソースの置かれているディレクトリ
53 # -P <prefix> 開発環境インストール時の PREFIX
54 # (現在は PREFIX を使っているファイルはない)
55 # -p <perl> perl のパス名(明示的に指定する場合)
56 # -l <lang> プログラミング言語(現時点ではC++のみサポート)
57 # -d <dir> テンプレートディレクトリを指定(デフォルトはsample)
59 # 使用例(1)
61 # % ../configure -C m68k -S dve68k -A test1 -U test_support.o -L .
63 # 使用例(2)
65 # % ../configure -C linux
66 # アプリケーションプログラムは sample1 になる.
69 # オプションの処理
71 do Getopt("CSTAULDPpld");
72 unless ($opt_C) {
73 print STDERR "configure: -C option is mandatory\n";
74 exit(1);
77 $cpu = $opt_C;
78 $sys = $opt_S ? $opt_S : "";
79 $tool = $opt_T ? $opt_T : "";
80 $uname = $opt_A ? $opt_A : "sample1";
81 $utask = $opt_U ? $opt_U : "";
82 $kernel_lib = $opt_L ? $opt_L : "";
83 $prefix = $opt_P ? $opt_P : "/usr/local";
84 $perl = opt_p ? $opt_p : do get_path("perl", ("/usr/local/bin", "/usr/bin"));
85 $lang = $opt_l ? $opt_l : "";
86 $templatedir = $opt_d ? $opt_d : "sample";
89 # オブジェクトファイル名の拡張子を返す
91 sub get_objext {
92 local(@uname);
94 use POSIX;
95 @uname = do uname();
96 if ($uname[0] =~ /^cygwin/i) {
97 return("exe");
99 else {
100 return("");
105 # プログラムの場所を検索する
107 sub get_path {
108 local($progname, @pathlist) = @_;
109 local($path);
111 foreach $path (@pathlist) {
112 if (-x $path."/".$progname) {
113 return($path."/".$progname);
116 return("");
120 # ファイルを変換する
122 sub convert {
123 local($infile, $outfile) = @_;
124 local($line, $varname, $varval);
126 print STDERR "configure: Generating $outfile from $infile.\n";
127 if (-f $outfile) {
128 print STDERR "configure: $outfile exists.",
129 " Save as $outfile.bak.\n";
130 rename($outfile, $outfile.".bak");
132 unless (open(INFILE, $infile)) {
133 print STDERR "configure: can't open $infile\n";
134 exit(1);
136 unless (open(OUTFILE, "> ".$outfile)) {
137 print STDERR "configure: can't open $outfile\n";
138 exit(1);
141 while ($line = <INFILE>) {
142 chop $line;
143 while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
144 $line = $1.$vartable{$2}.$3;
146 print OUTFILE $line,"\n";
149 close(INFILE);
150 close(OUTFILE);
154 # サンプルを見つけてファイルを生成する
156 sub generate {
157 local($file, $mandatory) = @_;
158 local($path);
160 if ($sys) {
161 $path = $sampledir.$file.".".$cpu."-".$sys;
162 if (-f $path) {
163 do convert($path, $file);
164 return;
167 $path = $sampledir.$file.".".$sys;
168 if (-f $path) {
169 do convert($path, $file);
170 return;
174 $path = $sampledir.$file.".".$cpu;
175 if (-f $path) {
176 do convert($path, $file);
177 return;
180 $path = $sampledir.$file;
181 if ($mandatory || -f $path) {
182 do convert($path, $file);
187 # 変数の初期化
191 # ソースディレクトリ名を取り出す
193 $pwd = `pwd`; chop $pwd;
194 if ($opt_D) {
195 $srcabsdir = $srcdir = $opt_D;
197 elsif ($0 =~ /(.*)\/configure/) {
198 $srcdir = $1;
199 if ($srcdir =~ /^\//) {
200 $srcabsdir = $srcdir;
202 else {
203 $srcabsdir = $pwd."/".$srcdir;
206 else {
207 $srcabsdir = $srcdir = $pwd;
209 $sampledir = $srcdir."/".$templatedir."/";
212 # 変数テーブルの作成
214 %vartable = ();
215 $vartable{"CPU"} = $cpu;
216 $vartable{"SYS"} = $sys;
217 $vartable{"TOOL"} = $tool;
218 $vartable{"UNAME"} = $uname;
219 $vartable{"UTASK"} = $utask;
220 $vartable{"KERNEL_LIB"} = $kernel_lib;
221 $vartable{"SRCDIR"} = $srcdir;
222 $vartable{"SRCABSDIR"} = $srcabsdir;
223 $vartable{"PREFIX"} = $prefix;
224 $vartable{"OBJEXT"} = do get_objext();
225 $vartable{"PERL"} = $perl;
226 $vartable{"LANG"} = $lang;
229 # ディレクトリのチェック
232 if (! -d $srcdir."/config/".$cpu) {
233 print STDERR "configure: $srcdir/config/$cpu not exist\n";
234 exit(1);
236 if ($sys && ! -d $srcdir."/config/".$cpu."/".$sys) {
237 print STDERR "configure: $srcdir/config/$cpu/$sys not exist\n";
238 exit(1);
240 if ($tool && ! -d $srcdir."/config/".$cpu."-".$tool."/".$sys) {
241 print STDERR "configure: $srcdir/config/$cpu-$tool/$sys not exist\n";
242 exit(1);
244 if ($tool && $sys && ! -d $srcdir."/config/".$cpu."-".$tool."/".$sys) {
245 print STDERR "configure: $srcdir/config/$cpu-$tool/$sys not exist\n";
246 exit(1);
250 # Makefile とアプリケーションファイルの生成
253 do generate("Makefile", 1);
254 do generate($uname.".c", 0);
255 do generate($uname.".cpp", 0);
256 do generate($uname.".h", 0);
257 do generate($uname.".cfg", 0);