[Tizen] Disable jithost arena cache
[platform/upstream/coreclr.git] / src / coreclr / applydefines.pl
1 #!/usr/bin/env perl
2
3 use strict;
4
5 my $sourceFile;
6 my $outputFile="";
7 my $definesFile="";
8
9 #parse arguments
10
11 if (@ARGV == 0)
12 {
13    Usage();
14 }
15
16 my %Defines;
17
18 # parse args
19
20 while (@ARGV)
21 {
22     my $nextArg=shift;
23     if($nextArg eq '-s')
24     {
25         NeedNextArg($nextArg, 'file name');
26         $sourceFile=shift;
27     }
28     elsif ($nextArg eq '-o')
29     {
30         NeedNextArg($nextArg, 'file name');
31         $outputFile=shift;
32     }
33     elsif ($nextArg eq '-f')
34     {
35         NeedNextArg($nextArg, 'file name');
36         $definesFile=shift;
37     }
38     elsif ($nextArg eq '-d')
39     {
40         NeedNextArg($nextArg, 'value');
41         my $customDefine=shift;
42         if ( $customDefine=~m/^\"?(\S+)=(\S*)\"?$/ )
43         {
44            $Defines{$1}=$2;
45         }
46         else
47         {
48            print "-d expects name=value\n";
49            Usage();
50         }
51     }
52     elsif ($nextArg eq '-h')
53     {
54         Usage();
55     }
56     else
57     {
58         print "Unknown argument '$nextArg'\n";
59         Usage();
60     }
61 }
62
63 # check if we have what we need
64
65 if ($sourceFile eq "" || $outputFile eq "" || $definesFile eq "")
66 {
67         Usage();
68 }
69
70 open (SOURCEFILE,$sourceFile) or die "Cannot open $sourceFile for reading\n";
71 open (DEFINESFILE,$definesFile) or die "Cannot open $definesFile for reading\n";
72 open (OUTPUTFILE,"> $outputFile") or die "Cannot open $outputFile for writing\n";
73
74 #load defines
75
76 while (<DEFINESFILE>)
77 {
78         chomp;
79         if (/^\s*#define\s+(\S+)\s+(\S*)\s*$/)
80         {
81                 if (defined $2)
82                 {
83                         $Defines{$1}=$2;
84                 }
85                 else
86                 {
87                         $Defines{$1}="";
88                 }
89         }
90 }
91
92 while (<SOURCEFILE>)
93 {
94     my $string=$_;
95     my $processed="";
96     while ($string=~m/\$\(([^)]+)\)/)
97     {
98                 if (! defined $Defines{$1})
99                 {
100                         die "'$1' is not defined.\n";
101                 }
102                 $string=~s/\$\(([^)]+)\)/$Defines{$1}/;
103     }
104     print OUTPUTFILE $string ;
105 }
106
107
108 # functions
109 sub Usage()
110 {
111     print "Usage: applydefines [options]\n";
112     print "\t-s <file>\t: the source file to process\n";
113     print "\t-f <file>\t: the file containing #define settings\n";
114     print "\t-o <file>\t: the output file\n";
115     print "\t-d <name>=<Value>\t: additional define\n";
116     
117     exit 1;
118 }
119
120 sub NeedNextArg()
121 {
122     if (@ARGV == 0)
123     {
124         print "'@_[0]' requires @_[1]\n";
125         Usage();
126     }
127 }
128