diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2017-05-26 12:48:20 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2017-05-26 12:54:02 +0100 |
commit | ed9e0a39129ba3e675933d1a1a4552a0a5fbbfc7 (patch) | |
tree | a30564d60a88d28a6877af456db4a425444e9dfe | |
parent | 8d1fcc8e4c1939d52fb7ae46c368ac803c6770d7 (diff) | |
download | clutter-gtk-ed9e0a39129ba3e675933d1a1a4552a0a5fbbfc7.tar.gz |
build: Use compiler annotations for visible symbols
Instead of using libtool, we should explicitly annotate the exported
symbols in the library API.
-rw-r--r-- | clutter-gtk/Makefile.am | 5 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-actor.c | 4 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-actor.h | 6 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-embed.c | 2 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-embed.h | 6 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-texture.h | 7 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-util.c | 2 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-util.h | 4 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-version.h.in | 5 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-window.c | 2 | ||||
-rw-r--r-- | clutter-gtk/gtk-clutter-window.h | 4 | ||||
-rw-r--r-- | configure.ac | 30 |
12 files changed, 65 insertions, 12 deletions
diff --git a/clutter-gtk/Makefile.am b/clutter-gtk/Makefile.am index 9dd9750..f84bf2c 100644 --- a/clutter-gtk/Makefile.am +++ b/clutter-gtk/Makefile.am @@ -13,6 +13,7 @@ AM_CPPFLAGS = \ -DPREFIX=\""$(prefix)"\" \ -DLIBDIR=\""$(libdir)"\" \ -DCLUTTER_GTK_COMPILATION \ + $(CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS) \ $(CLUTTER_GTK_DEPRECATED_CFLAGS) \ $(CLUTTER_GTK_DEBUG_CFLAGS) \ $(NULL) @@ -46,9 +47,7 @@ source_h_private = \ # please, keep the list sorted alphabetically libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_SOURCES = $(source_c) $(source_h) $(source_h_private) libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_LIBADD = $(CLUTTER_GTK_DEPS_LIBS) $(LIBM) -libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_LDFLAGS = \ - $(CLUTTER_GTK_LT_LDFLAGS) \ - -export-symbols-regex "^gtk_clutter.*" +libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_LDFLAGS = $(CLUTTER_GTK_LT_LDFLAGS) cluttergtkheadersdir = $(includedir)/clutter-gtk-@CLUTTER_GTK_API_VERSION@/clutter-gtk diff --git a/clutter-gtk/gtk-clutter-actor.c b/clutter-gtk/gtk-clutter-actor.c index bb1c1f0..3d11e14 100644 --- a/clutter-gtk/gtk-clutter-actor.c +++ b/clutter-gtk/gtk-clutter-actor.c @@ -35,11 +35,9 @@ * use #GtkClutterActor in a #ClutterStage handled by Clutter alone. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif -#include "gtk-clutter-actor.h" +#include "gtk-clutter-actor-internal.h" #include "gtk-clutter-offscreen.h" #include <math.h> diff --git a/clutter-gtk/gtk-clutter-actor.h b/clutter-gtk/gtk-clutter-actor.h index 603304f..2dd9725 100644 --- a/clutter-gtk/gtk-clutter-actor.h +++ b/clutter-gtk/gtk-clutter-actor.h @@ -30,6 +30,7 @@ #include <gtk/gtk.h> #include <clutter/clutter.h> +#include <clutter-gtk/gtk-clutter-version.h> G_BEGIN_DECLS @@ -76,10 +77,15 @@ struct _GtkClutterActorClass void (*_clutter_gtk_reserved6) (void); }; +CLUTTER_GTK_EXTERN GType gtk_clutter_actor_get_type (void) G_GNUC_CONST; +CLUTTER_GTK_EXTERN ClutterActor *gtk_clutter_actor_new (void); +CLUTTER_GTK_EXTERN ClutterActor *gtk_clutter_actor_new_with_contents (GtkWidget *contents); +CLUTTER_GTK_EXTERN GtkWidget * gtk_clutter_actor_get_contents (GtkClutterActor *actor); +CLUTTER_GTK_EXTERN GtkWidget * gtk_clutter_actor_get_widget (GtkClutterActor *actor); G_END_DECLS diff --git a/clutter-gtk/gtk-clutter-embed.c b/clutter-gtk/gtk-clutter-embed.c index 521afc9..0baa3d1 100644 --- a/clutter-gtk/gtk-clutter-embed.c +++ b/clutter-gtk/gtk-clutter-embed.c @@ -69,9 +69,7 @@ * subclassing #GtkClutterEmbed, to avoid breaking internal state. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include <math.h> #include <string.h> diff --git a/clutter-gtk/gtk-clutter-embed.h b/clutter-gtk/gtk-clutter-embed.h index e81ff17..3fcb41d 100644 --- a/clutter-gtk/gtk-clutter-embed.h +++ b/clutter-gtk/gtk-clutter-embed.h @@ -29,6 +29,7 @@ #include <gtk/gtk.h> #include <clutter/clutter.h> +#include <clutter-gtk/gtk-clutter-version.h> G_BEGIN_DECLS @@ -81,12 +82,17 @@ struct _GtkClutterEmbedClass void (*_clutter_gtk_reserved6) (void); }; +CLUTTER_GTK_EXTERN GType gtk_clutter_embed_get_type (void) G_GNUC_CONST; +CLUTTER_GTK_EXTERN GtkWidget * gtk_clutter_embed_new (void); +CLUTTER_GTK_EXTERN ClutterActor *gtk_clutter_embed_get_stage (GtkClutterEmbed *embed); +CLUTTER_GTK_EXTERN void gtk_clutter_embed_set_use_layout_size (GtkClutterEmbed *embed, gboolean use_layout_size); +CLUTTER_GTK_EXTERN gboolean gtk_clutter_embed_get_use_layout_size (GtkClutterEmbed *embed); G_END_DECLS diff --git a/clutter-gtk/gtk-clutter-texture.h b/clutter-gtk/gtk-clutter-texture.h index a44c722..656c5b4 100644 --- a/clutter-gtk/gtk-clutter-texture.h +++ b/clutter-gtk/gtk-clutter-texture.h @@ -29,6 +29,7 @@ #include <gdk-pixbuf/gdk-pixbuf.h> #include <gtk/gtk.h> #include <clutter/clutter.h> +#include <clutter-gtk/gtk-clutter-version.h> G_BEGIN_DECLS @@ -91,19 +92,25 @@ struct _GtkClutterTextureClass ClutterTextureClass parent_class; }; +CLUTTER_GTK_EXTERN GQuark gtk_clutter_texture_error_quark (void); +CLUTTER_GTK_EXTERN GType gtk_clutter_texture_get_type (void) G_GNUC_CONST; +CLUTTER_GTK_EXTERN ClutterActor * gtk_clutter_texture_new (void); +CLUTTER_GTK_EXTERN gboolean gtk_clutter_texture_set_from_pixbuf (GtkClutterTexture *texture, GdkPixbuf *pixbuf, GError **error); +CLUTTER_GTK_EXTERN gboolean gtk_clutter_texture_set_from_stock (GtkClutterTexture *texture, GtkWidget *widget, const gchar *stock_id, GtkIconSize icon_size, GError **error); +CLUTTER_GTK_EXTERN gboolean gtk_clutter_texture_set_from_icon_name (GtkClutterTexture *texture, GtkWidget *widget, const gchar *icon_name, diff --git a/clutter-gtk/gtk-clutter-util.c b/clutter-gtk/gtk-clutter-util.c index f4acfdf..40a6919 100644 --- a/clutter-gtk/gtk-clutter-util.c +++ b/clutter-gtk/gtk-clutter-util.c @@ -1,6 +1,4 @@ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include "gtk-clutter-util.h" #include "gtk-clutter-offscreen.h" diff --git a/clutter-gtk/gtk-clutter-util.h b/clutter-gtk/gtk-clutter-util.h index 6621a2a..94227e8 100644 --- a/clutter-gtk/gtk-clutter-util.h +++ b/clutter-gtk/gtk-clutter-util.h @@ -28,17 +28,21 @@ #include <gtk/gtk.h> #include <clutter/clutter.h> +#include <clutter-gtk/gtk-clutter-version.h> G_BEGIN_DECLS +CLUTTER_GTK_EXTERN ClutterInitError gtk_clutter_init (int *argc, char ***argv) G_GNUC_WARN_UNUSED_RESULT; +CLUTTER_GTK_EXTERN ClutterInitError gtk_clutter_init_with_args (int *argc, char ***argv, const char *parameter_string, GOptionEntry *entries, const char *translation_domain, GError **error) G_GNUC_WARN_UNUSED_RESULT; +CLUTTER_GTK_EXTERN GOptionGroup *gtk_clutter_get_option_group (void); G_END_DECLS diff --git a/clutter-gtk/gtk-clutter-version.h.in b/clutter-gtk/gtk-clutter-version.h.in index ac20bba..eff81ff 100644 --- a/clutter-gtk/gtk-clutter-version.h.in +++ b/clutter-gtk/gtk-clutter-version.h.in @@ -102,6 +102,11 @@ G_BEGIN_DECLS (CLUTTER_GTK_MAJOR_VERSION == (major) && CLUTTER_GTK_MINOR_VERSION > (minor)) || \ (CLUTTER_GTK_MAJOR_VERSION == (major) && CLUTTER_GTK_MINOR_VERSION == (minor) && CLUTTER_GTK_MICRO_VERSION >= (micro))) +#ifndef CLUTTER_GTK_EXTERN +#define CLUTTER_GTK_EXTERN extern +#endif + +CLUTTER_GTK_EXTERN gboolean gtk_clutter_check_version (guint major, guint minor, guint micro); diff --git a/clutter-gtk/gtk-clutter-window.c b/clutter-gtk/gtk-clutter-window.c index bfe5c95..3b85126 100644 --- a/clutter-gtk/gtk-clutter-window.c +++ b/clutter-gtk/gtk-clutter-window.c @@ -34,9 +34,7 @@ * gtk_clutter_window_get_stage(). */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include "gtk-clutter-window.h" #include "gtk-clutter-actor.h" diff --git a/clutter-gtk/gtk-clutter-window.h b/clutter-gtk/gtk-clutter-window.h index 8f5349c..dc0e36c 100644 --- a/clutter-gtk/gtk-clutter-window.h +++ b/clutter-gtk/gtk-clutter-window.h @@ -28,6 +28,7 @@ #include <gtk/gtk.h> #include <clutter/clutter.h> +#include <clutter-gtk/gtk-clutter-version.h> G_BEGIN_DECLS @@ -80,9 +81,12 @@ struct _GtkClutterWindowClass void (*_clutter_gtk_reserved6) (void); }; +CLUTTER_GTK_EXTERN GType gtk_clutter_window_get_type (void) G_GNUC_CONST; +CLUTTER_GTK_EXTERN GtkWidget * gtk_clutter_window_new (void); +CLUTTER_GTK_EXTERN ClutterActor *gtk_clutter_window_get_stage (GtkClutterWindow *window); G_END_DECLS diff --git a/configure.ac b/configure.ac index a5cc8a7..1d73705 100644 --- a/configure.ac +++ b/configure.ac @@ -89,6 +89,36 @@ PKG_CHECK_MODULES([CLUTTER_GTK_DEPS], [clutter-1.0 >= clutter_req_version gtk+-3 AC_SUBST([CLUTTER_GTK_DEPS_CFLAGS]) AC_SUBST([CLUTTER_GTK_DEPS_LIBS]) +CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS="" +case "$host" in + *-*-mingw*) + dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport) + AC_DEFINE([CLUTTER_GTK_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern], + [defines how to decorate public symbols while building]) + CFLAGS="${CFLAGS} -fvisibility=hidden" + ;; + *) + dnl on other compilers, check if we can do -fvisibility=hidden + SAVED_CFLAGS="${CFLAGS}" + CFLAGS="-fvisibility=hidden" + AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) + AC_TRY_COMPILE([], [return 0], + AC_MSG_RESULT(yes) + enable_fvisibility_hidden=yes, + AC_MSG_RESULT(no) + enable_fvisibility_hidden=no) + CFLAGS="${SAVED_CFLAGS}" + + AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [ + AC_DEFINE([CLUTTER_GTK_EXTERN], [__attribute__((visibility("default"))) extern], + [defines how to decorate public symbols while building]) + CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden" + ]) + ;; +esac +AC_SUBST(CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS) + + m4_define([deprecated_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [no], |