Make PLT-reduction work with gcc4, and don't include everything in

2005-03-15  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in gdkalias.h:

	* gdk/gdk.symbols: Group symbols by header and source file.
	* gdk/makegdkalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegdkalias.pl -def
	* gdk/Makefile.am (gdkaliasdef.c): Add a rule to generate this
	file.
	* gdk/*.c, gdk/x11/*.c: Include gdkalias.h after the other
	headers, include gdkaliasdef.c at the bottom.
This commit is contained in:
Matthias Clasen
2005-03-16 03:17:27 +00:00
committed by Matthias Clasen
parent 34bfd71279
commit 2a2d769d42
62 changed files with 1258 additions and 568 deletions

View File

@ -1,5 +1,12 @@
#!/usr/bin/perl -w
my $do_def = 0;
if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) {
shift;
$do_def = 1;
}
print <<EOF;
/* Generated by makegdkalias.pl */
@ -9,39 +16,25 @@ print <<EOF;
#ifdef G_HAVE_GNUC_VISIBILITY
#ifdef GDK_ENABLE_BROKEN
#define WAS_BROKEN
#endif
#define GDK_ENABLE_BROKEN
EOF
#ifdef GDK_MULTIHEAD_SAFE
#define WAS_MULTIHEAD
#endif
#undef GDK_MULTIHEAD_SAVE
if ($do_def) {
print <<EOF
#undef IN_FILE
#define IN_FILE defined
#ifdef GDK_DISABLE_DEPRECATED
#define WAS_NO_DEPR
#endif
#undef GDK_DISABLE_DEPRECATED
#ifdef G_DISABLE_DEPRECATED
#define WAS_NO_G_DEPR
#endif
#undef G_DISABLE_DEPRECATED
#include "gdk.h"
#ifdef GDK_WINDOWING_X11
#include "x11/gdkx.h"
#endif
#ifdef GDK_WINDOWING_WIN32
#include "win32/gdkwin32.h"
#endif
#ifdef GDK_WINDOWING_FB
#include "linux-fb/gdkfb.h"
#endif
#undef IN_HEADER
#define IN_HEADER(x) 1
EOF
}
else {
print <<EOF
#define IN_FILE(x) 1
#define IN_HEADER defined
EOF
}
my $in_comment = 0;
my $in_skipped_section = 0;
@ -80,7 +73,7 @@ while (<>) {
next;
}
if ($_ =~ /^\#ifdef\s+INCLUDE_VARIABLES/)
if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
{
$in_skipped_section = 1;
}
@ -90,7 +83,14 @@ while (<>) {
next;
}
if ($_ =~ /^\#ifdef\s+G/)
if ($_ =~ /^\#ifn?def\s+G/)
{
print $_;
next;
}
if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/)
{
print $_;
@ -112,39 +112,25 @@ while (<>) {
$attributes = "$attributes $word" unless $word eq "PRIVATE";
}
print <<EOF
if (!$do_def) {
print <<EOF
extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes;
extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
\#define $str $alias
EOF
}
else {
print <<EOF
\#undef $str
extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
EOF
}
}
print <<EOF;
#ifndef WAS_BROKEN
#undef GDK_ENABLE_BROKEN
#else
#undef WAS_BROKEN
#endif
#ifdef WAS_MULTIHEAD
#define GDK_MULTIHEAD_SAFE
#undef WAS_MULTIHEAD
#endif
#ifdef WAS_NO_DEPR
#define GDK_DISABLE_DEPRECATED
#undef WAS_NO_DEPR
#endif
#ifdef WAS_NO_G_DEPR
#define G_DISABLE_DEPRECATED
#undef WAS_NO_G_DEPR
#endif
#endif /* G_HAVE_GNUC_VISIBILITY */
#endif /* DISABLE_VISIBILITY */
EOF