From 4f89335660c4aeacd38c81b46218737d8e1d5854 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Wed, 22 Sep 2004 22:41:02 +0000 Subject: [PATCH] [Win32] Add code to remove the bug-compatibility entries (see #134813, and 2004-09-22 Tor Lillqvist * Makefile.am (install-libtool-import-lib): [Win32] Add code to remove the bug-compatibility entries (see #134813, and related comments below) from the import library. The PRIVATE keyword in the .def file is supposed to mean that, but it isn't implemented yet by GNU ld. * makegobjectalias.pl: In case the symbol is followed by some stuff ("PRIVATE") that's intended for the .def file, use just the actual symbol. * gobject.symbols: For binary bug compatibility on Win32, add the g_slist_remove_all and g_unichar_validate symbols inside #ifdef INCLUDE_INTERNAL_SYMBOLS. (See #134813 and log entries from March below.) --- gobject/ChangeLog | 17 +++++++++++++++++ gobject/Makefile.am | 10 +++++++++- gobject/gobject.symbols | 4 ++++ gobject/makegobjectalias.pl | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 31d82b3..241e42c 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,20 @@ +2004-09-22 Tor Lillqvist + + * Makefile.am (install-libtool-import-lib): [Win32] Add code to + remove the bug-compatibility entries (see #134813, and related + comments below) from the import library. The PRIVATE keyword in + the .def file is supposed to mean that, but it isn't implemented + yet by GNU ld. + + * makegobjectalias.pl: In case the symbol is followed by some + stuff ("PRIVATE") that's intended for the .def file, use just the + actual symbol. + + * gobject.symbols: For binary bug compatibility on Win32, add the + g_slist_remove_all and g_unichar_validate symbols inside #ifdef + INCLUDE_INTERNAL_SYMBOLS. (See #134813 and log entries from March + below.) + 2004-09-18 Matthias Clasen * === Released 2.5.3 === diff --git a/gobject/Makefile.am b/gobject/Makefile.am index cbcc552..fadbf1c 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -49,6 +49,14 @@ if OS_WIN32 export_symbols = -export-symbols $(srcdir)/gobject.def install-libtool-import-lib: +# Don't put the bug compatibility entries in the import lib! +# (Unfortunately the GNU linker doesn't yet understand the PRIVATE +# directive in .def files.) +# + for entry in `grep PRIVATE gobject.def | sed -e 's/PRIVATE//'`; do \ + file=`nm -A .libs/libgobject-2.0.dll.a | grep -m 1 $$entry | cut -d: -f2`; \ + ar d .libs/libgobject-2.0.dll.a $$file; \ + done $(INSTALL) .libs/libgobject-2.0.dll.a $(DESTDIR)$(libdir) $(INSTALL) $(srcdir)/gobject.def $(DESTDIR)$(libdir)/gobject-2.0.def @@ -222,7 +230,7 @@ BUILT_EXTRA_DIST = \ gmarshal.h \ gmarshal.c \ stamp-gmarshal.h \ - gobjectalias.h + gobjectalias.h if OS_WIN32 diff --git a/gobject/gobject.symbols b/gobject/gobject.symbols index 9a97c2c..09831ab 100644 --- a/gobject/gobject.symbols +++ b/gobject/gobject.symbols @@ -319,3 +319,7 @@ g_value_unset #ifdef INCLUDE_VARIABLES g_param_spec_types #endif +#ifdef INCLUDE_INTERNAL_SYMBOLS +g_slist_remove_all PRIVATE +g_unichar_validate PRIVATE +#endif diff --git a/gobject/makegobjectalias.pl b/gobject/makegobjectalias.pl index d115de2..90df9f6 100755 --- a/gobject/makegobjectalias.pl +++ b/gobject/makegobjectalias.pl @@ -75,6 +75,8 @@ while (<>) { my $str = $_; chomp($str); + # Drop any Win32 specific .def file syntax + $str = (split (/ /, $str))[0]; my $alias = "IA__".$str; print <