qtmobility/bin/syncheaders
changeset 0 cfcbf08528c4
child 6 4203353e74ea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtmobility/bin/syncheaders	Thu Apr 01 08:30:34 2010 +0300
@@ -0,0 +1,110 @@
+#!/usr/bin/perl
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the Qt Mobility Components.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## No Commercial Usage
+## This file contains pre-release code and may not be distributed.
+## You may use this file in accordance with the terms and conditions
+## contained in the Technology Preview License Agreement accompanying
+## this package.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL included in the
+## packaging of this file.  Please review the following information to
+## ensure the GNU Lesser General Public License version 2.1 requirements
+## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights.  These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at qt-info@nokia.com.
+##
+##
+##
+##
+##
+##
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+use strict;
+use warnings;
+
+use File::Basename;
+use File::stat;
+use File::Path;
+
+my $allow_non_exported = 1;
+if ( @ARGV && $ARGV[0] eq "-needs-export" ) {
+    shift(@ARGV);
+    $allow_non_exported = 0;
+}
+
+my $outdir = shift(@ARGV) or usage();
+mkpath($outdir);
+
+my $indir = shift(@ARGV) or usage();
+processFile($indir);
+
+exit 0;
+
+sub usage
+{
+    print "Usage:  syncheaders [-needs-export] outdir indir\n";
+    print "        Processes all public header files <indir>\n";
+    exit 2;
+}
+
+sub processFile
+{
+    my ( $read_dir ) = @_;
+    my @allFiles;
+    my $filename;
+
+    opendir( THISDIR, $read_dir) or die "Can't read $read_dir";
+    #process all header files
+    @allFiles = grep /\.h/,  readdir THISDIR;
+    #don't include private headers
+    @allFiles = grep !/_p\.h/, @allFiles;
+
+    for $filename (@allFiles) {
+        open INPUT, "$indir/$filename" or die "Can't read $filename";
+
+        my $src_s = stat("$indir/$filename");
+        my $now = $src_s->mtime;
+
+        while (<INPUT>) {
+            if ( /^\s*class\s+.*_EXPORT\s+([^\s:]+)/ ||
+                 ($allow_non_exported && /^\s*class\s+([^\s:<]+)/ && index($_, ";") == -1) ||
+                 /syncqtopia\s+header\s+([^\s:]+)/ )
+            {
+                # Skip preprocessor-related items
+                next if ( $1 =~ /#/ );
+
+                my $outfile = "$outdir/$1";
+
+                print "Create header $outfile\n";
+
+                #system("install", "-m", "0644", $filename, $outfile);
+                open OUT, ">$outfile" or die "Can't write $outfile";
+                print OUT "#include \"".basename($filename)."\"\n";
+                close OUT;
+            }
+        }
+        close INPUT;
+    }
+}
+