Browse Source

Add the alias code to libxfce4panel.

upstream/xfce4-panel-4.10.1
Nick Schermer 13 years ago
parent
commit
708c40e969
  1. 58
      configure.in.in
  2. 27
      libxfce4panel/Makefile.am
  3. 23
      libxfce4panel/abicheck.sh
  4. 128
      libxfce4panel/libxfce4panel.symbols
  5. 154
      libxfce4panel/make-libxfce4panel-alias.pl
  6. 10
      libxfce4panel/xfce-arrow-button.c
  7. 10
      libxfce4panel/xfce-hvbox.c
  8. 9
      libxfce4panel/xfce-panel-convenience.c
  9. 9
      libxfce4panel/xfce-panel-image.c
  10. 9
      libxfce4panel/xfce-panel-plugin-provider.c
  11. 11
      libxfce4panel/xfce-panel-plugin.c
  12. 1
      libxfce4panel/xfce-panel-plugin.h

58
configure.in.in

@ -19,9 +19,9 @@ m4_define([xfce4_panel_version_tag], [git])
m4_define([xfce4_panel_version], [xfce4_panel_version_major().xfce4_panel_version_minor().xfce4_panel_version_micro()ifelse(xfce4_panel_version_nano(), [], [], [.xfce4_panel_version_nano()])ifelse(xfce4_panel_version_tag(), [git], [xfce4_panel_version_tag()-xfce4_panel_version_build()], [xfce4_panel_version_tag()])])
dnl *******************************************
dnl *** Debugging support for SVN snapshots ***
dnl *** Debugging support for GIT snapshots ***
dnl *******************************************
m4_define([panel_debug_default], [ifelse(xfce4_panel_version_tag(), [svn], [yes], [minimum])])
m4_define([panel_debug_default], [ifelse(xfce4_panel_version_tag(), [git], [yes], [minimum])])
dnl ***************************
dnl *** Initialize autoconf ***
@ -63,6 +63,7 @@ dnl *** Initialize libtool ***
dnl **************************
AC_DISABLE_STATIC()
AC_PROG_LIBTOOL()
AC_CHECK_PROGS([PERL], [perl5 perl])
dnl **************************************
dnl *** Substitute version information ***
@ -108,15 +109,6 @@ dnl *** Check for gtk-doc ***
dnl *************************
GTK_DOC_CHECK([1.0])
dnl *********************************************************
dnl *** Disable deprecated components and single includes ***
dnl *********************************************************
dnl #PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DXFCE_DISABLE_DEPRECATED"
dnl #PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES"
dnl #PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DGTK_DISABLE_DEPRECATED -DGTK_DISABLE_SINGLE_INCLUDES"
dnl #PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES"
dnl #PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DPANGO_DISABLE_DEPRECATED -DPANGO_DISABLE_SINGLE_INCLUDES"
dnl ***********************************
dnl *** Check for debugging support ***
dnl ***********************************
@ -127,6 +119,40 @@ dnl *** Check for linker optimizations ***
dnl **************************************
XDT_FEATURE_LINKER_OPTS()
dnl ****************************************
dnl *** Check for ELF visibility support ***
dnl ****************************************
AC_ARG_ENABLE([visibility], AC_HELP_STRING([--disable-visibility], [Do not use ELF visibility attributes]), [], [enable_visibility=yes])
have_gnuc_visibility=no
if test x"$enable_visibility" != x"no"; then
dnl Check whether the compiler supports the visibility attribute
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Werror"
AC_MSG_CHECKING([whether $CC supports the GNUC visibility attribute])
AC_COMPILE_IFELSE(AC_LANG_SOURCE(
[
void test_default (void);
void test_hidden (void);
void __attribute__ ((visibility("default"))) test_default (void) {}
void __attribute__ ((visibility("hidden"))) test_hidden (void) {}
int main (int argc, char **argv) { test_default (); test_hidden (); return 0; }
]),
[
have_gnuc_visibility=yes
AC_MSG_RESULT([yes])
],
[
AC_MSG_RESULT([no])
])
CFLAGS="$save_CFLAGS"
fi
if test x"$have_gnuc_visibility" = x"yes"; then
CPPFLAGS="$CPPFLAGS -DHAVE_GNUC_VISIBILITY"
fi
AM_CONDITIONAL([HAVE_GNUC_VISIBILITY], [test x"$have_gnuc_visibility" = x"yes"])
dnl *********************************
dnl *** Substitute platform flags ***
dnl *********************************
@ -159,3 +185,13 @@ plugins/tasklist/Makefile
plugins/windowmenu/Makefile
po/Makefile.in
])
dnl ***************************
dnl *** Print configuration ***
dnl ***************************
echo
echo "Build Configuration:"
echo
echo "* Debug Support: $enable_debug"
echo "* GNU Visibility: $have_gnuc_visibility"
echo

