diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:34:13 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:34:13 (GMT) |
commit | 67ad0519fd165acee4a4d2a94fa502e9e4847bd0 (patch) | |
tree | 1dbf50b3dff8d5ca7e9344733968c72704eb15ff /util/scripts | |
download | Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.zip Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.gz Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.bz2 |
Long live Qt!
Diffstat (limited to 'util/scripts')
-rwxr-xr-x | util/scripts/make_qfeatures_dot_h | 118 | ||||
-rwxr-xr-x | util/scripts/unix_to_dos | 16 |
2 files changed, 134 insertions, 0 deletions
diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h new file mode 100755 index 0000000..c434649 --- /dev/null +++ b/util/scripts/make_qfeatures_dot_h @@ -0,0 +1,118 @@ +#!/usr/bin/perl +# +# Usage: make_qfeatures_dot_h +# +# Generates core/base/qfeatures.h from core/base/qfeatures.txt. +# +# The tools/qfeatures.txt file can contain redundancies, and this program +# will show them. +# + +open FL, "$ENV{QTDIR}/src/corelib/global/qfeatures.txt" + or die "Cannot open $ENV{QTDIR}/src/corelib/global/qfeatures.txt"; + +while (<FL>) { + if ( /^Feature: (\S*)/ ) { + print STDERR "Duplicate: $1\n" if $macro{$1}; + $macro{$macro=$1}=1; + } elsif ( /^Requires: (.*?)\s*$/ ) { + $deps{$macro}=$1; + map { $dep{"$macro $_"}=1 } split /\s+/, $1; + } elsif ( /^Name: (.*?)\s*$/ ) { + $label{$macro}=$1; + } +} + +close FL; + +sub depends { + my($x,$y) = @_; + return 1 if $dep{"$x $y"}; + return 0 if $dep{"$y $x"}; + return 0 if $x eq $y; + my $d; + for $d (split /\s+/, $deps{$x}) { + return 1 if depends($d,$y); + } + return 0; +} +sub dependants_rec { + my($x) = @_; + my $n = 0; + my $d = 0; + $dependants_rec_count++; + if ( $dependants_rec_count > $dependants_rec_limit ) { + if ( $circularity_start eq $x ) { + print STDERR "Circular dependency: $circularity\n"; + exit; + } + $circularity_start=$x if !$circularity_start; + $circularity="$x $circularity"; + } + for $d (split /\s+/, $deps{$x}) { + $n += 1 + dependants_rec($d); + } + $dependants_rec_count--; + return $n; +} +sub dependants { + $dependants_rec_limit=keys %macro if !$dependants_rec_limit; + $dependants_rec_count=0; + return dependants_rec @_; +} +sub dependencysort { + my($x, $y) = @_; + my $xd = dependants($x); + my $yd = dependants($y); + return $xd-$yd if $xd != $yd; + return $x cmp $y; +} + +@macros = sort { dependencysort($a,$b) } keys %macro; + +for $macro ( @macros ) { + for $d1 (split /\s+/, $deps{$macro} ) { + for $d2 (split /\s+/, $deps{$macro} ) { + print STDERR "Redundancy in $macro - $d1 depends on $d2\n" if depends($d1,$d2); + } + print STDERR "Unknown in $macro - $d1\n" if !$macro{$d1}; + } +} + +open OUT, ">$ENV{QTDIR}/src/corelib/global/qfeatures.h" + or die "Cannot open $ENV{QTDIR}/src/corelib/global/qfeatures.h for writing"; + +print OUT +"/**************************************************************************** +** +** Copyright (C) 1992-\$THISYEAR\$ \$TROLLTECH\$. All rights reserved. +** +** This file is part of the \$MODULE\$ of the Qt Toolkit. +** +** \$TROLLTECH_DUAL_LICENSE\$ +** +****************************************************************************/ + +/* + * All features and their dependencies. + * + * This list is generated from \$QTDIR/src/corelib/global/qfeatures.txt + */ + +"; + +for $macro ( @macros ) { + print OUT "// $label{$macro}\n"; + if ( $deps{$macro} ) { + print OUT "#if !defined(QT_NO_$macro)"; + print OUT " && (", (join " || ", map { "defined(QT_NO_$_)" } split /\s+/, $deps{$macro}), ")"; + print OUT "\n"; + print OUT "#define QT_NO_$macro\n"; + print OUT "#endif\n"; + } else { + print OUT "//#define QT_NO_$macro\n"; + } + print OUT "\n"; +} + +close OUT; diff --git a/util/scripts/unix_to_dos b/util/scripts/unix_to_dos new file mode 100755 index 0000000..510037c --- /dev/null +++ b/util/scripts/unix_to_dos @@ -0,0 +1,16 @@ +#!/usr/bin/perl + +undef $/; + +foreach $f ( @ARGV ) { + if ( open( F, "< $f" ) ) { + $i = <F>; + close F; + $i =~ s/\n/\r\n/g; + $i =~ s/\r+/\r/g; + if ( open( F, "> $f" ) ) { + print F $i; + close F; + } + } +} |