Make work again.

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

	* abicheck.sh: Make work again.

	* gsourceclosure.c: Fix a typo.

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

	* gobject.symbols: Group symbols by header and source
	file.
	* makegobjectalias.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 makegalias.pl -def
	* Makefile.am (gobjectaliasdef.c): Add a rule to
	build this file.
	* *.c: Include gobjectalias.h after the other i
        GLib headers, include gobjectaliasdef.c at the bottom.
This commit is contained in:
Matthias Clasen 2005-03-14 06:47:51 +00:00 committed by Matthias Clasen
parent a145c9ed09
commit 3448a27829
21 changed files with 317 additions and 128 deletions

View File

@ -1,3 +1,19 @@
2005-03-14 Matthias Clasen <mclasen@redhat.com>
Make PLT-reduction work with gcc4, and don't include
everything in gobjectalias.h:
* gobject.symbols: Group symbols by header and source
file.
* makegobjectalias.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 makegalias.pl -def
* Makefile.am (gobjectaliasdef.c): Add a rule to
build this file.
* *.c: Include gobjectalias.h after the other i
GLib headers, include gobjectaliasdef.c at the bottom.
2005-03-08 Matthias Clasen <mclasen@redhat.com>
* gobject.symbols: Add the new attributes here, too.

View File

@ -14,11 +14,14 @@ INCLUDES = \
-DG_DISABLE_CONST_RETURNS
gobject.def: gobject.symbols
(echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 - <$(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g' | sort) > gobject.def
(echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g' | sort) > gobject.def
gobjectalias.h: gobject.symbols
$(PERL) $(srcdir)/makegobjectalias.pl < $(srcdir)/gobject.symbols > gobjectalias.h
gobjectaliasdef.c: gobject.symbols
$(PERL) $(srcdir)/makegobjectalias.pl -def < $(srcdir)/gobject.symbols > gobjectaliasdef.c
if OS_LINUX
if HAVE_GNUC_VISIBILITY
TESTS = abicheck.sh
@ -126,7 +129,7 @@ gobject_c_sources = \
gvaluetypes.c
# these sources (also mentioned above) are generated.
BUILT_SOURCES = gmarshal.h gmarshal.c gobjectalias.h
BUILT_SOURCES = gmarshal.h gmarshal.c gobjectalias.h gobjectaliasdef.c
# non-header sources (headers should be specified in the above variables)
# that don't serve as direct make target sources, i.e. they don't have

View File

@ -5,7 +5,7 @@ egrep '^#([^i]|if).*[^\]$' "${top_builddir:-..}/glibconfig.h" > glibconfig.cpp
INCLUDES="-include ${top_builddir:-..}/config.h"
INCLUDES="$INCLUDES -include glibconfig.cpp"
cpp -P $INCLUDES ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE$//' | sort > expected-abi
cpp -P $INCLUDES -DALL_FILES ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE$//' | sort > expected-abi
rm glibconfig.cpp
nm -D .libs/libgobject-2.0.so | grep " T " | cut -d ' ' -f 3 | sort > actual-abi

View File

@ -16,7 +16,6 @@
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "gobjectalias.h"
#include "gboxed.h"
#include "gbsearcharray.h"
@ -25,6 +24,8 @@
#include "gclosure.h"
#include "gvaluecollector.h"
#include "gobjectalias.h"
#include <string.h>
/* --- typedefs & structures --- */
@ -529,3 +530,6 @@ g_value_take_boxed (GValue *value,
value_set_boxed_internal (value, boxed, FALSE, TRUE);
}
#define __G_BOXED_C__
#include "gobjectaliasdef.c"

View File

@ -16,10 +16,10 @@
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "gobjectalias.h"
#include "gclosure.h"
#include "gvalue.h"
#include "gobjectalias.h"
#include <string.h>
@ -558,3 +558,6 @@ g_signal_type_cclosure_new (GType itype,
return closure;
}
#define __G_CLOSURE_C__
#include "gobjectaliasdef.c"

View File

@ -23,12 +23,13 @@
#include <string.h>
#include "gobjectalias.h"
#include "genums.h"
#include "gvalue.h"
#include "gvaluecollector.h"
#include "gobjectalias.h"
/* --- prototypes --- */
static void g_enum_class_init (GEnumClass *class,
@ -420,3 +421,6 @@ g_value_get_flags (const GValue *value)
return value->data[0].v_ulong;
}
#define __G_ENUMS_C__
#include "gobjectaliasdef.c"

View File

@ -16,8 +16,8 @@
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "gobjectalias.h"
#include "gobject.h"
#include "gobjectalias.h"
/*
* MT safe
@ -2014,3 +2014,6 @@ g_cclosure_new_object_swap (GCallback callback_func,
return closure;
}
#define __G_OBJECT_C__
#include "gobjectaliasdef.c"

View File

@ -1,6 +1,39 @@
/* This file lists all exported symbols. It is used to generate
* the gobject.def file used to control exports on Windows and the
* gobjectalias.h/gobjectaliasdef.c files used to avoid PLT entries for
* internal uses of exported functions (see makegobjectalias.pl).
*
* Every symbol must be included in the right
* #ifdef IN_HEADER(sym) #endif and
* #ifdef IN_FILE(sym) #endif sections.
*/
#ifdef ALL_FILES
#define IN_FILE(x) 1
#define IN_HEADER(x) 1
#endif
#if IN_HEADER(__G_BOXED_H__)
#if IN_FILE(__G_BOXED_C__)
g_boxed_copy
g_boxed_free
g_boxed_type_register_static
g_gstring_get_type G_GNUC_CONST
g_strv_get_type G_GNUC_CONST
g_closure_get_type G_GNUC_CONST
g_value_get_type G_GNUC_CONST
g_value_array_get_type G_GNUC_CONST
g_value_set_boxed
g_value_take_boxed
g_value_dup_boxed
g_value_get_boxed
g_value_set_static_boxed
#ifndef G_DISABLE_DEPRECATED
g_value_set_boxed_take_ownership
#endif
#endif
#endif
#if IN_HEADER(__G_MARSHAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
g_cclosure_marshal_BOOLEAN__FLAGS
g_cclosure_marshal_STRING__OBJECT_POINTER
g_cclosure_marshal_VOID__BOOLEAN
@ -21,17 +54,18 @@ g_cclosure_marshal_VOID__UINT
g_cclosure_marshal_VOID__UINT_POINTER
g_cclosure_marshal_VOID__ULONG
g_cclosure_marshal_VOID__VOID
#endif
#endif
#if IN_HEADER(__G_CLOSURE_H__)
#if IN_FILE(__G_CLOSURE_C__)
g_cclosure_new
g_cclosure_new_object
g_cclosure_new_object_swap
g_cclosure_new_swap
g_closure_add_finalize_notifier
g_closure_add_invalidate_notifier
g_closure_add_marshal_guards
g_closure_get_type G_GNUC_CONST
g_closure_invalidate
g_closure_invoke
g_closure_new_object
g_closure_new_simple
g_closure_ref
g_closure_remove_finalize_notifier
@ -40,6 +74,12 @@ g_closure_set_marshal
g_closure_set_meta_marshal
g_closure_sink
g_closure_unref
g_signal_type_cclosure_new
#endif
#endif
#if IN_HEADER(__G_ENUMS_H__)
#if IN_FILE(__G_ENUMS_C__)
g_enum_complete_type_info
g_enum_get_value
g_enum_get_value_by_name
@ -50,9 +90,26 @@ g_flags_get_first_value
g_flags_get_value_by_name
g_flags_get_value_by_nick
g_flags_register_static
g_gstring_get_type G_GNUC_CONST
g_value_set_enum
g_value_set_flags
g_value_get_enum
g_value_get_flags
#endif
#endif
#if IN_HEADER(__G_SOURCECLOSURE_H__)
#if IN_FILE(__G_SOURCECLOSURE_C__)
g_io_channel_get_type
g_io_condition_get_type
g_source_set_closure
#endif
#endif
#if IN_HEADER(__G_OBJECT_H__)
#if IN_FILE(__G_OBJECT_C__)
g_cclosure_new_object
g_cclosure_new_object_swap
g_closure_new_object
g_object_add_weak_pointer
g_object_class_find_property
g_object_class_install_property
@ -90,6 +147,19 @@ g_object_unref
g_object_watch_closure
g_object_weak_ref
g_object_weak_unref
g_value_get_object
g_value_set_object
g_value_dup_object
g_value_take_object
#ifndef G_DISABLE_DEPRECATED
g_value_set_object_take_ownership
#endif
g_signal_connect_object
#endif
#endif
#if IN_HEADER(__G_PARAMSPECS_H__)
#if IN_FILE(__G_PARAMSPECS_C__)
g_param_spec_boolean
g_param_spec_boxed
g_param_spec_char
@ -97,52 +167,106 @@ g_param_spec_double
g_param_spec_enum
g_param_spec_flags
g_param_spec_float
g_param_spec_get_blurb
g_param_spec_get_name
g_param_spec_get_nick
g_param_spec_get_qdata
g_param_spec_get_redirect_target
g_param_spec_int
g_param_spec_int64
g_param_spec_internal
g_param_spec_long
g_param_spec_object
g_param_spec_override
g_param_spec_param
g_param_spec_pointer
g_param_spec_pool_insert
g_param_spec_pool_list
g_param_spec_pool_list_owned
g_param_spec_pool_lookup
g_param_spec_pool_new
g_param_spec_pool_remove
g_param_spec_ref
g_param_spec_set_qdata
g_param_spec_set_qdata_full
g_param_spec_sink
g_param_spec_steal_qdata
g_param_spec_string
g_param_spec_uchar
g_param_spec_uint
g_param_spec_uint64
g_param_spec_ulong
g_param_spec_unichar
g_param_spec_unref
g_param_spec_value_array
#endif
#endif
#if IN_HEADER(__G_PARAM_H__)
#if IN_FILE(__G_PARAM_C__)
g_param_spec_get_blurb
g_param_spec_get_name
g_param_spec_get_nick
g_param_spec_get_redirect_target
g_param_spec_internal
g_param_type_register_static
g_param_spec_ref
g_param_spec_unref
g_param_spec_sink
g_param_spec_steal_qdata
g_param_spec_set_qdata
g_param_spec_set_qdata_full
g_param_spec_get_qdata
g_param_value_convert
g_param_value_defaults
g_param_values_cmp
g_param_value_set_default
g_param_value_validate
g_param_spec_pool_insert
g_param_spec_pool_list
g_param_spec_pool_list_owned
g_param_spec_pool_lookup
g_param_spec_pool_new
g_param_spec_pool_remove
g_value_get_param
g_value_set_param
g_value_dup_param
g_value_take_param
#ifndef G_DISABLE_DEPRECATED
g_value_set_param_take_ownership
#endif
#endif
#endif
#if IN_HEADER(__G_VALUETYPES_H__)
#if IN_FILE(__G_VALUETYPES_C__)
g_pointer_type_register_static
g_strdup_value_contents
g_value_set_boolean
g_value_set_char
g_value_set_double
g_value_set_float
g_value_set_int
g_value_set_int64
g_value_set_long
g_value_set_pointer
g_value_set_static_string
g_value_set_string
#ifndef G_DISABLE_DEPRECATED
g_value_set_string_take_ownership
#endif
g_value_set_uchar
g_value_set_uint
g_value_set_uint64
g_value_set_ulong
g_value_dup_string
g_value_get_boolean
g_value_get_char
g_value_get_double
g_value_get_float
g_value_get_int
g_value_get_int64
g_value_get_long
g_value_get_pointer
g_value_get_string
g_value_get_uchar
g_value_get_uint
g_value_get_uint64
g_value_get_ulong
g_value_take_string
#endif
#endif
#if IN_HEADER(__G_SIGNAL_H__)
#if IN_FILE(__G_SIGNAL_C__)
g_signal_accumulator_true_handled
g_signal_add_emission_hook
g_signal_chain_from_overridden
g_signal_connect_closure
g_signal_connect_closure_by_id
g_signal_connect_data
g_signal_connect_object
g_signal_emit
g_signal_emit_by_name
g_signal_emitv
@ -170,10 +294,11 @@ g_signal_query
g_signal_remove_emission_hook
g_signal_stop_emission
g_signal_stop_emission_by_name
g_signal_type_cclosure_new
g_source_set_closure
g_strdup_value_contents
g_strv_get_type G_GNUC_CONST
#endif
#endif
#if IN_HEADER(__G_TYPE_H__)
#if IN_FILE(__G_TYPE_C__)
g_type_add_class_cache_func
g_type_add_interface_check
g_type_add_interface_dynamic
@ -215,24 +340,11 @@ g_type_interface_peek_parent
g_type_interface_prerequisites
g_type_interfaces
g_type_is_a
g_type_module_add_interface
g_type_module_get_type G_GNUC_CONST
g_type_module_register_enum
g_type_module_register_flags
g_type_module_register_type
g_type_module_set_name
g_type_module_unuse
g_type_module_use
g_type_name
g_type_name_from_class
g_type_name_from_instance
g_type_next_base
g_type_parent
g_type_plugin_complete_interface_info
g_type_plugin_complete_type_info
g_type_plugin_get_type G_GNUC_CONST
g_type_plugin_unuse
g_type_plugin_use
g_type_qname
g_type_query
g_type_register_dynamic
@ -243,79 +355,63 @@ g_type_remove_interface_check
g_type_set_qdata
g_type_test_flags
g_type_value_table_peek
#endif
#endif
#if IN_HEADER(__G_TYPE_MODULE_H__)
#if IN_FILE(__G_TYPE_MODULE_C__)
g_type_module_add_interface
g_type_module_get_type G_GNUC_CONST
g_type_module_register_enum
g_type_module_register_flags
g_type_module_register_type
g_type_module_set_name
g_type_module_unuse
g_type_module_use
#endif
#endif
#if IN_HEADER(__G_VALUE_ARRAY_H__)
#if IN_FILE(__G_VALUE_ARRAY_C__)
g_value_array_append
g_value_array_copy
g_value_array_free
g_value_array_get_nth
g_value_array_get_type G_GNUC_CONST
g_value_array_insert
g_value_array_new
g_value_array_prepend
g_value_array_remove
g_value_array_sort
g_value_array_sort_with_data
#endif
#endif
#if IN_HEADER(__G_TYPE_PLUGIN_H__)
#if IN_FILE(__G_TYPE_PLUGIN_C__)
g_type_plugin_complete_interface_info
g_type_plugin_complete_type_info
g_type_plugin_get_type G_GNUC_CONST
g_type_plugin_unuse
g_type_plugin_use
#endif
#endif
#if IN_HEADER(__G_VALUE_H__)
#if IN_FILE(__G_VALUE_C__)
g_value_copy
g_value_dup_boxed
g_value_dup_object
g_value_dup_param
g_value_dup_string
g_value_fits_pointer
g_value_get_boolean
g_value_get_boxed
g_value_get_char
g_value_get_double
g_value_get_enum
g_value_get_flags
g_value_get_float
g_value_get_int
g_value_get_int64
g_value_get_long
g_value_get_object
g_value_get_param
g_value_get_pointer
g_value_get_string
g_value_get_type G_GNUC_CONST
g_value_get_uchar
g_value_get_uint
g_value_get_uint64
g_value_get_ulong
g_value_init
g_value_peek_pointer
g_value_register_transform_func
g_value_reset
g_value_set_boolean
g_value_set_boxed
g_value_set_boxed_take_ownership
g_value_set_char
g_value_set_double
g_value_set_enum
g_value_set_flags
g_value_set_float
g_value_set_instance
g_value_set_int
g_value_set_int64
g_value_set_long
g_value_set_object
g_value_set_object_take_ownership
g_value_set_param
g_value_set_param_take_ownership
g_value_set_pointer
g_value_set_static_boxed
g_value_set_static_string
g_value_set_string
g_value_set_string_take_ownership
g_value_set_uchar
g_value_set_uint
g_value_set_uint64
g_value_set_ulong
g_value_take_boxed
g_value_take_object
g_value_take_param
g_value_take_string
g_value_transform
g_value_type_compatible
g_value_type_transformable
g_value_unset
g_value_set_instance
#endif
#endif
#ifdef INCLUDE_VARIABLES
g_param_spec_types
#endif

View File

@ -166,4 +166,4 @@ g_object_notify_queue_from_object (GObject *object,
G_END_DECLS
#endif /* __G_OBJECT_H__ */
#endif /* __G_NOTIFY_H__ */

View File

@ -21,11 +21,11 @@
* MT safe
*/
#include "gobjectalias.h"
#include "gparam.h"
#include "gparamspecs.h"
#include "gvaluecollector.h"
#include "gobjectalias.h"
#include <string.h>
@ -1109,3 +1109,6 @@ g_value_dup_param (const GValue *value)
return value->data[0].v_pointer ? g_param_spec_ref (value->data[0].v_pointer) : NULL;
}
#define __G_PARAM_C__
#include "gobjectaliasdef.c"

View File

@ -23,11 +23,11 @@
#include "../config.h"
#include "gobjectalias.h"
#include "gparamspecs.h"
#include "gvaluecollector.h"
#include "gvaluearray.h"
#include "gobjectalias.h"
#include <string.h>
#define G_FLOAT_EPSILON (1e-30)
@ -1928,3 +1928,6 @@ g_param_spec_override (const gchar *name,
return pspec;
}
#define __G_PARAMSPECS_C__
#include "gobjectaliasdef.c"

View File

@ -26,12 +26,15 @@
#include <config.h>
#include "gobjectalias.h"
#include "gsignal.h"
#include "gbsearcharray.h"
#include "gvaluecollector.h"
#include "gvaluetypes.h"
#include "gboxed.h"
#include "gobjectalias.h"
#include <string.h>
#include <signal.h>
@ -2655,3 +2658,6 @@ g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
#include "gobject.h"
#include "genums.h"
#include "gmarshal.c"
#define __G_SIGNAL_C__
#include "gobjectaliasdef.c"

View File

@ -17,13 +17,13 @@
* Boston, MA 02111-1307, USA.
*/
#include "gobjectalias.h"
#include "gsourceclosure.h"
#include "gboxed.h"
#include "genums.h"
#include "gmarshal.h"
#include "gvalue.h"
#include "gvaluetypes.h"
#include "gobjectalias.h"
GType
g_io_channel_get_type (void)
@ -190,3 +190,6 @@ g_source_set_closure (GSource *source,
g_closure_set_marshal (closure, marshal);
}
}
#define __G_SOURCECLOSURE_C__
#include "gobjectaliasdef.c"

View File

@ -17,8 +17,8 @@
* Boston, MA 02111-1307, USA.
*/
#include <config.h>
#include "gobjectalias.h"
#include "gtype.h"
#include "gobjectalias.h"
/*
* MT safe
@ -3580,3 +3580,6 @@ g_type_instance_get_private (GTypeInstance *instance,
return G_STRUCT_MEMBER_P (instance, offset);
}
#define __G_TYPE_C__
#include "gobjectaliasdef.c"

View File

@ -19,9 +19,9 @@
#include <stdlib.h>
#include "gobjectalias.h"
#include "gtypeplugin.h"
#include "gtypemodule.h"
#include "gobjectalias.h"
typedef struct _ModuleTypeInfo ModuleTypeInfo;
typedef struct _ModuleInterfaceInfo ModuleInterfaceInfo;
@ -424,3 +424,7 @@ g_type_module_register_flags (GTypeModule *module,
return g_type_module_register_type (G_TYPE_MODULE (module),
G_TYPE_FLAGS, name, &flags_type_info, 0);
}
#define __G_TYPE_MODULE_C__
#include "gobjectaliasdef.c"

View File

@ -16,8 +16,8 @@
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "gobjectalias.h"
#include "gtypeplugin.h"
#include "gobjectalias.h"
@ -99,3 +99,6 @@ g_type_plugin_complete_interface_info (GTypePlugin *plugin,
interface_type,
info);
}
#define __G_TYPE_PLUGIN_C__
#include "gobjectaliasdef.c"

View File

@ -23,10 +23,10 @@
#include <string.h>
#include "gobjectalias.h"
#include "gvalue.h"
#include "gvaluecollector.h"
#include "gbsearcharray.h"
#include "gobjectalias.h"
/* --- typedefs & structures --- */
@ -359,3 +359,6 @@ g_value_transform (const GValue *src_value,
}
return FALSE;
}
#define __G_VALUE_C__
#include "gobjectaliasdef.c"

View File

@ -23,8 +23,8 @@
#include <config.h>
#include "gobjectalias.h"
#include "gvaluearray.h"
#include "gobjectalias.h"
#include <string.h>
#include <stdlib.h> /* qsort() */
@ -228,3 +228,6 @@ g_value_array_sort_with_data (GValueArray *value_array,
compare_func, user_data);
return value_array;
}
#define __G_VALUE_ARRAY_C__
#include "gobjectaliasdef.c"