27
libxfce4panel/Makefile.am

@ -11,6 +11,8 @@ lib_LTLIBRARIES = \
libxfce4panel.la
libxfce4panel_built_sources = \
libxfce4panel-alias.h \
libxfce4panel-aliasdef.c \
libxfce4panel-marshal.c \
libxfce4panel-marshal.h
@ -63,9 +65,6 @@ libxfce4panel_la_LIBADD = \
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxfce4panel-1.0.pc
EXTRA_DIST = \
libxfce4panel-marshal.list
#
# Build sources
#
@ -77,11 +76,33 @@ libxfce4panel-marshal.c: libxfce4panel-marshal.list Makefile
$(AM_V_GEN) echo "#include <libxfce4panel/libxfce4panel-marshal.h>" > $@ \
&& glib-genmarshal --prefix=_libxfce4panel_marshal --body $< >> $@
libxfce4panel-alias.h: make-libxfce4panel-alias.pl libxfce4panel.symbols
$(AM_V_GEN) $(PERL) $(srcdir)/make-libxfce4panel-alias.pl $(srcdir)/libxfce4panel.symbols > $@
libxfce4panel-aliasdef.c: make-libxfce4panel-alias.pl libxfce4panel.symbols
$(AM_V_GEN) $(PERL) $(srcdir)/make-libxfce4panel-alias.pl -def < $(srcdir)/libxfce4panel.symbols > $@
DISTCLEANFILES = \
$(libxfce4panel_built_sources)
BUILT_SOURCES = \
$(libxfce4panel_built_sources)
CLEANFILES = \
actual-abi \
expected-abi
endif
EXTRA_DIST = \
abicheck.sh \
libxfce4panel.symbols \
libxfce4panel-alias.h \
libxfce4panel-aliasdef.c \
libxfce4panel-marshal.list \
make-libxfce4panel-alias.pl
if HAVE_GNUC_VISIBILITY
TESTS = abicheck.sh
endif
# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:

23
libxfce4panel/abicheck.sh

@ -0,0 +1,23 @@
#!/bin/sh
#
# Copyright (c) 2004 The GLib Development Team.
# Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
cpp -P -DINCLUDE_INTERNAL_SYMBOLS -DINCLUDE_VARIABLES -DALL_FILES ${srcdir:-.}/libxfce4panel.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi
nm -D .libs/libxfce4panel.so | grep " T\|R " | cut -d ' ' -f 3 | grep -v '^_.*' | sort > actual-abi
diff -u expected-abi actual-abi && rm expected-abi actual-abi

128
libxfce4panel/libxfce4panel.symbols

