[PATCH] Add a public header for the version number

Kristian Høgsberg hoegsberg at gmail.com
Thu Apr 12 15:10:04 PDT 2012


On Wed, Apr 11, 2012 at 04:59:05PM +0100, Neil Roberts wrote:
> This adds a public header so that applications can get the Wayland
> version number at compile time. This can be used to make applications
> that support compiling against multiple versions of Wayland.
>
> There is a separate installed header called cogl-version.h which gets
> included by both wayland-client.h and wayland-server.h
>
> The canonical place for the version number is the configure.ac script
> which splits it into three separate m4 defines for the major, minor
> and micro version. These are copied into the generated
> wayland-version.h header using AC_SUBST. There is also a string form
> of the complete version number.
>
> The version number is now also automatically copied into the two .pc
> files.
>
> Because the major, minor and micro parts are required it is no longer
> possible to leave the version number as 'master' when building from
> git. Most projects seem to immediately bump the git repo to a fake
> version number (usually odd) after making a release so that there is
> always a relative number that can be used for comparison. This patch
> sets the git version to 0.99.0 under the assumption that the next
> release will be 1.0.0.

That great, thanks.  I changed the version to 0.89.0, since we're
between the 0.85 release and what will probably be the 0.95.0 release.
I also applied on the 0.85 branch with a version of 0.85.1.

Kristian

