OSDN Git Service

1d03b659fe6a20bd61188aa2fce609dc7d0c6a4b
[trx-305dsp/dsp.git] / hirado / kernel / utils / genrename
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) 2003 by Embedded and Real-Time Systems Laboratory
8 #                              Toyohashi Univ. of Technology, JAPAN
9 #  Copyright (C) 2005 by Embedded and Real-Time Systems Laboratory
10 #              Graduate School of Information Science, Nagoya Univ., JAPAN
11
12 #  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 
13 #  によって公表されている GNU General Public License の Version 2 に記
14 #  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
15 #  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
16 #  利用と呼ぶ)することを無償で許諾する.
17 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 #      スコード中に含まれていること.
20 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 #      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
22 #      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 #      の無保証規定を掲載すること.
24 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 #      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 #      と.
27 #    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
28 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
29 #    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 #        報告すること.
31 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32 #      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33
34 #  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
36 #  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
37 #  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
38
39 #  @(#) $Id: genrename,v 1.2 2012/06/17 00:24:19 suikan Exp $
40
41
42 #
43 #  リネーム定義を生成する
44 #
45 sub generate_define
46 {
47     local($sym, $prefix) = @_;
48
49     print FILE "#define ",$prefix,$sym;
50     print FILE "\t" if (length($prefix.$sym) < 8);
51     print FILE "\t" if (length($prefix.$sym) < 16);
52     print FILE "\t",$prefix,"_kernel_",$sym,"\n";
53 }
54
55 #
56 #  リネーム解除を生成する
57 #
58 sub generate_undef
59 {
60     local($sym, $prefix) = @_;
61
62     print FILE "#undef ",$prefix,$sym,"\n";
63 }
64
65 #
66 #  エラーチェック
67 #
68 if ($#ARGV != 0) {
69     die "Usage: genrename <prefix>\n";
70 }
71
72 #
73 #  初期化
74 #
75 @syms = ();
76 $name = $ARGV[0];
77 $NAME = $name; $NAME =~ y/a-z/A-Z/;
78
79 $infile = $name."_rename.def";
80 $defsym_rename = "_".$NAME."_RENAME_H_";
81 $defsym_unrename = "_".$NAME."_UNRENAME_H_";
82
83 #
84 #  シンボルリストを読み込む
85 #
86 open(INFILE, $infile) || die "Cannot open $infile";
87 while ($line = <INFILE>) {
88     chomp $line;
89     @syms = (@syms, $line);
90 }
91 close(INFILE);
92
93 #
94 #  ???_rename.h を生成する
95 #
96 $file = $name."_rename.h";
97 open(FILE, "> ".$file);
98
99 print FILE <<END;
100 /* This file is generated from $infile by genrename. */
101
102 #ifndef $defsym_rename
103 #define $defsym_rename
104
105 END
106
107 foreach $sym (@syms) {
108     if ($sym =~ /^#(.*)$/) {
109         print FILE "/*\n";
110         print FILE " * ",$1,"\n";
111         print FILE " */\n";
112     }
113     elsif ($sym ne "") {
114         generate_define($sym, "");
115     }
116     else {
117         print FILE "\n";
118     }
119 }
120
121 print FILE <<END;
122
123 #ifdef LABEL_ASM
124
125 END
126
127 foreach $sym (@syms) {
128     if ($sym =~ /^#(.*)$/) {
129         print FILE "/*\n";
130         print FILE " * ",$1,"\n";
131         print FILE " */\n";
132     }
133     elsif ($sym ne "") {
134         generate_define($sym, "_");
135     }
136     else {
137         print FILE "\n";
138     }
139 }
140
141 print FILE <<END;
142
143 #endif /* LABEL_ASM */
144 #endif /* $defsym_rename */
145 END
146
147 #
148 #  ???_unrename.h を生成する
149 #
150 $file = $name."_unrename.h";
151 open(FILE, "> ".$file);
152
153 print FILE <<END;
154 /* This file is generated from $infile by genrename. */
155
156 #ifdef $defsym_unrename
157 #undef $defsym_unrename
158
159 END
160
161 foreach $sym (@syms) {
162     if ($sym =~ /^#(.*)$/) {
163         print FILE "/*\n";
164         print FILE " * ",$1,"\n";
165         print FILE " */\n";
166     }
167     elsif ($sym ne "") {
168         generate_undef($sym, "");
169     }
170     else {
171         print FILE "\n";
172     }
173 }
174
175 print FILE <<END;
176
177 #ifdef LABEL_ASM
178
179 END
180
181 foreach $sym (@syms) {
182     if ($sym =~ /^#(.*)$/) {
183         print FILE "/*\n";
184         print FILE " * ",$1,"\n";
185         print FILE " */\n";
186     }
187     elsif ($sym ne "") {
188         generate_undef($sym, "_");
189     }
190     else {
191         print FILE "\n";
192     }
193 }
194
195 print FILE <<END;
196
197 #endif /* LABEL_ASM */
198 #endif /* $defsym_unrename */
199 END
200
201 close(FILE);