| author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> | 
| Fri, 17 Sep 2010 09:02:29 +0300 | |
| changeset 0 | 4f2f89ce4247 | 
| permissions | -rw-r--r-- | 
| 0 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 1 | #!/usr/bin/perl -w | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 2 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 3 | # Copyright 2009 Apple Inc. All rights reserved. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 4 | # | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 5 | # Redistribution and use in source and binary forms, with or without | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 6 | # modification, are permitted provided that the following conditions | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 7 | # are met: | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 8 | # 1. Redistributions of source code must retain the above copyright | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 9 | # notice, this list of conditions and the following disclaimer. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 10 | # 2. Redistributions in binary form must reproduce the above copyright | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 11 | # notice, this list of conditions and the following disclaimer in the | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 12 | # documentation and/or other materials provided with the distribution. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 13 | # | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 14 | # THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 15 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 16 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 17 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 18 | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 19 | # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 20 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 21 | # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 22 | # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 23 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 24 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 25 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 26 | # Helper script to add includes to source files. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 27 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 28 | use strict; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 29 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 30 | my $headerPattern = '[\"<][A-Za-z][A-Za-z0-9_/]+(\.h)?[\">]'; # " Make Xcode formatter happy. | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 31 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 32 | my $headerToAdd = shift @ARGV or die; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 33 | $headerToAdd =~ /^([A-Za-z][A-Za-z0-9]+)\.h$/ or die "Header to add must be a .h file: $headerToAdd.\n"; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 34 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 35 | sub includesParagraph; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 36 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 37 | FILE: for my $filename (@ARGV) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 38 |     unless ($filename =~ /(\w+)\.cpp$/) { print STDERR "Command line args must be .cpp files: $filename.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 39 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 40 | my $base = $1; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 41 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 42 | my $sawConfig = 0; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 43 | my $sawSelfInclude = 0; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 44 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 45 | my $pastIncludes = 0; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 46 | my %includes; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 47 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 48 | my $beforeIncludes = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 49 | my $afterIncludes = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 50 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 51 | my $currentCondition = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 52 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 53 | my $entireFileCondition = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 54 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 55 |     unless (open INPUT, "<", $filename) { print STDERR "File does not exist: $filename\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 56 |     while (my $line = <INPUT>) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 57 |         if ($line =~ /^\s*#(include|import)\s*($headerPattern)\s*\n/) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 58 | my $include = $2; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 59 |             if ($pastIncludes) { print STDERR "Saw more includes after include section in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 60 |             if ($include eq "\"config.h\"") {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 61 | $sawConfig = 1; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 62 |             } else {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 63 |                 unless ($sawConfig) { print STDERR "First include must be config.h in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 64 |                 if ($include eq "\"$base.h\"") {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 65 | $sawSelfInclude = 1; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 66 |                 } else {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 67 |                     unless ($sawSelfInclude) { print STDERR "Second include must be $base.h in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 68 |                     $includes{$currentCondition}{$include} = 1;
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 69 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 70 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 71 |         } else {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 72 |             if ($sawConfig && !$pastIncludes) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 73 |                 if ($line =~ /^\s*#\s*if\s+(.+?)\s*$/) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 74 | my $condition = $1; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 75 |                     if (!$sawSelfInclude) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 76 | $entireFileCondition = $1; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 77 | next; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 78 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 79 |                     unless ($currentCondition eq "") { print STDERR "Nested #if in include section in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 80 | $currentCondition = $condition; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 81 | next; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 82 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 83 |                 if ($line =~ /^\s*#\s*endif\s*$/) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 84 |                     unless ($currentCondition ne "") { print STDERR "Extra #endif in include section in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 85 | $currentCondition = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 86 | next; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 87 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 88 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 89 |             if (!$sawConfig) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 90 | $beforeIncludes .= $line; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 91 |             } else {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 92 | $pastIncludes = 1 if $line !~ /^\s*$/; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 93 |                 if ($pastIncludes) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 94 |                     unless ($currentCondition eq "") { print STDERR "Unterminated #if in include section in $filename, line $.\n"; next FILE; }
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 95 | $afterIncludes .= $line; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 96 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 97 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 98 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 99 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 100 | close INPUT or die; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 101 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 102 |     $includes{""}{"\"$headerToAdd\""} = 1;
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 103 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 104 | $beforeIncludes =~ s/\n+$//; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 105 | $afterIncludes =~ s/^\n+//; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 106 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 107 | my $contents = $beforeIncludes; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 108 | $contents .= "\n\n#include \"config.h\"\n"; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 109 | $contents .= "\n#if $entireFileCondition\n" if $entireFileCondition ne ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 110 | $contents .= "#include \"$base.h\"\n\n"; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 111 |     for my $condition (sort keys %includes) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 112 | $contents .= "#if $condition\n" unless $condition eq ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 113 |         $contents .= includesParagraph($includes{$condition});
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 114 | $contents .= "#endif\n" unless $condition eq ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 115 | $contents .= "\n"; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 116 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 117 | $contents .= $afterIncludes; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 118 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 119 |     unless (open OUTPUT, ">", $filename) { print STDERR "Could not open file for writing: $filename\n"; next FILE; };
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 120 | print OUTPUT $contents; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 121 | close OUTPUT or die; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 122 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 123 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 124 | sub includesParagraph() | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 125 | {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 126 | my ($includes) = @_; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 127 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 128 | my $paragraph = ""; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 129 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 130 |     for my $include (sort keys %{$includes}) {
 | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 131 | $paragraph .= "#include $include\n"; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 132 | } | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 133 | |
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 134 | return $paragraph; | 
| 
4f2f89ce4247
Revision: 201037
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 135 | } |