diff options
Diffstat (limited to 'smoke/kde/generate.pl.in')
-rw-r--r-- | smoke/kde/generate.pl.in | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/smoke/kde/generate.pl.in b/smoke/kde/generate.pl.in deleted file mode 100644 index 1dfd3fd5..00000000 --- a/smoke/kde/generate.pl.in +++ /dev/null @@ -1,229 +0,0 @@ -#!/usr/bin/perl -w - -## Run this first, to generate the x_*.cpp files from the Qt headers -## using kalyptus - -my $kalyptusdir = "@srcdir@/../../kalyptus"; - -use File::Basename; -use File::Copy qw|cp|; -use File::Compare; -use File::Find; -use Cwd; - -my $here = getcwd; -my $outdir = $here . "/generate.pl.tmpdir"; -my $finaloutdir = $here; -my $defines = "qtdefines"; -my $headerlist = "@srcdir@/header_list"; -my $kdeheaderlist = "@srcdir@/kde_header_list"; -my $definespath = "$here/$defines"; -my $headerlistpath = "$here/$headerlist"; -my $kdeheaderlistpath = "$here/$kdeheaderlist"; - -# If srcdir != builddir, then srcdir is probvably an absolute -# path, and it makes no sense to prepend $here. -$definespath = $defines if $defines =~ /^\//; -$headerlistpath = $headerlist if $headerlist =~ /^\//; -$kdeheaderlistpath = $kdeheaderlist if $kdeheaderlist =~ /^\//; - -## Note: outdir and finaloutdir should NOT be the same dir! - -# Delete all x_*.cpp files under outdir (or create outdir if nonexistent) -if (-d $outdir) { system "rm -f $outdir/x_*.cpp"; } else { mkdir $outdir; } - -mkdir $finaloutdir unless (-d $finaloutdir); - -# Load the QT_NO_* macros found in "qtdefines". They'll be passed to kalyptus -my $macros=""; -if ( -e $definespath ){ - print "Found '$defines'. Reading preprocessor symbols from there...\n"; - $macros = " --defines=$definespath "; -} - -# Need to cd to kalyptus's directory so that perl finds Ast.pm etc. -chdir "$kalyptusdir" or die "Couldn't go to $kalyptusdir (edit script to change dir)\n"; - -# Find out which header files we need to parse -# We don't want all of them - e.g. not template-based stuff -my %excludes = ( - 'ntqaccessible.h' => 1, # Accessibility support is not compiled by defaut - 'ntqassistantclient.h' => 1, # Not part of Qt (introduced in Qt-3.1) - 'ntqmotif.h' => 1, # - 'ntqmotifwidget.h' => 1, # Motif extension (introduced in Qt-3.1) - 'ntqmotifdialog.h' => 1, # - 'ntqxt.h' => 1, # Xt - 'ntqxtwidget.h' => 1, # Xt - 'ntqdns.h' => 1, # internal - 'ntqgl.h' => 1, # OpenGL - 'ntqglcolormap.h' => 1, # OpenGL - 'ntqnp.h' => 1, # NSPlugin - 'ntqttableview.h' => 1, # Not in Qt anymore... - 'ntqtmultilineedit.h' => 1, # Not in Qt anymore... - 'ntqwidgetfactory.h' => 1, # Just an interface - 'ntqsharedmemory.h' => 1, # "not part of the Qt API" they say - 'ntqwindowsstyle.h' => 1, # Qt windowsstyle, plugin - 'ntqmotifstyle.h' => 1, - 'ntqcompactstyle.h' => 1, - 'ntqinterlacestyle.h' => 1, - 'ntqmotifplusstyle.h' => 1, - 'ntqsgistyle.h' => 1, - 'ntqplatinumstyle.h' => 1, - 'ntqcdestyle.h' => 1, - 'ntqwindowsxpstyle.h' => 1 # play on the safe side -); - -# Some systems have a QTDIR = TDEDIR = PREFIX -# We need a complete list - -my %includes; -open(HEADERS, $headerlistpath) or die "Couldn't open $headerlistpath: $!\n"; -map { chomp ; $includes{$_} = 1 unless /^\s*#/ } <HEADERS>; -close HEADERS; - -# Find out which header files we need to parse -# We don't want all of them - e.g. not template-based stuff -my %kdeexcludes = ( -# These headers don't look suitable for inclusion: - 'kallocator.h' => 1, - 'kbookmarkimporter_crash.h' => 1, - 'kbookmarkimporter_ie.h' => 1, - 'kbookmarkimporter_opera.h' => 1, - 'kbookmarkimporter_ns.h' => 1, - 'kcrash.h' => 1, - 'kdebug.h' => 1, - 'kdebugclasses.h' => 1, - 'kde_terminal_interface.h' => 1, - 'kdirnotify_stub.h' => 1, - -# These headers currently give problems - 'tdescreensaver.h' => 1, - 'kdirnotify_stub.h' => 1, - 'tdeio/uiserver_stub.h' => 1, - 'tdeio/uiserver.h' => 1, - 'tdeio/tdesasl.h' => 1, - 'tdeio/kpac.h' => 1, - 'tdeio/thumbcreator.h' => 1, - 'tdeio/file.h' => 1, - 'tdeio/chmodjob.h' => 1, - 'tdeparts/genericfactory.h' => 1, - 'tdeparts/pluginselectormodule.h' => 1, - 'kopenssl.h' => 1, - 'kautomount.h' => 1, - 'kimagefilepreview.h' => 1, - 'kpropertiesdialog.h' => 1, - 'knotifydialog.h' => 1, - 'ksockaddr.h' => 1, - 'knotifywidgetbase.h' => 1, -); - -# Some systems have a QTDIR = TDEDIR = PREFIX -# We need a complete list - -my %kdeincludes; -open(HEADERS, $kdeheaderlistpath) or die "Couldn't open $kdeheaderlistpath: $!\n"; -map { chomp ; $kdeincludes{$_} = 1 unless /^\s*#/ } <HEADERS>; -close HEADERS; - -# Can we compile the OpenGl module ? -if("@KDE_HAVE_GL@" eq "yes") -{ - open(DEFS, $definespath); - my @defs = <DEFS>; - close DEFS; - if(!grep(/QT_NO_OPENGL/, @defs)) - { - $excludes{'qgl.h'} = undef; - $excludes{'qglcolormap.h'} = undef; - } - else - { - print STDERR "Qt was not compiled with OpenGL support...\n Skipping TQGL Classes.\n"; - } -} - -# List Qt headers, and exclude the ones listed above -my @headers = (); - -$qtinc= '@qt_includes@'; -opendir (QT, $qtinc) or die "Couldn't find $qtinc"; -foreach $filename (readdir(QT)) { - $entry = $qtinc."/".$filename; - if ( ( -e $entry or -l $entry ) # A real file or a symlink - && ( ! -d _ ) ) # Not a symlink to a dir though - { - push(@headers, $entry) - if ( !defined $excludes{$filename} # Not excluded - && $includes{$filename} # Known header - && $filename =~ /\.h$/ ); # Not a backup file etc. Only headers. - undef $includes{$filename} - } -} -closedir QT; - -my @kdeheaders = (); -$kdeprefix = "@KDE_PREFIX@"; -$kdeinc= '@kde_includes@'; -$kdeinc =~ s/\${prefix}/$kdeprefix/; # Remove ${prefix} in src != build --d $kdeinc or die "Couldn't process $kdeinc: $!\n"; - -find( - { wanted => sub { - (-e || -l and !-d) and do { - $f = substr($_, 1 + length $kdeinc); - push ( @kdeheaders, $_ ) - if( !defined $kdeexcludes{$f} # Not excluded - && $kdeincludes{$f} # Known header - && /\.h$/); # Not a backup file etc. Only headers. - undef $kdeincludes{$f} - }; - }, - follow_fast => 1, - follow_skip => 2, - no_chdir => 1 - }, $kdeinc - ); - -# Launch kalyptus -system "perl kalyptus @ARGV --globspace -fsmoke --name=qt $macros --no-cache --allow_k_dcop_accessors --outputdir=$outdir @headers @kdeheaders"; -my $exit = $? >> 8; -exit $exit if ($exit); - -# Generate diff for smokedata.cpp -unless ( -e "$finaloutdir/smokedata.cpp" ) { - open( TOUCH, ">$finaloutdir/smokedata.cpp"); - close TOUCH; -} -system "diff -u $finaloutdir/smokedata.cpp $outdir/smokedata.cpp > $outdir/smokedata.cpp.diff"; - -# Copy changed or new files to finaloutdir -opendir (OUT, $outdir) or die "Couldn't opendir $outdir"; -foreach $filename (readdir(OUT)) { - next if ( -d "$outdir/$filename" ); # only files, not dirs - my $docopy = 1; - if ( -f "$finaloutdir/$filename" ) { - $docopy = compare("$outdir/$filename", "$finaloutdir/$filename"); # 1 if files are differents - } - if ($docopy) { - #print STDERR "Updating $filename...\n"; - cp("$outdir/$filename", "$finaloutdir/$filename"); - } -} -closedir OUT; - -# Check for deleted files and warn -my $deleted = 0; -opendir(FINALOUT, $finaloutdir) or die "Couldn't opendir $finaloutdir"; -foreach $filename (readdir(FINALOUT)) { - next if ( -d "$finaloutdir/$filename" ); # only files, not dirs - if ( $filename =~ /.cpp$/ && ! ($filename =~ /_la_closure.cpp/) && ! -f "$outdir/$filename" ) { - print STDERR "Removing obsolete file $filename\n"; - unlink "$finaloutdir/$filename"; - $deleted = 1; - } -} -closedir FINALOUT; - -# Delete outdir -system "rm -rf $outdir"; - |