source: atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/makedep@ 5

Last change on this file since 5 was 5, checked in by msugi, 14 years ago

新世代カーネル対応コンフィギュレータと必要なファイル追加.

File size: 3.8 KB
Line 
1#! /usr/bin/perl
2#
3# TOPPERS/OSEK Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# OSEK Kernel
6#
7# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
8# Toyohashi Univ. of Technology, JAPAN
9# Copyright (C) 2004-2006 by Witz Corporation, JAPAN
10#
11# 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12# によって公表されている GNU General Public License の Version 2 に記
13# 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14# を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
15# 利用と呼ぶ)することを無償で許諾する.
16# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18# スコード中に含まれていること.
19# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22# の無保証規定を掲載すること.
23# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25# と.
26# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27# 作権表示,この利用条件および下記の無保証規定を掲載すること.
28# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29# 報告すること.
30# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32#
33# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34# よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35# 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36# 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
37#
38#
39
40require "getopt.pl";
41
42# オプションの定義
43#
44# -C <cc_path> Cコンパイラのコマンド名
45# -O <cc_opts> Cコンパイラ/CPPに渡すオプション
46#
47# -X ソースファイルを強制的にCヘッダファイルと見なす
48#
49# -T <target> ターゲットのファイル名
50# -D <t_dir> ターゲットのディレクトリ名を指定する
51# -d ターゲットのディレクトリ部を保持する
52# -s ターゲットのサフィックスを ".s" にする(デフォルトは ".o")
53
54#
55# オプションの処理
56#
57do Getopt("COTD");
58
59$cc_path = $opt_C;
60$cc_opts = $opt_O;
61
62$suffix = $opt_s ? "s" : "o";
63if ($opt_T) {
64 $target_file = $opt_T;
65}
66elsif ($opt_D) {
67 $target_dir = $opt_D;
68}
69elsif (!$opt_d) {
70 $target_dir = "";
71}
72
73#
74# %dependlist に作られた依存関係を出力する
75#
76sub output_dependlist {
77 local($file) = @_;
78 local($target, $column, $len);
79
80 if ($target_file) {
81 $target = $target_file;
82 }
83 else {
84 $target = $file;
85 $target =~ s/(.*)\.(.)/$1.$suffix/;
86 }
87 if (defined($target_dir)) {
88 $target =~ s/^.*\/([^\/]+)$/$1/;
89 if ($target_dir) {
90 $target = $target_dir."/".$target;
91 }
92 }
93 print $target, ": ";
94 $column = length($target) + 2;
95
96 foreach $file (keys(%dependlist)) {
97 $len = length($file) + 1;
98 if ($column > 8 && $column + $len >= 70) {
99 print "\\\n\t";
100 $column = 8;
101 }
102 $column += $len;
103 print "$file ";
104 }
105 print "\n";
106}
107
108#
109# $file の依存関係を %dependlist に作る
110#
111sub makedepend_one {
112 local($file) = @_;
113 local($command, $input, $dir, $filename);
114
115 $command = "$cc_path -E $cc_opts";
116 if ($opt_X) {
117 $command .= " -x c-header";
118 }
119 unless (open(INPUT, "$command $file |")) {
120 print STDERR "makedep: can't open $file\n";
121 exit(1);
122 }
123 while ($line = <INPUT>) {
124 if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
125 $filename = $2;
126 $filename =~ s/ /\\ /;
127 if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
128 $dependlist{$filename} = 1;
129 }
130 }
131 }
132 unless (close(INPUT)) {
133 print STDERR "makedep: can't execute $command\n";
134 exit(1);
135 }
136}
137
138#
139# メインルーチン
140#
141foreach $file (@ARGV) {
142 %dependlist = ();
143 do makedepend_one($file);
144 do output_dependlist($file) if (%dependlist);
145}
Note: See TracBrowser for help on using the repository browser.