source: configure @ 7

このファイルの 7 以降における最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 7.3 KB
Rev 
[7]1#! /usr/bin/perl
2#
3#  TOPPERS Software
4#      Toyohashi Open Platform for Embedded Real-Time Systems
5#
6#  Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
7#                              Toyohashi Univ. of Technology, JAPAN
8#  Copyright (C) 2006-2012 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#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
35#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
36#  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
37#  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
38#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
39#
40#  @(#) $Id$
41#
42
43use Getopt::Std;
44
45#  ¥ª¥×¥·¥ç¥ó€ÎÄêµÁ
46#
47#  -T <target>                  ¥¿¡Œ¥²¥Ã¥ÈÌŸ¡Êɬ¿Ü¡Ë
48#  -A <applname>                ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥àÌŸ¡Ê¥Ç¥Õ¥©¥ë¥È€Ïsample1¡Ë
49#  -a <appldir>                 ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó€Î¥Ç¥£¥ì¥¯¥È¥êÌŸ
50#  -U <applobjs>                Ÿ€Î¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥à¥Õ¥¡¥€¥ë
51#                                               ¡Ê.o¥Õ¥¡¥€¥ëÌŸ€Ç»ØÄꡥʣ¿ô»ØÄê²Ä¡Ë
52#  -S <syssvcobjs>              ¥·¥¹¥Æ¥à¥µ¡Œ¥Ó¥¹€Î¥×¥í¥°¥é¥à¥Õ¥¡¥€¥ë
53#                                               ¡Ê.o¥Õ¥¡¥€¥ëÌŸ€Ç»ØÄꡥʣ¿ô»ØÄê²Ä¡Ë
54#  -L <kernel_lib>              ¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê¡Êlibkernel.a¡Ë€Î¥Ç¥£¥ì¥¯¥È¥êÌŸ
55#                                               ¡ÊŸÊά€·€¿Ÿì¹ç¡€¥«¡Œ¥Í¥ë¥é¥€¥Ö¥é¥ê€âmake€¹€ë¡Ë
56#  -f                                   ¥«¡Œ¥Í¥ë€òŽØ¿ôñ°Ì€Ç¥³¥ó¥Ñ¥€¥ë€¹€ë€«€É€Š€«€Î»ØÄê
57#  -D <srcdir>                  ¥«¡Œ¥Í¥ëÅù€Î¥œ¡Œ¥¹€ÎÃÖ€«€ì€Æ€€€ë¥Ç¥£¥ì¥¯¥È¥ê
58#  -l <srclang>                 ¥×¥í¥°¥é¥ß¥ó¥°žÀžì¡Êžœ»þÅÀ€Ç€Ïc€Èc++€Î€ß¥µ¥Ý¡Œ¥È¡Ë
59#  -t <templatedir>             ¥Æ¥ó¥×¥ì¡Œ¥È¥Ç¥£¥ì¥¯¥È¥ê€Î»ØÄê¡Ê¥Ç¥Õ¥©¥ë¥È€Ïsample¡Ë
60#  -m <makefile>                ¥Æ¥ó¥×¥ì¡Œ¥ÈMakefileÌŸ€Î»ØÄê¡Ê¥Ç¥Õ¥©¥ë¥È€ÏMakefile¡Ë
61#  -d <dbgenv>                  ŒÂ¹ÔŽÄ¶­€ÎÌŸŸÎ
62#  -r                                   ¥È¥ì¡Œ¥¹¥í¥°µ­Ï¿€Î¥µ¥ó¥×¥ë¥³¡Œ¥É€ò»ÈÍÑ€¹€ë€«€É€Š€«
63#                                               €Î»ØÄê
64#  -p <perl>                    perl€Î¥Ñ¥¹ÌŸ¡ÊÌÀŒšÅª€Ë»ØÄꀹ€ëŸì¹ç¡Ë
65#  -g <cfg>                             ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿¡Êcfg¡Ë€Î¥Ñ¥¹ÌŸ
66#  -P <num>                             ¥×¥í¥»¥Ã¥µ¿ô¡Ê¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µÂбþ¥«¡Œ¥Í¥ë€ÎŸì¹ç¡Ë
67#  -o <options>                 ¶ŠÄÌ¥³¥ó¥Ñ¥€¥ë¥ª¥×¥·¥ç¥ó¡ÊCOPTS€ËÄɲáË
68#  -O <options>                 ¶ŠÄÌ¥·¥ó¥Ü¥ëÄêµÁ¥ª¥×¥·¥ç¥ó¡ÊCDEFS€ËÄɲáË
69#  -k <options>                 ¶ŠÄÌ¥ê¥ó¥«¥ª¥×¥·¥ç¥ó¡ÊLDFLAGSÅù€ËÄɲáË
70
71#  »ÈÍÑÎã(1)
72#
73#  % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
74#
75#  »ÈÍÑÎã(2)
76#
77#  % ../configure -T macosx_gcc -L .
78#       ¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥×¥í¥°¥é¥à€Ï sample1 €Ë€Ê€ë¡¥
79
80#
81#  ¥ª¥×¥·¥ç¥ó€ÎœèÍý
82#
83getopt("TAaUSLDltmdpgPoOk");
84
85#
86#  ÊÑ¿ô€ÎœéŽü²œ
87#
88
89$target = $opt_T;
90$applname = $opt_A ? $opt_A : "sample1";
91$appldir = $opt_a ? $opt_a : "";
92$applobjs = $opt_U ? $opt_U : "";
93$syssvcobjs = $opt_S ? $opt_S : "";
94$kernel_lib = $opt_L ? $opt_L : "";
95$kernel_funcobjs = $opt_f ? "true" : "";
96$srclang = $opt_l ? $opt_l : "c";
97$makefile = $opt_m ? $opt_m : "Makefile";
98$dbgenv = $opt_d ? "TOPPERS_".$opt_d : "";
99$enable_trace = $opt_r ? "true" : "";
100$prc_num = $opt_P ? $opt_P : "";
101$copts = $opt_o ? $opt_o : "";
102$cdefs = $opt_O ? $opt_O : "";
103$ldflags = $opt_k ? $opt_k : "";
104
105#
106#  ¥ª¥Ö¥ž¥§¥¯¥È¥Õ¥¡¥€¥ëÌŸ€Î³ÈÄ¥»Ò€òÊÖ€¹
107#
108sub get_objext {
109        if ($^O eq 'cygwin') {
110                return("exe");
111        }
112        else {
113                return("");
114        }
115}
116
117#
118#  ¥×¥í¥°¥é¥à€ÎŸìœê€òž¡º÷€¹€ë
119#
120sub get_path {
121        my($progname, @pathlist) = @_;
122        my($path);
123
124        foreach $path (@pathlist) {
125                if (-x $path."/".$progname) {
126                        return($path."/".$progname);
127                }
128        }
129        return("");
130}
131
132#
133#  ¥Õ¥¡¥€¥ë€òÊÑŽ¹€¹€ë
134#
135sub convert {
136        my($infile, $outfile) = @_;
137        my($line);
138
139        print STDERR "configure: Generating $outfile from $infile.\n";
140        if (-f $outfile) {
141                print STDERR "configure: $outfile exists.",
142                                                "  Save as $outfile.bak.\n";
143                rename($outfile, $outfile.".bak");
144        }
145        unless (open(INFILE, $infile)) {
146                print STDERR "configure: can't open $infile\n";
147                exit(1);
148        }
149        unless (open(OUTFILE, "> ".$outfile)) {
150                print STDERR "configure: can't open $outfile\n";
151                exit(1);
152        }
153
154        while ($line = <INFILE>) {
155                chop $line;
156                while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
157                        $line = $1.$vartable{$2}.$3;
158                }
159                print OUTFILE $line,"\n";
160        }
161
162        close(INFILE);
163        close(OUTFILE);
164}
165
166#
167#  ¥µ¥ó¥×¥ë€òž«€Ä€±€Æ¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë
168#
169sub generate {
170        my($file, $mandatory) = @_;
171        my($path);
172
173        $path = $templatedir."/".$file.".".$target;
174        if (-f $path) {
175                convert($path, $file);
176                return;
177        }       
178
179        $path = $templatedir."/".$file;
180        if ($mandatory || -f $path) {
181                convert($path, $file);
182        }       
183}
184
185#
186#  ¥œ¡Œ¥¹¥Ç¥£¥ì¥¯¥È¥êÌŸ€òŒè€êœÐ€¹
187#
188$pwd = `pwd`; chop $pwd;
189if ($opt_D) {
190        $srcabsdir = $srcdir = $opt_D;
191}
192elsif ($0 =~ /(.*)\/configure/) {
193        $srcdir = $1;
194        if ($srcdir =~ /^\//) {
195                $srcabsdir = $srcdir;
196        }
197        else {
198                $srcabsdir = $pwd."/".$srcdir;
199        }
200}
201else {
202        $srcabsdir = $srcdir = $pwd;
203}
204
205$perl = $opt_p ? $opt_p : get_path("perl", ("/usr/local/bin", "/usr/bin"));
206$cfg = $opt_g ? $opt_g : "\$(SRCDIR)/cfg/cfg/cfg";
207$cfgfile = $opt_g ? $opt_g : $srcdir."/cfg/cfg/cfg";
208$templatedir = $opt_t ? $opt_t : $srcdir."/sample";
209
210#
211#  -T¥ª¥×¥·¥ç¥ó€Î³Îǧ
212#
213unless ($opt_T) {
214        print STDERR "configure: -T option is mandatory\n";
215        print STDERR "Installed targets are:\n";
216        foreach $targetname (<$srcdir/target/[a-zA-Z0-9]*>) {
217                $targetname =~ s|$srcdir/target/||;
218                print STDERR "\t$targetname\n";
219        }
220        exit(1);
221}
222
223#
224#  ÊÑ¿ô¥Æ¡Œ¥Ö¥ë€ÎºîÀ®
225#
226%vartable = ();
227$vartable{"TARGET"} = $target;
228$vartable{"APPLNAME"} = $applname;
229$vartable{"APPLDIR"} = $appldir;
230$vartable{"APPLOBJS"} = $applobjs;
231$vartable{"SYSSVCOBJS"} = $syssvcobjs;
232$vartable{"KERNEL_LIB"} = $kernel_lib;
233$vartable{"KERNEL_FUNCOBJS"} = $kernel_funcobjs;
234$vartable{"SRCDIR"} = $srcdir;
235$vartable{"SRCABSDIR"} = $srcabsdir;
236$vartable{"SRCLANG"} = $srclang;
237$vartable{"DBGENV"} = $dbgenv;
238$vartable{"ENABLE_TRACE"} = $enable_trace;
239$vartable{"PERL"} = $perl;
240$vartable{"CFG"} = $cfg;
241$objext = get_objext();
242$vartable{"OBJEXT"} = $objext;
243$vartable{"PRC_NUM"} = $prc_num;
244$vartable{"COPTS"} = $copts;
245$vartable{"CDEFS"} = $cdefs;
246$vartable{"LDFLAGS"} = $ldflags;
247
248#
249#  ¥¿¡Œ¥²¥Ã¥È¥Ç¥£¥ì¥¯¥È¥ê€Î¥Á¥§¥Ã¥¯
250#
251
252if (! -d $srcdir."/target/".$target) {
253        print STDERR "configure: $srcdir/target/$target not exist\n";
254        exit(1);
255}
256
257#
258#  Makefile €È¥¢¥×¥ê¥±¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ÎÀžÀ®
259#
260
261generate($makefile, 1);
262generate($applname.".c", 0);
263generate($applname.".cpp", 0);
264generate($applname.".h", 0);
265generate($applname.".cfg", 0);
266
267#
268#  cfg €¬€Ç€­€Æ€€€ë€«€Î¥Á¥§¥Ã¥¯
269#
270
271if (!(-x ($objext eq "" ? $cfgfile : $cfgfile.".".$objext))) {
272        print STDERR "Executable file of the configurator (cfg) is not found.\n";
273}
詳しい使い方は TracBrowser を参照してください。