diff -Nuar a/cmake/VersioningUtils.cmake b/cmake/VersioningUtils.cmake --- a/cmake/VersioningUtils.cmake 2021-01-18 17:40:23.000000000 +0300 +++ b/cmake/VersioningUtils.cmake 2021-02-28 16:01:31.749319740 +0300 @@ -1,3 +1,12 @@ +function(READ_VERSION_HEADER var_prefix def_regex file_path) + file(STRINGS "${file_path}" lines) + foreach (line ${lines}) + if (line MATCHES "^#define[ \t]+(${def_regex})[ \t]+([0-9]+)$") + set("${var_prefix}${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}" PARENT_SCOPE) + endif() + endforeach() +endfunction() + macro(SET_PROJECT_VERSION major minor micro) set(PROJECT_VERSION_MAJOR "${major}") set(PROJECT_VERSION_MINOR "${minor}") diff -Nuar a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt 2021-01-18 17:40:23.000000000 +0300 +++ b/CMakeLists.txt 2021-02-28 16:01:00.215322016 +0300 @@ -4,7 +4,8 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(VersioningUtils) -SET_PROJECT_VERSION(1 9 1) +READ_VERSION_HEADER("" "WPE_[A-Z]+_VERSION" "${CMAKE_SOURCE_DIR}/include/wpe/libwpe-version.h") +SET_PROJECT_VERSION(${WPE_MAJOR_VERSION} ${WPE_MINOR_VERSION} ${WPE_MICRO_VERSION}) set(WPE_API_VERSION "1.0") # Before making a release, the LT_VERSION string should be modified. @@ -41,10 +42,6 @@ endif () endforeach () -set(DERIVED_SOURCES_DIR "${CMAKE_BINARY_DIR}/DerivedSources/wpe") -configure_file(include/wpe/version.h.cmake ${DERIVED_SOURCES_DIR}/version.h @ONLY) -configure_file(include/wpe/version-deprecated.h.cmake ${DERIVED_SOURCES_DIR}/version-deprecated.h @ONLY) - include(DistTargets) include(GNUInstallDirs) @@ -52,8 +49,9 @@ find_package(Libxkbcommon REQUIRED) set(WPE_PUBLIC_HEADERS - ${DERIVED_SOURCES_DIR}/version.h - ${DERIVED_SOURCES_DIR}/version-deprecated.h + include/wpe/libwpe-version.h + include/wpe/version.h + include/wpe/version-deprecated.h include/wpe/export.h include/wpe/input.h include/wpe/keysyms.h @@ -81,7 +79,6 @@ target_include_directories(wpe PRIVATE "include" "src" - ${DERIVED_SOURCES_DIR}/.. $ ) target_compile_definitions(wpe PRIVATE @@ -145,10 +142,8 @@ --sitemap=${CMAKE_SOURCE_DIR}/docs/sitemap.txt --output=${CMAKE_CURRENT_BINARY_DIR}/Documentation/ --c-sources "${CMAKE_SOURCE_DIR}/include/wpe/*.h" - "${DERIVED_SOURCES_DIR}/version.h" - "${DERIVED_SOURCES_DIR}/version-deprecated.h" --extra-c-flags=-DWPE_COMPILATION=1 - --c-include-directories ${CMAKE_SOURCE_DIR}/include ${DERIVED_SOURCES_DIR} + --c-include-directories ${CMAKE_SOURCE_DIR}/include --c-smart-index ) ELSE() diff -Nuar a/include/wpe/libwpe-version.h b/include/wpe/libwpe-version.h --- a/include/wpe/libwpe-version.h 1970-01-01 02:00:00.000000000 +0200 +++ b/include/wpe/libwpe-version.h 2021-02-28 16:01:59.205317759 +0300 @@ -0,0 +1,15 @@ +/* + * libwpe-version.h + * Copyright (C) 2021 Adrian Perez de Castro + * + * Distributed under terms of the MIT license. + */ + +#ifndef LIBWPE_VERSION_H +#define LIBWPE_VERSION_H + +#define WPE_MAJOR_VERSION 1 +#define WPE_MINOR_VERSION 9 +#define WPE_MICRO_VERSION 1 + +#endif /* !LIBWPE_VERSION_H */ diff -Nuar a/include/wpe/meson.build b/include/wpe/meson.build --- a/include/wpe/meson.build 2021-01-18 17:40:23.000000000 +0300 +++ b/include/wpe/meson.build 2021-02-28 16:02:31.313315442 +0300 @@ -2,27 +2,17 @@ 'export.h', 'input.h', 'keysyms.h', + 'libwpe-version.h', 'loader.h', 'pasteboard.h', 'renderer-backend-egl.h', 'renderer-host.h', + 'version.h', + 'version-deprecated.h', 'view-backend.h', 'wpe-egl.h', 'wpe.h', - - # Generated API headers. - configure_file( - input: 'version.h.cmake', - output: 'version.h', - configuration: version_info, - ), - configure_file( - input: 'version-deprecated.h.cmake', - output: 'version-deprecated.h', - configuration: version_info, - ), ] install_headers(api_headers, subdir: join_paths('wpe-' + api_version, 'wpe'), ) - diff -Nuar a/include/wpe/version-deprecated.h b/include/wpe/version-deprecated.h --- a/include/wpe/version-deprecated.h 1970-01-01 02:00:00.000000000 +0200 +++ b/include/wpe/version-deprecated.h 2021-02-28 16:02:59.227313428 +0300 @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2018 Igalia S.L. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__WPE_H_INSIDE__) && !defined(WPE_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef wpe_version_deprecated_h +#define wpe_version_deprecated_h + +#if defined(WPE_COMPILATION) +#include "export.h" +#endif + +#include "libwpe-version.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WPE_BACKEND_MAJOR_VERSION WPE_MAJOR_VERSION +#define WPE_BACKEND_MINOR_VERSION WPE_MINOR_VERSION +#define WPE_BACKEND_MICRO_VERSION WPE_MICRO_VERSION + +#define WPE_BACKEND_CHECK_VERSION(major, minor, micro) \ + (WPE_BACKEND_MAJOR_VERSION > (major) || \ + (WPE_BACKEND_MAJOR_VERSION == (major) && WPE_BACKEND_MINOR_VERSION > (minor)) || \ + (WPE_BACKEND_MAJOR_VERSION == (major) && WPE_BACKEND_MINOR_VERSION == (minor) && \ + WPE_BACKEND_MICRO_VERSION >= (micro))) + +/** + * wpe_backend_get_major_version: + * + * Returns: Major version of the `libwpe` library. + * + * Deprecated: Since `libwpe` version 1.0.0, use wpe_get_major_version() + * instead. + */ +WPE_EXPORT unsigned wpe_backend_get_major_version(void); + +/** + * wpe_backend_get_minor_version: + * + * Returns: Minor version of the `libwpe` library. + * + * Deprecated: Since `libwpe` version 1.0.0, use wpe_get_minor_version() + * instead. + */ +WPE_EXPORT unsigned wpe_backend_get_minor_version(void); + +/** + * wpe_backend_get_micro_version: + * + * Returns: Micro version of the `libwpe` library. + * + * Deprecated: Since `libwpe` version 1.0.0, use wpe_get_micro_version() + * instead. + */ +WPE_EXPORT unsigned wpe_backend_get_micro_version(void); + +#ifdef __cplusplus +} +#endif + +#endif /* wpe_version_deprecated_h */ diff -Nuar a/include/wpe/version.h b/include/wpe/version.h --- a/include/wpe/version.h 1970-01-01 02:00:00.000000000 +0200 +++ b/include/wpe/version.h 2021-02-28 16:03:30.351311182 +0300 @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2018 Igalia S.L. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !defined(__WPE_H_INSIDE__) && !defined(WPE_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef wpe_version_h +#define wpe_version_h + +/** + * SECTION:version + * @short_description: Library Version + * @title: Version + * @symbols: + * - wpe_backend_get_major_version + * - wpe_backend_get_minor_version + * - wpe_backend_get_micro_version + */ + +#if defined(WPE_COMPILATION) +#include "export.h" +#endif + +#include "libwpe-version.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define WPE_CHECK_VERSION(major, minor, micro) \ + (WPE_MAJOR_VERSION > (major) || \ + (WPE_MAJOR_VERSION == (major) && WPE_MINOR_VERSION > (minor)) || \ + (WPE_MAJOR_VERSION == (major) && WPE_MINOR_VERSION == (minor) && \ + WPE_MICRO_VERSION >= (micro))) + +/** + * wpe_get_major_version: + * + * Returns: Major version of the `libwpe` library. + */ +WPE_EXPORT unsigned wpe_get_major_version(void); + +/** + * wpe_get_minor_version: + * + * Returns: Minor version of the `libwpe` library. + */ +WPE_EXPORT unsigned wpe_get_minor_version(void); + +/** + * wpe_get_micro_version: + * + * Returns: Micro version of the `libwpe` library. + */ +WPE_EXPORT unsigned wpe_get_micro_version(void); + +#ifdef __cplusplus +} +#endif + +#endif /* wpe_version_h */ diff -Nuar a/include/wpe/wpe.h b/include/wpe/wpe.h --- a/include/wpe/wpe.h 2021-01-18 17:40:23.000000000 +0300 +++ b/include/wpe/wpe.h 2021-02-28 16:04:05.245308665 +0300 @@ -40,9 +40,10 @@ #include "loader.h" #include "pasteboard.h" #include "renderer-host.h" +#include "view-backend.h" +#include "libwpe-version.h" #include "version.h" #include "version-deprecated.h" -#include "view-backend.h" #undef __WPE_H_INSIDE__ diff -Nuar a/meson.build b/meson.build --- a/meson.build 2021-01-18 17:40:23.000000000 +0300 +++ b/meson.build 2021-02-28 16:04:55.565305034 +0300 @@ -7,7 +7,7 @@ 'cpp_std=c++11', ], license: 'BSD-2-Clause', - version: '1.9.1', + version: run_command(join_paths('scripts', 'version.py')).stdout().strip(), ) # This refers to the API level provided. This is modified only with major, diff -Nuar a/scripts/version.py b/scripts/version.py --- a/scripts/version.py 1970-01-01 02:00:00.000000000 +0200 +++ b/scripts/version.py 2021-02-28 16:05:47.436301291 +0300 @@ -0,0 +1,23 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +# vim:fenc=utf-8 +# +# Copyright © 2021 Igalia S.L. +# +# Distributed under terms of the MIT license. + +from os import environ, path +import re + +version = {} +version_re = re.compile(r"^#define\s+WPE_([A-Z]+)_VERSION\s+(\d+)$") +version_file = path.join(environ["MESON_SOURCE_ROOT"], + "include", "wpe", "libwpe-version.h") + +with open(version_file, "r") as f: + for line in f.readlines(): + m = version_re.match(line) + if m: + version[m[1]] = m[2] + +print("{}.{}.{}".format(version["MAJOR"], version["MINOR"], version["MICRO"])) diff -Nuar a/src/version.c b/src/version.c --- a/src/version.c 2021-01-18 17:40:23.000000000 +0300 +++ b/src/version.c 2021-02-28 16:06:13.622299402 +0300 @@ -24,8 +24,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "wpe/version.h" -#include "wpe/version-deprecated.h" +#include "../include/wpe/version.h" +#include "../include/wpe/version-deprecated.h" unsigned wpe_get_major_version(void)