summaryrefslogtreecommitdiffstats
path: root/util/scripts
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2009-03-23 10:34:13 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2009-03-23 10:34:13 +0100
commit67ad0519fd165acee4a4d2a94fa502e9e4847bd0 (patch)
tree1dbf50b3dff8d5ca7e9344733968c72704eb15ff /util/scripts
Long live Qt!
Diffstat (limited to 'util/scripts')
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h118
-rwxr-xr-xutil/scripts/unix_to_dos16
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 0000000000..c43464975e
--- /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 0000000000..510037c2f7
--- /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;
+ }
+ }
+}