source: asp3_wo_tecs/trunk/utils/genrename@ 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: 6.0 KB
Line 
1#! /usr/bin/perl
2#
3# TOPPERS Software
4# Toyohashi Open Platform for Embedded Real-Time Systems
5#
6# Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
7# Toyohashi Univ. of Technology, JAPAN
8# Copyright (C) 2005-2011 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: genrename 108 2014-05-11 01:30:18Z ertl-hiro $
56#
57
58#
59# å…
60ˆé ­ã«ã¤ã‘る文字列
61#
62sub prefix_string {
63 local($sym) = @_;
64
65 if ($sym =~ /[a-z]/) {
66 return("_kernel_");
67 }
68 else {
69 return("_KERNEL_");
70 }
71}
72
73#
74# リネーム定義を生成する
75#
76sub generate_define
77{
78 local($sym, $prefix) = @_;
79
80 print FILE "#define ",$prefix,$sym;
81 print FILE "\t" if (length($prefix.$sym) < 4);
82 print FILE "\t" if (length($prefix.$sym) < 8);
83 print FILE "\t" if (length($prefix.$sym) < 12);
84 print FILE "\t" if (length($prefix.$sym) < 16);
85 print FILE "\t" if (length($prefix.$sym) < 20);
86 print FILE "\t" if (length($prefix.$sym) < 24);
87 print FILE "\t",$prefix,prefix_string($sym),$sym,"\n";
88}
89
90#
91# リネーム解除を生成する
92#
93sub generate_undef
94{
95 local($sym, $prefix) = @_;
96
97 print FILE "#undef ",$prefix,$sym,"\n";
98}
99
100#
101# インクルードディレクティブを生成する
102#
103sub generate_include
104{
105 local($file, $prefix) = @_;
106
107 $file =~ s/([>"])$/_$prefix.h$1/;
108 $includes .= "#include ".$file."\n";
109}
110
111#
112# エラーチェック
113#
114if ($#ARGV != 0) {
115 die "Usage: genrename <prefix>\n";
116}
117
118#
119# 初期化
120#
121@syms = ();
122$name = $ARGV[0];
123$NAME = $name; $NAME =~ y/a-z/A-Z/;
124
125$infile = $name."_rename.def";
126$header_defsym = "TOPPERS_".$NAME."_RENAME_H";
127
128#
129# シンボルリストを読み込む
130#
131open(INFILE, $infile) || die "Cannot open $infile";
132while ($line = <INFILE>) {
133 chomp $line;
134 @syms = (@syms, $line);
135}
136close(INFILE);
137
138#
139# ???_rename.h を生成する
140#
141$includes = "";
142$file = $name."_rename.h";
143open(FILE, "> ".$file);
144
145print FILE <<END;
146/* This file is generated from $infile by genrename. */
147
148#ifndef $header_defsym
149#define $header_defsym
150
151END
152
153foreach $sym (@syms) {
154 if ($sym =~ /^#(.*)$/) {
155 print FILE "/*\n";
156 print FILE " * ",$1,"\n";
157 print FILE " */\n";
158 }
159 elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
160 generate_include($1, "rename");
161 }
162 elsif ($sym ne "") {
163 generate_define($sym, "");
164 }
165 else {
166 print FILE "\n";
167 }
168}
169
170print FILE <<END;
171
172#ifdef TOPPERS_LABEL_ASM
173
174END
175
176foreach $sym (@syms) {
177 if ($sym =~ /^#(.*)$/) {
178 print FILE "/*\n";
179 print FILE " * ",$1,"\n";
180 print FILE " */\n";
181 }
182 elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
183 # do nothing
184 }
185 elsif ($sym ne "") {
186 generate_define($sym, "_");
187 }
188 else {
189 print FILE "\n";
190 }
191}
192
193print FILE <<END;
194
195#endif /* TOPPERS_LABEL_ASM */
196
197$includes
198#endif /* $header_defsym */
199END
200
201#
202# ???_unrename.h を生成する
203#
204$includes = "";
205$file = $name."_unrename.h";
206open(FILE, "> ".$file);
207
208print FILE <<END;
209/* This file is generated from $infile by genrename. */
210
211/* This file is included only when $name\_rename.h has been included. */
212#ifdef $header_defsym
213#undef $header_defsym
214
215END
216
217foreach $sym (@syms) {
218 if ($sym =~ /^#(.*)$/) {
219 print FILE "/*\n";
220 print FILE " * ",$1,"\n";
221 print FILE " */\n";
222 }
223 elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
224 generate_include($1, "unrename");
225 }
226 elsif ($sym ne "") {
227 generate_undef($sym, "");
228 }
229 else {
230 print FILE "\n";
231 }
232}
233
234print FILE <<END;
235
236#ifdef TOPPERS_LABEL_ASM
237
238END
239
240foreach $sym (@syms) {
241 if ($sym =~ /^#(.*)$/) {
242 print FILE "/*\n";
243 print FILE " * ",$1,"\n";
244 print FILE " */\n";
245 }
246 elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
247 # do nothing
248 }
249 elsif ($sym ne "") {
250 generate_undef($sym, "_");
251 }
252 else {
253 print FILE "\n";
254 }
255}
256
257print FILE <<END;
258
259#endif /* TOPPERS_LABEL_ASM */
260
261$includes
262#endif /* $header_defsym */
263END
264
265close(FILE);
Note: See TracBrowser for help on using the repository browser.