source: anotherchoice/tags/jsp-1.4.4-full-UTF8/utils/makedep@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

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