4 # Toyohashi Open Platform for Embedded Real-Time Systems/
6 # Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
7 # Toyohashi Univ. of Technology, JAPAN
8 # Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
9 # Graduate School of Information Science, Nagoya Univ., JAPAN
11 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25 # 作権表示,この利用条件および下記の無保証規定を掲載すること.
26 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40 # @(#) $Id: configure 1733 2010-02-03 03:50:52Z ertl-hiro $
47 # -T <target> ターゲット名(必須)
48 # -A <applname> アプリケーションプログラム名(デフォルトはsample1)
49 # -a <appldir> アプリケーションのディレクトリ名
50 # -U <applobjs> 他のアプリケーションプログラムファイル
52 # -L <kernel_lib> カーネルライブラリ(libkernel.a)のディレクトリ名
53 # (省略した場合,カーネルライブラリもmakeする)
54 # -f カーネルを関数単位でコンパイルするかどうかの指定
55 # -D <srcdir> カーネル等のソースの置かれているディレクトリ
56 # -l <srclang> プログラミング言語(現時点ではcとc++のみサポート)
57 # -t <templatedir> テンプレートディレクトリの指定(デフォルトはsample)
58 # -m <makefile> テンプレートMakefile名の指定(デフォルトはMakefile)
60 # -r トレースログ記録のサンプルコードを使用するかどうか
62 # -p <perl> perlのパス名(明示的に指定する場合)
63 # -g <cfg> コンフィギュレータ(cfg)のパス名
67 # % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
71 # % ../configure -T macosx_gcc -L .
72 # アプリケーションプログラムは sample1 になる.
77 do Getopt("TAaULDltmdpg");
84 $applname = $opt_A ? $opt_A : "sample1";
85 $appldir = $opt_a ? $opt_a : "";
86 $applobjs = $opt_U ? $opt_U : "";
87 $kernel_lib = $opt_L ? $opt_L : "";
88 $kernel_funcobjs = $opt_f ? "true" : "";
89 $srclang = $opt_l ? $opt_l : "c";
90 $makefile = $opt_m ? $opt_m : "Makefile";
91 $dbgenv = $opt_d ? "TOPPERS_".$opt_d : "";
92 $enable_trace = $opt_r ? "true" : "";
102 if ($uname[0] =~ /^cygwin/i) {
114 local($progname, @pathlist) = @_;
117 foreach $path (@pathlist) {
118 if (-x $path."/".$progname) {
119 return($path."/".$progname);
129 local($infile, $outfile) = @_;
130 local($line, $varname, $varval);
132 print STDERR "configure: Generating $outfile from $infile.\n";
134 print STDERR "configure: $outfile exists.",
135 " Save as $outfile.bak.\n";
136 rename($outfile, $outfile.".bak");
138 unless (open(INFILE, $infile)) {
139 print STDERR "configure: can't open $infile\n";
142 unless (open(OUTFILE, "> ".$outfile)) {
143 print STDERR "configure: can't open $outfile\n";
147 while ($line = <INFILE>) {
149 while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
150 $line = $1.$vartable{$2}.$3;
152 print OUTFILE $line,"\n";
163 local($file, $mandatory) = @_;
167 $path = $templatedir."/".$file.".".$cpu."-".$sys;
169 do convert($path, $file);
173 $path = $templatedir."/".$file.".".$sys;
175 do convert($path, $file);
180 $path = $templatedir."/".$file.".".$cpu;
182 do convert($path, $file);
186 $path = $templatedir."/".$file;
187 if ($mandatory || -f $path) {
188 do convert($path, $file);
195 $pwd = `pwd`; chop $pwd;
197 $srcabsdir = $srcdir = $opt_D;
199 elsif ($0 =~ /(.*)\/configure/) {
201 if ($srcdir =~ /^\//) {
202 $srcabsdir = $srcdir;
205 $srcabsdir = $pwd."/".$srcdir;
209 $srcabsdir = $srcdir = $pwd;
212 $perl = $opt_p ? $opt_p : do get_path("perl", ("/usr/local/bin", "/usr/bin"));
213 $cfg = $opt_g ? $opt_g : "\$(SRCDIR)/cfg/cfg/cfg";
214 $cfgfile = $opt_g ? $opt_g : $srcdir."/cfg/cfg/cfg";
215 $templatedir = $opt_t ? $opt_t : $srcdir."/sample";
221 print STDERR "configure: -T option is mandatory\n";
222 print STDERR "Installed targets are:\n";
223 foreach $targetname (<$srcdir/target/[a-zA-Z1-9]*>) {
224 $targetname =~ s|$srcdir/target/||;
225 print STDERR "\t$targetname\n";
234 $vartable{"TARGET"} = $target;
235 $vartable{"APPLNAME"} = $applname;
236 $vartable{"APPLDIR"} = $appldir;
237 $vartable{"APPLOBJS"} = $applobjs;
238 $vartable{"KERNEL_LIB"} = $kernel_lib;
239 $vartable{"KERNEL_FUNCOBJS"} = $kernel_funcobjs;
240 $vartable{"SRCDIR"} = $srcdir;
241 $vartable{"SRCABSDIR"} = $srcabsdir;
242 $vartable{"SRCLANG"} = $srclang;
243 $vartable{"DBGENV"} = $dbgenv;
244 $vartable{"ENABLE_TRACE"} = $enable_trace;
245 $vartable{"PERL"} = $perl;
246 $vartable{"CFG"} = $cfg;
247 $objext = do get_objext();
248 $vartable{"OBJEXT"} = $objext;
254 if (! -d $srcdir."/target/".$target) {
255 print STDERR "configure: $srcdir/target/$target not exist\n";
260 # Makefile とアプリケーションファイルの生成
263 do generate($makefile, 1);
264 do generate($applname.".c", 0);
265 do generate($applname.".cpp", 0);
266 do generate($applname.".h", 0);
267 do generate($applname.".cfg", 0);
273 if (!(-x ($objext == "" ? $cfgfile : $cfgfile.".".$objext))) {
274 print STDERR "Executable file of the configurator (cfg) is not found.\n";