@ -0,0 +1,128 @@
/*-
* Copyright (c) 2009 Nick Schermer <nick@xfce.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* This file lists all exported symbols. It is used to generate
* the libxfce4panel-alias.h/libxfce4panel-aliasdef.c files used
* to avoid PLT entries for internal uses of exported functions (see
* make-libxfce4panel-alias.pl).
*
* Every symbol must be included in the right
* #ifdef IN_HEADER(sym) #endif and
* #ifdef IN_SOURCE(sym) #endif sections.
*/
#ifdef ALL_FILES
#define IN_HEADER(x) 1
#define IN_SOURCE(x) 1
#endif
/* xfce-arrow-button.h */
#if IN_HEADER(__XFCE_ARROW_BUTTON_H__)
#if IN_SOURCE(__XFCE_ARROW_BUTTON_C__)
xfce_arrow_button_get_type G_GNUC_CONST
xfce_arrow_button_new G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
xfce_arrow_button_get_arrow_type
xfce_arrow_button_set_arrow_type
xfce_arrow_button_get_blinking
xfce_arrow_button_set_blinking
#endif
#endif
/* xfce-hvbox.h */
#if IN_HEADER(__XFCE_HVBOX_H__)
#if IN_SOURCE(__XFCE_HVBOX_C__)
xfce_hvbox_get_type G_GNUC_CONST
xfce_hvbox_new G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
xfce_hvbox_set_orientation
xfce_hvbox_get_orientation
#endif
#endif
/* xfce-panel-convenience.h */
#if IN_HEADER(__XFCE_PANEL_CONVENIENCE_H__)
#if IN_SOURCE(__XFCE_PANEL_CONVENIENCE_C__)
xfce_panel_create_button G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
xfce_panel_create_toggle_button G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
xfce_panel_allow_customization
#endif
#endif
/* xfce-panel-image.h */
#if IN_HEADER(__XFCE_PANEL_IMAGE_H__)
#if IN_SOURCE(__XFCE_PANEL_IMAGE_C__)
xfce_panel_image_get_type G_GNUC_CONST
xfce_panel_image_new G_GNUC_MALLOC
xfce_panel_image_new_from_pixbuf G_GNUC_MALLOC
xfce_panel_image_new_from_source G_GNUC_MALLOC
xfce_panel_image_set_from_pixbuf
xfce_panel_image_set_from_source
xfce_panel_image_clear
#endif
#endif
/* xfce-panel-plugin.h */
#if IN_HEADER(__XFCE_PANEL_PLUGIN_H__)
#if IN_SOURCE(__XFCE_PANEL_PLUGIN_C__)
xfce_panel_plugin_get_type G_GNUC_CONST
xfce_panel_plugin_get_name G_GNUC_PURE
xfce_panel_plugin_get_display_name G_GNUC_PURE
xfce_panel_plugin_get_comment G_GNUC_PURE
xfce_panel_plugin_get_unique_id G_GNUC_PURE
xfce_panel_plugin_get_property_base G_GNUC_PURE
xfce_panel_plugin_get_arguments G_GNUC_PURE
xfce_panel_plugin_get_size G_GNUC_PURE
xfce_panel_plugin_get_expand G_GNUC_PURE
xfce_panel_plugin_set_expand
xfce_panel_plugin_get_orientation G_GNUC_PURE
xfce_panel_plugin_get_screen_position G_GNUC_PURE
xfce_panel_plugin_take_window
xfce_panel_plugin_add_action_widget
xfce_panel_plugin_menu_insert_item
xfce_panel_plugin_menu_show_configure
xfce_panel_plugin_menu_show_about
xfce_panel_plugin_block_menu
xfce_panel_plugin_unblock_menu
xfce_panel_plugin_register_menu
xfce_panel_plugin_arrow_type
xfce_panel_plugin_position_widget
xfce_panel_plugin_position_menu
xfce_panel_plugin_focus_widget
xfce_panel_plugin_block_autohide
xfce_panel_plugin_lookup_rc_file G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
xfce_panel_plugin_save_location G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
#endif
#endif
/* xfce-panel-plugin-provider.h */
#if IN_HEADER(__XFCE_PANEL_PLUGIN_PROVIDER_H__)
#if IN_SOURCE(__XFCE_PANEL_PLUGIN_PROVIDER_C__)
xfce_panel_plugin_provider_get_type G_GNUC_CONST
xfce_panel_plugin_provider_get_name
xfce_panel_plugin_provider_get_unique_id
xfce_panel_plugin_provider_set_size
xfce_panel_plugin_provider_set_orientation
xfce_panel_plugin_provider_set_screen_position
xfce_panel_plugin_provider_save
xfce_panel_plugin_provider_emit_signal
xfce_panel_plugin_provider_get_show_configure
xfce_panel_plugin_provider_show_configure
xfce_panel_plugin_provider_get_show_about
xfce_panel_plugin_provider_show_about
xfce_panel_plugin_provider_remove
#endif
#endif

154
libxfce4panel/make-libxfce4panel-alias.pl

