#!/usr/bin/perl
#############################################################################
##
## Copyright (C) 2010 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;
}
}