> ---
>  configure.ac             |   15 ++++++++++++++-
>  src/.gitignore           |    1 +
>  src/Makefile.am          |    5 ++++-
>  src/wayland-client.h     |    1 +
>  src/wayland-client.pc.in |    2 +-
>  src/wayland-server.h     |    1 +
>  src/wayland-server.pc.in |    2 +-
>  src/wayland-version.h.in |   31 +++++++++++++++++++++++++++++++
>  8 files changed, 54 insertions(+), 4 deletions(-)
>  create mode 100644 src/wayland-version.h.in
>
> diff --git a/configure.ac b/configure.ac
> index 194850c..6c1323e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1,10 +1,22 @@
>  AC_PREREQ([2.64])
> +
> +m4_define([wayland_major_version], [0])
> +m4_define([wayland_minor_version], [99])
> +m4_define([wayland_micro_version], [0])
> +m4_define([wayland_version],
> +          [wayland_major_version.wayland_minor_version.wayland_micro_version])
> +
>  AC_INIT([wayland],
> -        [master],
> +        [wayland_version],
>          [https://bugs.freedesktop.org/enter_bug.cgi?product=wayland],
>          [wayland],
>          [http://wayland.freedesktop.org/])
>
> +AC_SUBST([WAYLAND_VERSION_MAJOR], [wayland_major_version])
> +AC_SUBST([WAYLAND_VERSION_MINOR], [wayland_minor_version])
> +AC_SUBST([WAYLAND_VERSION_MICRO], [wayland_micro_version])
> +AC_SUBST([WAYLAND_VERSION], [wayland_version])
> +
>  AC_CONFIG_HEADERS([config.h])
>  AC_CONFIG_MACRO_DIR([m4])
>
> @@ -69,6 +81,7 @@ AC_CONFIG_FILES([Makefile
>  		 src/Makefile
>  		 src/wayland-server.pc
>  		 src/wayland-client.pc
> +		 src/wayland-version.h
>  		 protocol/Makefile
>  		 tests/Makefile])
>  AC_OUTPUT
> diff --git a/src/.gitignore b/src/.gitignore
> index 1813f89..1438b74 100644
> --- a/src/.gitignore
> +++ b/src/.gitignore
> @@ -2,3 +2,4 @@ wayland-scanner
>  wayland-client-protocol.h
>  wayland-protocol.c
>  wayland-server-protocol.h
> +/wayland-version.h
> diff --git a/src/Makefile.am b/src/Makefile.am
> index f356b54..7217236 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -7,7 +7,8 @@ include_HEADERS =				\
>  	wayland-server.h			\
>  	wayland-client-protocol.h		\
>  	wayland-client.h			\
> -	wayland-egl.h
> +	wayland-egl.h				\
> +	wayland-version.h
>
>  libwayland_util_la_SOURCES =			\
>  	connection.c				\
> @@ -61,3 +62,5 @@ BUILT_SOURCES =					\
>  	wayland-protocol.c
>
>  CLEANFILES = $(BUILT_SOURCES)
> +DISTCLEANFILES = wayland-version.h
> +EXTRA_DIST = wayland-version.h.in
> diff --git a/src/wayland-client.h b/src/wayland-client.h
> index b04a7ef..5746e85 100644
> --- a/src/wayland-client.h
> +++ b/src/wayland-client.h
> @@ -24,6 +24,7 @@
>  #define _WAYLAND_CLIENT_H
>
>  #include "wayland-util.h"
> +#include "wayland-version.h"
>
>  #ifdef  __cplusplus
>  extern "C" {
> diff --git a/src/wayland-client.pc.in b/src/wayland-client.pc.in
> index 59a925d..b3df950 100644
> --- a/src/wayland-client.pc.in
> +++ b/src/wayland-client.pc.in
> @@ -5,6 +5,6 @@ includedir=${prefix}/include
>
>  Name: Wayland Client
>  Description: Wayland client side library
> -Version: 0.1
> +Version: @WAYLAND_VERSION@
>  Cflags: -I${includedir}
>  Libs: -L${libdir} -lwayland-client
> diff --git a/src/wayland-server.h b/src/wayland-server.h
> index 6d2ab7c..52f25ea 100644
> --- a/src/wayland-server.h
> +++ b/src/wayland-server.h
> @@ -30,6 +30,7 @@ extern "C" {
>  #include <sys/types.h>
>  #include <stdint.h>
>  #include "wayland-util.h"
> +#include "wayland-version.h"
>
>  enum {
>  	WL_EVENT_READABLE = 0x01,
> diff --git a/src/wayland-server.pc.in b/src/wayland-server.pc.in
> index b317461..8e3214e 100644
> --- a/src/wayland-server.pc.in
> +++ b/src/wayland-server.pc.in
> @@ -5,6 +5,6 @@ includedir=${prefix}/include
>
>  Name: Wayland Server
>  Description: Server side implementation of the Wayland protocol
> -Version: 0.1
> +Version: @WAYLAND_VERSION@
>  Cflags: -I${includedir}
>  Libs: -L${libdir} -lwayland-server
> diff --git a/src/wayland-version.h.in b/src/wayland-version.h.in
> new file mode 100644
> index 0000000..9a746ca
> --- /dev/null
> +++ b/src/wayland-version.h.in
> @@ -0,0 +1,31 @@
> +/*
> + * Copyright © 2012 Intel Corporation
> + *
> + * Permission to use, copy, modify, distribute, and sell this software and its
> + * documentation for any purpose is hereby granted without fee, provided that
> + * the above copyright notice appear in all copies and that both that copyright
> + * notice and this permission notice appear in supporting documentation, and
> + * that the name of the copyright holders not be used in advertising or
> + * publicity pertaining to distribution of the software without specific,
> + * written prior permission.  The copyright holders make no representations
> + * about the suitability of this software for any purpose.  It is provided "as
> + * is" without express or implied warranty.
> + *
> + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
> + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
> + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
> + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
> + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
> + * OF THIS SOFTWARE.
> + */
> +
> +#ifndef WAYLAND_VERSION_H
> +#define WAYLAND_VERSION_H
> +
> +#define WAYLAND_VERSION_MAJOR @WAYLAND_VERSION_MAJOR@
> +#define WAYLAND_VERSION_MINOR @WAYLAND_VERSION_MINOR@
> +#define WAYLAND_VERSION_MICRO @WAYLAND_VERSION_MICRO@
> +#define WAYLAND_VERSION "@WAYLAND_VERSION@"
> +
> +#endif
> --
> 1.7.3.16.g9464b
>
> _______________________________________________
> 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