@ -0,0 +1,154 @@
#!/usr/bin/env perl -w
#
# Copyright (c) 2004 The GLib Development Team.
# Copyright (c) 2005 Benedikt Meurer <benny@xfce.org>.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
my $option_def = 0;
if (($#ARGV >= 0) && ($ARGV[0] eq "-def"))
{
shift;
$option_def = 1;
}
print <<EOF;
/* Generated by make-libxfce4panel-alias.pl. Do not edit this file. */
#ifdef HAVE_GNUC_VISIBILITY
#include <glib.h>
EOF
if ($option_def)
{
print <<EOF
#undef IN_HEADER
#define IN_HEADER(x) 1
#undef IN_SOURCE
#define IN_SOURCE defined
EOF
}
else
{
print <<EOF
#define IN_HEADER defined
#define IN_SOURCE(x) 1
EOF
}
my $in_comment = 0;
my $in_skipped_section = 0;
while (<>)
{
# ignore empty lines
next if /^\s*$/;
# skip comments
if ($_ =~ /^\s*\/\*/)
{
$in_comment = 1;
}
if ($in_comment)
{
if ($_ =~ /\*\/\s$/)
{
$in_comment = 0;
}
next;
}
# handle ifdefs
if ($_ =~ /^\#endif/)
{
if (!$in_skipped_section)
{
print $_;
}
$in_skipped_section = 0;
next;
}
if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
{
$in_skipped_section = 1;
}
if ($in_skipped_section)
{
next;
}
if ($_ =~ /^\#ifn?def\s+G/)
{
print $_;
next;
}
if ($_ =~ /^\#if.*(IN_SOURCE|IN_HEADER)/)
{
print $_;
next;
}
chop;
my $line = $_;
my @words;
my $attributes = "";
@words = split (/ /, $line);
my $symbol = shift (@words);
chomp ($symbol);
my $alias = "IA__".$symbol;
# Drop any Win32 specific .def file syntax, but keep attributes
foreach $word (@words)
{
$attributes = "$attributes $word" unless $word eq "PRIVATE";
}
if (!$option_def)
{
print <<EOF
extern __typeof ($symbol) $alias __attribute((visibility("hidden")))$attributes;
\#define $symbol $alias
EOF
}
else
{
print <<EOF
\#undef $symbol
extern __typeof ($symbol) $symbol __attribute((alias("$alias"), visibility("default")));
EOF
}
}
print <<EOF;
#endif /* HAVE_GNUC_VISIBILITY */
EOF

10
libxfce4panel/xfce-arrow-button.c

@ -30,8 +30,11 @@
#endif
#include <gtk/gtk.h>
#include <libxfce4panel/libxfce4panel.h>
#include <common/panel-private.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-arrow-button.h>
#include <libxfce4panel/libxfce4panel-alias.h>
#define XFCE_ARROW_BUTTON_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
XFCE_TYPE_ARROW_BUTTON, \
@ -523,3 +526,8 @@ xfce_arrow_button_set_blinking (XfceArrowButton *button,
/* start with a blinking or make sure the button is normal */
xfce_arrow_button_blinking_timeout (button);
}
#define __XFCE_ARROW_BUTTON_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

10
libxfce4panel/xfce-hvbox.c

@ -27,7 +27,10 @@
#endif
#include <gtk/gtk.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-hvbox.h>
#include <libxfce4panel/libxfce4panel-alias.h>
@ -271,3 +274,8 @@ xfce_hvbox_get_orientation (XfceHVBox *hvbox)
return hvbox->orientation;
#endif
}
#define __XFCE_HVBOX_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

9
libxfce4panel/xfce-panel-convenience.c

@ -25,7 +25,9 @@
#include <libxfce4util/libxfce4util.h>
#include <gtk/gtk.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-panel-convenience.h>
#include <libxfce4panel/libxfce4panel-alias.h>
/**
* xfce_panel_create_button:
@ -101,3 +103,8 @@ xfce_panel_allow_customization (void)
return allow_customization;
}
#define __XFCE_PANEL_CONVENIENCE_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

9
libxfce4panel/xfce-panel-image.c

@ -28,7 +28,9 @@
#include <gtk/gtk.h>
#include <common/panel-private.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-panel-image.h>
#include <libxfce4panel/libxfce4panel-alias.h>
/* design limit for the panel, to reduce the uncached pixbuf size */
@ -556,3 +558,8 @@ xfce_panel_image_clear (XfcePanelImage *image)
priv->width = -1;
priv->height = -1;
}
#define __XFCE_PANEL_IMAGE_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

9
libxfce4panel/xfce-panel-plugin-provider.c

@ -23,9 +23,9 @@
#include <gtk/gtk.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-panel-plugin-provider.h>
#include <libxfce4panel/libxfce4panel-alias.h>
enum
@ -201,3 +201,8 @@ xfce_panel_plugin_provider_remove (XfcePanelPluginProvider *provider)
(*XFCE_PANEL_PLUGIN_PROVIDER_GET_IFACE (provider)->remove) (provider);
}
#define __XFCE_PANEL_PLUGIN_PROVIDER_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

11
libxfce4panel/xfce-panel-plugin.c

@ -26,9 +26,11 @@
#include <libxfce4util/libxfce4util.h>
#include <common/panel-private.h>
#include <libxfce4panel/libxfce4panel.h>
#include <libxfce4panel/libxfce4panel-marshal.h>
#include <libxfce4panel/xfce-panel-macros.h>
#include <libxfce4panel/xfce-panel-plugin.h>
#include <libxfce4panel/xfce-panel-plugin-provider.h>
#include <libxfce4panel/libxfce4panel-marshal.h>
#include <libxfce4panel/libxfce4panel-alias.h>
#define XFCE_PANEL_PLUGIN_CONSTRUCTED(plugin) \
PANEL_HAS_FLAG (XFCE_PANEL_PLUGIN (plugin)->priv->flags, \
@ -1928,3 +1930,8 @@ xfce_panel_plugin_save_location (XfcePanelPlugin *plugin,
return path;
}
#define __XFCE_PANEL_PLUGIN_C__
#include <libxfce4panel/libxfce4panel-aliasdef.c>

1
libxfce4panel/xfce-panel-plugin.h

@ -25,6 +25,7 @@
#define __XFCE_PANEL_PLUGIN_H__
#include <gtk/gtk.h>
#include <libxfce4panel/xfce-panel-enums.h>
G_BEGIN_DECLS

Loading…
Cancel
Save