gtk2/gdk/makegdkalias.pl
Matthias Clasen 0742ff3ae3 Add hidden aliases for exported symbols which are used internally in order
Mon Aug  9 15:41:17 2004  Matthias Clasen  <maclas@gmx.de>

	Add hidden aliases for exported symbols which are
	used internally in order to get rid of many PLT
	entries.  (#145519, Arjan van de Ven)

	* gdk/Makefile.am: Add rules to generate gdk.def and
	gdkalias.h from gdk.symbols, and make make check check
	the abi with abicheck.sh.

	* gdk/gdk.symbols: New file. Definition of the GDK ABI.
	The file can be processed by cpp to filter out certain
	subsets of symbols.

	* gdk/abicheck.sh: New file. Script to check the actually
	symbols exported from libgdk-x11.2.0.so against the symbols
	found in gdk.symbols.

	* gdk/makegdkalias.pl: New file. Perl script to generate the
	header containing the alias definitions for internally used
	exported symbols from a list of symbols.

	* gdk/*.c, gdk/x11/*.c: Include gdkalias.h
2004-08-09 20:14:43 +00:00

80 lines
1.3 KiB
Perl
Executable File

#!/usr/bin/perl -w
my $preamble = <<EOF;
/* Generated by makegdkalias.pl */
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
#ifdef GDK_ENABLE_BROKEN
#define WAS_BROKEN
#endif
#define GDK_ENABLE_BROKEN
#ifdef GDK_MULTIHEAD_SAFE
#define WAS_MULTIHEAD
#endif
#undef GDK_MULTIHEAD_SAVE
#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"
#include "x11/gdkx.h"
EOF
my $postamble = <<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 /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) */
EOF
print $preamble;
while (<>) {
my $str = $_;
chomp($str);
# ignore empty lines
if ("$str" eq "") {
next;
}
my $alias = $str."__internal_alias";
print "extern __typeof ($str) $alias __attribute((visibility(\"hidden\"))); \n";
print "extern __typeof ($str) $str __attribute((alias(\"$alias\"), visibility(\"default\"))); \n";
print "#define $str $alias \n";
print "\n";
}
print $postamble;