[PATCH] Install header files and pkg-config file for external modules

Kristian Høgsberg hoegsberg at gmail.com
Fri Feb 22 09:37:49 PST 2013


On Fri, Feb 22, 2013 at 11:23 AM, Eoff, Ullysses A
<ullysses.a.eoff at intel.com> wrote:
> Can we apply this feature to the 1.0.x tree, too?

It's on the 1.0 branch now.

> U. Artie
>
>>-----Original Message-----
>>From: wayland-devel-
>>bounces+ullysses.a.eoff=intel.com at lists.freedesktop.org [mailto:wayland-
>>devel-bounces+ullysses.a.eoff=intel.com at lists.freedesktop.org] On Behalf
>>Of Kristian Høgsberg
>>Sent: Monday, February 18, 2013 12:26 PM
>>To: David Herrmann
>>Cc: Kristian Høgsberg; wayland-devel at lists.freedesktop.org
>>Subject: Re: [PATCH] Install header files and pkg-config file for external
>>modules
>>
>>On Sat, Feb 16, 2013 at 10:59:56PM +0100, David Herrmann wrote:
>>> Hi Kristian
>>>
>>> Just some random comments:
>>>
>>> On Sat, Feb 16, 2013 at 2:53 AM, Kristian Høgsberg <krh at bitplanet.net>
>>wrote:
>>> > This patch installs the three header files that define the compositor
>>> > plugin interface as well as a pkg-config file.  This allows
>>> > building weston plugins outside the weston tree.  We currently don't
>>make
>>> > any guarantees about the plugin API/ABI except that within a stable
>>> > branch we won't break it.
>>> > ---
>>> >  configure.ac             | 17 +++++++++++++++--
>>> >  src/Makefile.am          | 11 +++++++++++
>>> >  src/compositor.c         |  9 +++++++++
>>> >  src/compositor.h         |  8 ++++++--
>>> >  src/xwayland/Makefile.am |  1 +
>>> >  tests/Makefile.am        |  6 +++++-
>>>
>>> Same as Pekka: version.h.in and weston.pc.in missing
>>
>>Ah, both files missing, thanks.
>>
>>> >  6 files changed, 47 insertions(+), 5 deletions(-)
>>> >
>>> > diff --git a/configure.ac b/configure.ac
>>> > index 32fbb4b..4f2a9e0 100644
>>> > --- a/configure.ac
>>> > +++ b/configure.ac
>>> > @@ -1,10 +1,21 @@
>>> > +m4_define([weston_major_version], [1])
>>> > +m4_define([weston_minor_version], [0])
>>> > +m4_define([weston_micro_version], [90])
>>> > +m4_define([weston_version],
>>> > +
>>[weston_major_version.weston_minor_version.weston_micro_version])
>>> > +
>>> >  AC_PREREQ([2.64])
>>> >  AC_INIT([weston],
>>> > -        [1.0.90],
>>> > -
>>[https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component
>>=weston&version=1.0.90],
>>> > +        [weston_version],
>>> > +
>>[https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component
>>=weston&version=weston_version],
>>> >          [weston],
>>> >          [http://wayland.freedesktop.org/])
>>> >
>>> > +AC_SUBST([WESTON_VERSION_MAJOR], [weston_major_version])
>>> > +AC_SUBST([WESTON_VERSION_MINOR], [weston_minor_version])
>>> > +AC_SUBST([WESTON_VERSION_MICRO], [weston_micro_version])
>>> > +AC_SUBST([WESTON_VERSION], [weston_version])
>>> > +
>>> >  AC_CONFIG_HEADERS([config.h])
>>> >
>>> >  AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
>>> > @@ -294,6 +305,8 @@ AC_CONFIG_FILES([Makefile
>>> >                  shared/Makefile
>>> >                  src/Makefile
>>> >                  src/xwayland/Makefile
>>> > +                src/version.h
>>> > +                src/weston.pc
>>> >                  clients/Makefile
>>> >                  wcap/Makefile
>>> >                  data/Makefile
>>> > diff --git a/src/Makefile.am b/src/Makefile.am
>>> > index cfb072e..ce1aad3 100644
>>> > --- a/src/Makefile.am
>>> > +++ b/src/Makefile.am
>>> > @@ -2,6 +2,7 @@ bin_PROGRAMS = weston                           \
>>> >         $(weston_launch)
>>> >
>>> >  AM_CPPFLAGS =                                  \
>>> > +       -I$(top_srcdir)/shared                  \
>>> >         -DDATADIR='"$(datadir)"'                \
>>> >         -DMODULEDIR='"$(moduledir)"'            \
>>> >         -DLIBEXECDIR='"$(libexecdir)"'          \
>>> > @@ -77,6 +78,16 @@ endif
>>> >
>>> >  endif # BUILD_WESTON_LAUNCH
>>> >
>>> > +pkgconfigdir = $(libdir)/pkgconfig
>>> > +pkgconfig_DATA = weston.pc
>>> > +
>>> > +westonincludedir = @includedir@/weston
>>>
>>> $(includedir) instead of @includedir at . Otherwise "make prefix=/bla"
>>> doesn't work.
>>
>>Good point.
>>
>>> > +westoninclude_HEADERS =                                \
>>> > +       version.h                               \
>>> > +       compositor.h                            \
>>> > +       ../shared/matrix.h                      \
>>> > +       ../shared/config-parser.h
>>> > +
>>> >  moduledir = @libdir@/weston
>>>
>>> This should also be $(libdir), even though it's not related to this patch.
>>
>>Yeah, I'll fix that.
>>
>>> >  module_LTLIBRARIES =                           \
>>> >         $(desktop_shell)                        \
>>> > diff --git a/src/compositor.c b/src/compositor.c
>>> > index 63fe793..d1fd2e5 100644
>>> > --- a/src/compositor.c
>>> > +++ b/src/compositor.c
>>> > @@ -53,6 +53,7 @@
>>> >  #include "compositor.h"
>>> >  #include "../shared/os-compatibility.h"
>>> >  #include "git-version.h"
>>> > +#include "version.h"
>>> >
>>> >  static struct wl_list child_process_list;
>>> >  static struct weston_compositor *segv_compositor;
>>> > @@ -3041,6 +3042,14 @@ weston_compositor_shutdown(struct
>>weston_compositor *ec)
>>> >         wl_event_loop_destroy(ec->input_loop);
>>> >  }
>>> >
>>> > +WL_EXPORT void
>>> > +weston_version(int *major, int *minor, int *micro)
>>> > +{
>>> > +       *major = WESTON_VERSION_MAJOR;
>>> > +       *minor = WESTON_VERSION_MINOR;
>>> > +       *micro = WESTON_VERSION_MICRO;
>>>
>>> How does that work? I cannot see any AC_DEFINE() in configure.ac. I
>>> don't think AC_SUBST() defines C macros. Haven't tested it, though.
>>
> >From the missing version.h.in that we list in AC_CONFIG_FILES:
>>
>>#define WESTON_VERSION_MAJOR @WESTON_VERSION_MAJOR@
>>#define WESTON_VERSION_MINOR @WESTON_VERSION_MINOR@
>>#define WESTON_VERSION_MICRO @WESTON_VERSION_MICRO@
>>#define WESTON_VERSION "@WESTON_VERSION@"
>>
>>> > +}
>>> > +
>>> >  static int on_term_signal(int signal_number, void *data)
>>> >  {
>>> >         struct wl_display *display = data;
>>> > diff --git a/src/compositor.h b/src/compositor.h
>>> > index c0694e8..c39abe3 100644
>>> > --- a/src/compositor.h
>>> > +++ b/src/compositor.h
>>> > @@ -28,8 +28,9 @@
>>> >  #include <xkbcommon/xkbcommon.h>
>>> >  #include <wayland-server.h>
>>> >
>>> > -#include "../shared/matrix.h"
>>> > -#include "../shared/config-parser.h"
>>> > +#include "version.h"
>>> > +#include "matrix.h"
>>> > +#include "config-parser.h"
>>> >
>>> >  #define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
>>> >
>>> > @@ -496,6 +497,9 @@ enum weston_key_state_update {
>>> >  };
>>> >
>>> >  void
>>> > +weston_version(int *major, int *minor, int *micro);
>>> > +
>>> > +void
>>> >  weston_surface_update_transform(struct weston_surface *surface);
>>> >
>>> >  void
>>> > diff --git a/src/xwayland/Makefile.am b/src/xwayland/Makefile.am
>>> > index 8f3bddd..77124ff 100644
>>> > --- a/src/xwayland/Makefile.am
>>> > +++ b/src/xwayland/Makefile.am
>>> > @@ -1,4 +1,5 @@
>>> >  AM_CPPFLAGS =                                  \
>>> > +       -I$(top_srcdir)/shared                  \
>>> >         -DDATADIR='"$(datadir)"'                \
>>> >         -DMODULEDIR='"$(moduledir)"'            \
>>> >         -DLIBEXECDIR='"$(libexecdir)"'          \
>>> > diff --git a/tests/Makefile.am b/tests/Makefile.am
>>> > index 11cd4ec..f2960f1 100644
>>> > --- a/tests/Makefile.am
>>> > +++ b/tests/Makefile.am
>>> > @@ -32,7 +32,11 @@ check_PROGRAMS =                     \
>>> >         $(weston_tests)
>>> >
>>> >  AM_CFLAGS = $(GCC_CFLAGS)
>>> > -AM_CPPFLAGS = -I$(top_srcdir)/src -DUNIT_TEST
>>$(COMPOSITOR_CFLAGS)
>>> > +AM_CPPFLAGS =                                  \
>>> > +       -I$(top_srcdir)/src                     \
>>> > +       -I$(top_srcdir)/shared                  \
>>> > +       -DUNIT_TEST                             \
>>> > +       $(COMPOSITOR_CFLAGS)
>>> >  AM_LDFLAGS = -module -avoid-version -rpath $(libdir)
>>> >
>>> >  surface_global_test_la_SOURCES = surface-global-test.c
>>>
>>> I just checked configure.ac, we define -fvisibility=hidden, hence, we
>>> _really_ need to add __attribute__((visibility("default"))) ==
>>> WL_EXPORT to all functions that are declared in the headers.
>>
>>We do that in wayland-util.h from the wayland headers.
>>
>>Thanks for reviewing,
>>Kristian
>>_______________________________________________
>>wayland-devel mailing list
>>wayland-devel at lists.freedesktop.org
>>http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list