source: atk2-sc3-1.4.0-ntisr/configure@ 473

Last change on this file since 473 was 172, checked in by ertl-ishikawa, 8 years ago

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

  • Property svn:executable set to *
File size: 10.5 KB
Line 
1#! /usr/bin/perl
2#
3# TOPPERS ATK2
4# Toyohashi Open Platform for Embedded Real-Time Systems
5# Automotive Kernel Version 2
6#
7# Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
8# Toyohashi Univ. of Technology, JAPAN
9# Copyright (C) 2006-2015 by Center for Embedded Computing Systems
10# Graduate School of Information Science, Nagoya Univ., JAPAN
11# Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
12# Copyright (C) 2011-2013 by Spansion LLC, USA
13# Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
14# Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
15# Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
16# Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
17# Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
18# Copyright (C) 2011-2015 by Witz Corporation
19# Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
20# Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
21# Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
22#
23# 上記著作権者
24は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
25# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
26# 変・再é…
27å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
28# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
29# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
30# スコード中に含まれていること.
31# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
32# 用できる形で再é…
33å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
35# 者
36マニュアルなど)に,上記の著作権表示,この利用条件および下記
37# の無保証規定を掲載すること.
38# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
39# 用できない形で再é…
40å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
41# と.
42# (a) 再é…
43å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
44マニュアルなど)に,上記の著
45# 作権表示,この利用条件および下記の無保証規定を掲載すること.
46# (b) 再é…
47å¸ƒã®å½¢æ…
48‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
49# 報告すること.
50# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
51# 害からも,上記著作権者
52およびTOPPERSプロジェクトをå…
53è²¬ã™ã‚‹ã“と.
54# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
55# 由に基づく請求からも,上記著作権者
56およびTOPPERSプロジェクトを
57# å…
58è²¬ã™ã‚‹ã“と.
59#
60# 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
61# 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
62# はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
63# 用する者
64に対して,AUTOSARパートナーになることを求めている.
65#
66# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
67お
68# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
69# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
70# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
71# の責任を負わない.
72#
73# $Id: configure 425 2015-12-07 08:06:19Z witz-itoyo $
74#
75
76use Getopt::Std;
77
78# オプションの定義
79#
80# -T <target> ターゲット名(必
81須)
82# -A <applname> アプリケーションプログラム名(デフォルトはsample1)
83# -C <cfgname> コンフィギュレーションファイル名(デフォルトはsample1)
84# (省略した場合,コンフィギュレーションファイル名もアプリケーションプログラム名となる)
85# (拡張子を除いて指定.複数指定可)
86# -h ハードウェアカウンタを無効にするかどうかの指定(デフォルトは有効)
87# -a <appldir> アプリケーションのディレクトリ名
88# -U <applobjs> 他のアプリケーションプログラムファイル
89# (.oファイル名で指定.複数指定可)
90# -L <kernel_lib> カーネルライブラリ(libkernel.a)のディレクトリ名
91# (省略した場合,カーネルライブラリもmakeする)
92# -f カーネルを関数単位でコンパイルするかどうかの指定
93# -D <srcdir> カーネル等のソースの置かれているディレクトリ
94# -l <srclang> プログラミング言語(現時点ではcとc++のみサポート)
95# -t <templatedir> テンプレートディレクトリの指定(デフォルトはsample)
96# -m <makefile> テンプレートMakefile名の指定(デフォルトはMakefile)
97# -d <dbgenv> 実行環境の名称
98# -r トレースログ記録のサンプルコードを使用するかどうか
99# の指定
100# -s システムタイマを使用するかどうかの指定
101# -S シリアル通信を有効化するかどうかの指定
102# -p <perl> perlのパス名(明示的に指定する場合)
103# -g <cfg> ジェネレータ(cfg)のパス名
104# -o <options> å…
105±é€šã‚³ãƒ³ãƒ‘イルオプション(COPTSに追加)
106# -O <options> å…
107±é€šã‚·ãƒ³ãƒœãƒ«å®šç¾©ã‚ªãƒ—ション(CDEFSに追加)
108# -k <options> å…
109±é€šãƒªãƒ³ã‚«ã‚ªãƒ—ション(LDFLAGSに追加)
110
111# 使用例(1)
112#
113# % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
114#
115# 使用例(2)
116#
117# % ../configure -T macosx_gcc -L .
118# アプリケーションプログラムは sample1 になる.
119
120#
121# オプションの処理
122#
123getopt("TACaULDltmdpgoOk");
124
125#
126# 変数の初期化
127#
128
129$target = $opt_T;
130$applname = $opt_A ? $opt_A : "sample1";
131$cfgname = $opt_C ? $opt_C : $applname;
132$omit_hw_counter = $opt_h ? "true" : "";
133$appldir = $opt_a ? $opt_a : "";
134$applobjs = $opt_U ? $opt_U : "";
135$kernel_lib = $opt_L ? $opt_L : "";
136$kernel_funcobjs = $opt_f ? "true" : "";
137$srclang = $opt_l ? $opt_l : "c";
138$makefile = $opt_m ? $opt_m : "Makefile";
139$dbgenv = $opt_d ? "TOPPERS_".$opt_d : "";
140$enable_trace = $opt_r ? "true" : "";
141$enable_sys_timer = $opt_s ? "true" : "";
142$copts = $opt_o ? $opt_o : "";
143$cdefs = $opt_O ? $opt_O : "";
144$ldflags = $opt_k ? $opt_k : "";
145$enable_serial = $opt_S ? $opt_S : !($opt_A || $opt_C);
146$cfg_serial = $enable_serial ? "CFGNAME := \$(CFGNAME) target_serial" : "";
147
148if ($applname eq "sample1") {
149 $applobjs .= " sample2.o"
150}
151
152#
153# オブジェクトファイル名の拡張子を返す
154#
155sub get_objext {
156 if ($^O eq 'cygwin') {
157 return("exe");
158 }
159 else {
160 return("");
161 }
162}
163
164#
165# プログラムの場所を検索する
166#
167sub get_path {
168 my($progname, @pathlist) = @_;
169 my($path);
170
171 foreach $path (@pathlist) {
172 if (-x $path."/".$progname) {
173 return($path."/".$progname);
174 }
175 }
176 return("");
177}
178
179#
180# ファイルを変換する
181#
182sub convert {
183 my($infile, $outfile) = @_;
184 my($line);
185
186 print STDERR "configure: Generating $outfile from $infile.\n";
187 if (-f $outfile) {
188 print STDERR "configure: $outfile exists.",
189 " Save as $outfile.bak.\n";
190 rename($outfile, $outfile.".bak");
191 }
192 unless (open(INFILE, $infile)) {
193 print STDERR "configure: can't open $infile\n";
194 exit(1);
195 }
196 unless (open(OUTFILE, "> ".$outfile)) {
197 print STDERR "configure: can't open $outfile\n";
198 exit(1);
199 }
200
201 while ($line = <INFILE>) {
202 chop $line;
203 while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
204 $line = $1.$vartable{$2}.$3;
205 }
206 print OUTFILE $line,"\n";
207 }
208
209 close(INFILE);
210 close(OUTFILE);
211}
212
213#
214# サンプルを見つけてファイルを生成する
215#
216sub generate {
217 my($file, $mandatory) = @_;
218 my($path);
219
220 $path = $templatedir."/".$file.".".$target;
221 if (-f $path) {
222 convert($path, $file);
223 return;
224 }
225
226 $path = $templatedir."/".$file;
227 if ($mandatory || -f $path) {
228 convert($path, $file);
229 }
230}
231
232#
233# ソースディレクトリ名を取り出す
234#
235$pwd = `pwd`; chop $pwd;
236if ($opt_D) {
237 $srcabsdir = $srcdir = $opt_D;
238}
239elsif ($0 =~ /(.*)\/configure/) {
240 $srcdir = $1;
241 if ($srcdir =~ /^\//) {
242 $srcabsdir = $srcdir;
243 }
244 else {
245 $srcabsdir = $pwd."/".$srcdir;
246 }
247}
248else {
249 $srcabsdir = $srcdir = $pwd;
250}
251
252$perl = $opt_p ? $opt_p : get_path("perl", ("/usr/local/bin", "/usr/bin"));
253$cfg_path = "/cfg/cfg/cfg";
254$cfg = $opt_g ? $opt_g : "\$(SRCDIR)".$cfg_path;
255$cfgfile = $opt_g ? $opt_g : $srcdir.$cfg_path;
256$templatedir = $opt_t ? $opt_t : $srcdir."/sample";
257
258#
259# -Tオプションの確認
260#
261unless ($opt_T) {
262 print STDERR "configure: -T option is mandatory\n";
263 print STDERR "Installed targets are:\n";
264 foreach $targetname (<$srcdir/target/[a-zA-Z0-9]*>) {
265 $targetname =~ s|$srcdir/target/||;
266 print STDERR "\t$targetname\n";
267 }
268 exit(1);
269}
270
271#
272# 変数テーブルの作成
273#
274%vartable = ();
275$vartable{"TARGET"} = $target;
276$vartable{"APPLNAME"} = $applname;
277$vartable{"CFGNAME"} = $cfgname;
278$vartable{"OMIT_HW_COUNTER"} = $omit_hw_counter;
279$vartable{"APPLDIR"} = $appldir;
280$vartable{"APPLOBJS"} = $applobjs;
281$vartable{"KERNEL_LIB"} = $kernel_lib;
282$vartable{"KERNEL_FUNCOBJS"} = $kernel_funcobjs;
283$vartable{"SRCDIR"} = $srcdir;
284$vartable{"SRCABSDIR"} = $srcabsdir;
285$vartable{"SRCLANG"} = $srclang;
286$vartable{"DBGENV"} = $dbgenv;
287$vartable{"ENABLE_TRACE"} = $enable_trace;
288$vartable{"ENABLE_SYS_TIMER"} = $enable_sys_timer;
289$vartable{"CFG_SERIAL"} = $cfg_serial;
290$vartable{"PERL"} = $perl;
291$vartable{"CFG"} = $cfg;
292$objext = get_objext();
293$vartable{"OBJEXT"} = $objext;
294$vartable{"COPTS"} = $copts;
295$vartable{"CDEFS"} = $cdefs;
296$vartable{"LDFLAGS"} = $ldflags;
297
298#
299# ターゲットディレクトリのチェック
300#
301
302if (! -d $srcdir."/target/".$target) {
303 print STDERR "configure: $srcdir/target/$target not exist\n";
304 exit(1);
305}
306
307#
308# Makefile とアプリケーションファイルの生成
309#
310
311generate($makefile, 1);
312generate($applname.".c", 0);
313generate($applname.".cpp", 0);
314generate($applname.".h", 0);
315generate($cfgname.".arxml", 0);
316if ($applname eq "sample1") {
317 generate("sample.h", 0);
318 generate("sample2.h", 0);
319 generate("sample2.c", 0);
320 generate("Rte_Type.h", 0);
321}
322
323#
324# cfg ができているかのチェック
325#
326
327if (!(-x ($objext eq "" ? $cfgfile : $cfgfile.".".$objext))) {
328 print STDERR "Executable file of the configurator (cfg) is not found.\n";
329}
Note: See TracBrowser for help on using the repository browser.