[Win32] Add code to remove the bug-compatibility entries (see #134813, and
authorTor Lillqvist <tml@iki.fi>
Wed, 22 Sep 2004 22:41:02 +0000 (22:41 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Wed, 22 Sep 2004 22:41:02 +0000 (22:41 +0000)
2004-09-22  Tor Lillqvist  <tml@iki.fi>

* 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
gobject/Makefile.am
gobject/gobject.symbols
gobject/makegobjectalias.pl

index 31d82b3..241e42c 100644 (file)
@@ -1,3 +1,20 @@
+2004-09-22  Tor Lillqvist  <tml@iki.fi>
+
+       * 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  <mclasen@redhat.com>
 
        * === Released 2.5.3 ===
index cbcc552..fadbf1c 100644 (file)
@@ -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
index 9a97c2c..09831ab 100644 (file)
@@ -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
index d115de2..90df9f6 100755 (executable)
@@ -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 <<EOF