View File

@ -18,9 +18,9 @@
*/
#include <string.h>
#include "gobjectalias.h"
#include "gvalue.h"
#include "genums.h"
#include "gobjectalias.h"
/* same type transforms

View File

@ -21,10 +21,10 @@
* MT safe
*/
#include "gobjectalias.h"
#include "gvaluetypes.h"
#include "gvaluecollector.h"
#include "gobjectalias.h"
#include <string.h>
#include <stdlib.h> /* qsort() */
@ -906,3 +906,5 @@ g_pointer_type_register_static (const gchar *name)
return type;
}
#define __G_VALUETYPES_C__
#include "gobjectaliasdef.c"

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 makegobjectalias.pl */
@ -9,14 +16,25 @@ print <<EOF;
#ifdef G_HAVE_GNUC_VISIBILITY
#ifdef G_DISABLE_DEPRECATED
#define WAS_NO_G_DEPR
#endif
#undef G_DISABLE_DEPRECATED
EOF
#include "glib-object.h"
if ($do_def) {
print <<EOF
#undef IN_FILE
#define IN_FILE defined
#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;
@ -55,7 +73,7 @@ while (<>) {
next;
}
if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS)/)
if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
{
$in_skipped_section = 1;
}
@ -65,13 +83,20 @@ while (<>) {
next;
}
if ($_ =~ /^\#ifdef\s+G/)
if ($_ =~ /^\#ifn?def\s+G/)
{
print $_;
next;
}
if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/)
{
print $_;
next;
}
chop;
my $str = $_;
my @words;
@ -87,23 +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;
#ifdef WAS_NO_G_DEPR
#define G_DISABLE_DEPRECATED
#undef WAS_NO_G_DEPR
#endif
#endif /* G_HAVE_GNUC_VISIBILITY */
#endif /* DISABLE_VISIBILITY */
EOF