source: asp3_wo_tecs/trunk/configure@ 302

Last change on this file since 302 was 302, checked in by ertl-honda, 7 years ago

TECSレスのASP3の開発のため以下のtrunkからコピー
http://dev.toppers.jp/svn/asp3/branches/WO_TECS-3.C.0

File size: 9.0 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-2016 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: configure 505 2016-01-12 01:41:01Z ertl-hiro $
56#
57
58use Getopt::Std;
59
60# オプションの定義
61#
62# -T <target> ターゲット名(必
63須)
64# -a <appldirs> アプリケーションのディレクトリ名(複数指定可.デ
65# フォルトはsampleディレクトリ)
66# -A <applname> アプリケーションプログラム名(デフォルトはsample1)
67# -t メインのオブジェクトファイルをリンク対象に含めない
68# -c <cfgfile> システムコンフィギュレーションファイル(.cfgファイ
69# ル名)名
70# -C <cdlflle> コンポーネント記述ファイル(.cdlファイル)名
71# -U <applobjs> 他のアプリケーションプログラムファイル
72# (.oファイル名で指定.複数指定可)
73# -S <syssvcobjs> システムサービスのプログラムファイル
74# (.oファイル名で指定.複数指定可)
75# -L <kernel_lib> カーネルライブラリ(libkernel.a)のディレクトリ名
76# (省略した場合,カーネルライブラリもmakeする)
77# -f カーネルを関数単位でコンパイルするかどうかの指定
78# -D <srcdir> カーネルソースの置かれているディレクトリ
79# -l <srclang> プログラミング言語(現時点ではcとc++のみサポート)
80# -m <tempmakefile> Makefileのテンプレートのファイル名の指定(デフォル
81# トはsampleディレクトリのMakefile)
82# -d <depdir> 依存関係ファイルのディレクトリ名(デフォルトはdeps)
83# -w TECSを使用しない
84# -r トレースログ記録のサンプルコードを使用するかどうか
85# の指定
86# -V <devtooldir> 開発ツール(コンパイラ等)の置かれているディレクトリ
87# -p <perl> perlのパス名(明示的に指定する場合)
88# -g <cfg> コンフィギュレータ(cfg)のパス名
89# -G <tecsgen> TECSジェネレータ(tecsgen)のパス名
90# -P <num> プロセッサ数(マルチプロセッサ対応カーネルの場合)
91# -o <options> å…
92±é€šã‚³ãƒ³ãƒ‘イルオプション(COPTSに追加)
93# -O <options> å…
94±é€šã‚·ãƒ³ãƒœãƒ«å®šç¾©ã‚ªãƒ—ション(CDEFSに追加)
95# -k <options> å…
96±é€šãƒªãƒ³ã‚«ã‚ªãƒ—ション(LDFLAGS等に追加)
97
98# 使用例(1)
99#
100# % ../configure -T ct11mpcore_gcc -O "-DTOPPERS_USE_QEMU" \
101# -A perf1 -a ../test -S "test_svc.o histogram.o"
102#
103# 使用例(2)
104#
105# % ../configure -T macosx_gcc -L .
106# アプリケーションプログラムは,sample1になる.
107#
108# 使用例(3)
109#
110# % ../configure -T ct11mpcore_gcc -O "-DTOPPERS_USE_QEMU" -A tSample2 -t
111# アプリケーションプログラムは,TECS版のサンプルプログラムになる.
112
113#
114# オプションの処理
115#
116getopt("TaAcCUSLDlmdVpgGPoOk");
117
118#
119# 変数の初期化
120#
121
122$target = $opt_T;
123$appldirs = $opt_a ? $opt_a : "\$(SRCDIR)/sample";
124$applname = $opt_A ? $opt_A : "sample1";
125$applobj = $applname.".o";
126$cfgfile = $opt_c ? $opt_c : $applname.".cfg";
127$cdlfile = $opt_C ? $opt_C : $applname.".cdl";
128$applobjs = $opt_t ? ($opt_U ? $opt_U : "")
129 : ($opt_U ? $applobj." ".$opt_U : $applobj);
130$syssvcobjs = $opt_S ? $opt_S : "";
131$kernel_lib = $opt_L ? $opt_L : "";
132$kernel_funcobjs = $opt_f ? "true" : "";
133$srclang = $opt_l ? $opt_l : "c";
134$depdir = $opt_d ? $opt_d : "deps";
135$omit_tecs = $opt_w ? "true" : "";
136$enable_trace = $opt_r ? "true" : "";
137$devtooldir = $opt_V ? $opt_V : "";
138$perl = $opt_p ? $opt_p : "perl";
139$cfg = $opt_g ? $opt_g : "\$(SRCDIR)/cfg/cfg/cfg";
140$tecsgen = $opt_G ? $opt_G : "ruby \$(SRCDIR)/tecsgen/tecsgen.rb";
141$prc_num = $opt_P ? $opt_P : "";
142$copts = $opt_o ? $opt_o : "";
143$cdefs = $opt_O ? $opt_O : "";
144$ldflags = $opt_k ? $opt_k : "";
145
146#
147# オブジェクトファイル名の拡張子を返す
148#
149sub get_objext {
150 if ($^O eq 'cygwin') {
151 return("exe");
152 }
153 else {
154 return("");
155 }
156}
157
158#
159# ファイルを変換する
160#
161sub convert {
162 my($infile, $outfile) = @_;
163 my($line);
164
165 print STDERR "configure: Generating $outfile from $infile.\n";
166 if (-f $outfile) {
167 print STDERR "configure: $outfile exists.",
168 " Save as $outfile.bak.\n";
169 rename($outfile, $outfile.".bak");
170 }
171 unless (open(INFILE, $infile)) {
172 print STDERR "configure: can't open $infile\n";
173 exit(1);
174 }
175 unless (open(OUTFILE, "> ".$outfile)) {
176 print STDERR "configure: can't open $outfile\n";
177 exit(1);
178 }
179
180 while ($line = <INFILE>) {
181 chop $line;
182 while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
183 $line = $1.$vartable{$2}.$3;
184 }
185 print OUTFILE $line,"\n";
186 }
187
188 close(INFILE);
189 close(OUTFILE);
190}
191
192#
193# ソースディレクトリ名を取り出す
194#
195$pwd = `pwd`; chop $pwd;
196if ($opt_D) {
197 $srcabsdir = $srcdir = $opt_D;
198}
199elsif ($0 =~ /(.*)\/configure/) {
200 $srcdir = $1;
201 if ($srcdir =~ /^\//) {
202 $srcabsdir = $srcdir;
203 }
204 else {
205 $srcabsdir = $pwd."/".$srcdir;
206 }
207}
208else {
209 $srcabsdir = $srcdir = $pwd;
210}
211
212$tempmakefile = $opt_m ? $opt_m : $srcdir."/sample/Makefile";
213
214#
215# -Tオプションの確認
216#
217unless ($opt_T) {
218 print STDERR "configure: -T option is mandatory\n";
219 print STDERR "Installed targets are:\n";
220 foreach $targetname (<$srcdir/target/[a-zA-Z0-9]*>) {
221 $targetname =~ s|$srcdir/target/||;
222 print STDERR "\t$targetname\n";
223 }
224 exit(1);
225}
226
227#
228# 変数テーブルの作成
229#
230%vartable = ();
231$vartable{"TARGET"} = $target;
232$vartable{"APPLDIRS"} = $appldirs;
233$vartable{"APPLNAME"} = $applname;
234$vartable{"CFGFILE"} = $cfgfile;
235$vartable{"CDLFILE"} = $cdlfile;
236$vartable{"APPLOBJS"} = $applobjs;
237$vartable{"SYSSVCOBJS"} = $syssvcobjs;
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{"DEPDIR"} = $depdir;
244$vartable{"OMIT_TECS"} = $omit_tecs;
245$vartable{"ENABLE_TRACE"} = $enable_trace;
246$vartable{"DEVTOOLDIR"} = $devtooldir;
247$vartable{"PERL"} = $perl;
248$vartable{"CFG"} = $cfg;
249$vartable{"TECSGEN"} = $tecsgen;
250$objext = get_objext();
251$vartable{"OBJEXT"} = $objext;
252$vartable{"PRC_NUM"} = $prc_num;
253$vartable{"COPTS"} = $copts;
254$vartable{"CDEFS"} = $cdefs;
255$vartable{"LDFLAGS"} = $ldflags;
256
257#
258# ターゲット依存部ディレクトリのチェック
259#
260if (! -d $srcdir."/target/".$target) {
261 print STDERR "configure: $srcdir/target/$target not exist\n";
262 exit(1);
263}
264
265#
266# Makefileの生成
267#
268convert($tempmakefile, "Makefile");
269
270#
271# 依存関係ファイルのディレクトリの作成
272#
273if (! -d $depdir) {
274 mkdir $depdir;
275}
Note: See TracBrowser for help on using the repository browser.