[PATCH] Install header files and pkg-config file for external modules
Eoff, Ullysses A
ullysses.a.eoff at intel.com
Fri Feb 22 09:40:02 PST 2013
>-----Original Message-----
>From: Kristian Høgsberg [mailto:hoegsberg at gmail.com]
>Sent: Friday, February 22, 2013 9:38 AM
>To: Eoff, Ullysses A
>Cc: David Herrmann; wayland-devel at lists.freedesktop.org
>Subject: Re: [PATCH] Install header files and pkg-config file for external
>modules
>
>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.
>
Cool beans!! Thanks!
>> 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&compon
>ent
>>>=weston&version=1.0.90],
>>>> > + [weston_version],
>>>> > +
>>>[https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&compon
>ent
>>>=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