source: atk2-sc3_fl850f1l/utils/makedep

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

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

File size: 4.9 KB
Line 
1#! /usr/bin/perl
2#
3# TOPPERS Software
4# Toyohashi Open Platform for Embedded Real-Time Systems
5#
6# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7# Toyohashi Univ. of Technology, JAPAN
8# Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10#
11# 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16# スコード中に含まれていること.
17# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20# の無保証規定を掲載すること.
21# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23# と.
24# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25# 作権表示,この利用条件および下記の無保証規定を掲載すること.
26# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27# 報告すること.
28# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32# 免責すること.
33#
34# 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
35# 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
36# はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
37# 用する者に対して,AUTOSARパートナーになることを求めている.
38#
39# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
40# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
41# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
42# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
43# の責任を負わない.
44#
45# @(#) $Id: makedep 2264 2011-10-27 04:22:01Z ertl-hiro $
46#
47
48use Getopt::Std;
49
50# オプションの定義
51#
52# -C <cc_path> Cコンパイラのコマンド名
53# -O <cc_opts> Cコンパイラ/CPPに渡すオプション
54# -X ソースファイルを強制的にCヘッダファイルと見なす
55#
56# -T <target> ターゲット名(のリスト)
57# -D <t_dir> ターゲットのディレクトリ名を指定する(-Tを用いた場
58# 合は無効)
59# -d ターゲットのディレクトリ部を保持する(-Tを用いた場
60# 合は無効)
61# -S 複数のターゲットがある依存ルールを,ターゲット毎に
62# 分割する(こうしないと対応できないmakeがあるらしい)
63#
64# -R <dirname> Cygwin環境におけるルートディレクトリ名を指定する
65# (デフォルトはcygdrive)
66
67#
68# オプションの処理
69#
70getopt("COTDR");
71
72$cc_path = $opt_C;
73$cc_opts = $opt_O;
74
75if ($opt_T) {
76 $target_name = $opt_T;
77}
78elsif ($opt_D) {
79 $target_dir = $opt_D;
80}
81elsif (!$opt_d) {
82 $target_dir = "";
83}
84
85if ($opt_R) {
86 $cygwin_root = $opt_R;
87}
88else {
89 $cygwin_root = "cygdrive";
90}
91
92#
93# Cygwin環境の判別
94#
95if ($^O eq 'cygwin') {
96 $cygwin = 1;
97}
98
99#
100# %dependlist に作られた依存関係を出力する
101#
102sub output_dependlist {
103 local($target) = @_;
104 local($column, $len, $file);
105
106 print $target, ": ";
107 $column = length($target) + 2;
108
109 foreach $file (keys(%dependlist)) {
110 $len = length($file) + 1;
111 if ($column > 8 && $column + $len >= 70) {
112 print "\\\n\t";
113 $column = 8;
114 }
115 $column += $len;
116 print "$file ";
117 }
118 print "\n";
119}
120
121#
122# $file の依存関係を %dependlist に作る
123#
124sub makedepend_one {
125 local($file) = @_;
126 local($command, $input, $dir, $filename);
127
128 $command = "$cc_path -E $cc_opts";
129 if ($opt_X) {
130 $command .= " -x c-header";
131 }
132 unless (open(INPUT, "$command $file |")) {
133 print STDERR "makedep: can't open $file\n";
134 exit(1);
135 }
136 while ($line = <INPUT>) {
137 if ($line =~ /^\#[a-zA-Z]*\s*([0-9]+)\s*\"([^\"]+)\"/) {
138 $filename = $2;
139 $filename =~ s/ /\\ /g;
140 if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
141 if ($cygwin) {
142 $filename =~ s/\\\\/\//g;
143 $filename =~ s/^([a-zA-Z]):/\/$cygwin_root\/$1/;
144 }
145 $dependlist{$filename} = 1;
146 }
147 }
148 }
149 unless (close(INPUT)) {
150 print STDERR "makedep: can't execute $command\n";
151 exit(1);
152 }
153}
154
155#
156# メインルーチン
157#
158foreach $file (@ARGV) {
159 %dependlist = ();
160 makedepend_one($file);
161 if (%dependlist) {
162 if ($target_name) {
163 if ($opt_S) {
164 foreach $target (split(/[ \t]+/, $target_name)) {
165 output_dependlist($target);
166 }
167 }
168 else {
169 output_dependlist($target_name);
170 }
171 }
172 else {
173 $target = $file;
174 $target =~ s/(.*)\.(.*)/$1.o/;
175 if (defined($target_dir)) {
176 $target =~ s/^.*\/([^\/]+)$/$1/;
177 if ($target_dir) {
178 $target = $target_dir."/".$target;
179 }
180 }
181 output_dependlist($target);
182 }
183 }
184}
Note: See TracBrowser for help on using the repository browser.