source: azure_iot_hub_f767zi/trunk/asp_baseplatform/configure@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

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