diff -r 000000000000 -r cfcbf08528c4 qtmobility/bin/syncheaders --- /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 \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 () { + 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; + } +} +