source: atk2-sc3_fl850f1l/configure@ 119

Last change on this file since 119 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

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