kumquat-buildroot/package/wpebackend-fdo/0001-Improve-how-CMake-looks-for-wayland-scanner.patch
Adrian Perez de Castro 99a8ddd465 package/wpebackend-fdo: bump to version 1.2.0
WPE WebKit 2.24.x requires WPEBackend-fdo 1.2.x, as indicated at:

  https://wpewebkit.org/release/schedule/#compatible-components

The added patch makes the build system pick the version of
wayland-scanner from $(HOST_DIR), instead of the target version.

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
Acked-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-05-26 14:34:56 +02:00

138 lines
4.7 KiB
Diff

From a03431fb562176d25919e76e0baf52a0ba3752c4 Mon Sep 17 00:00:00 2001
From: Adrian Perez de Castro <aperez@igalia.com>
Date: Wed, 15 May 2019 20:54:10 +0300
Subject: [PATCH] Improve how CMake looks for wayland-scanner
This improves FindWaylandScanner.cmake to allow it to find the
wayland-scanner tool in any of the following ways (in order of
preference):
1. By passing -DWAYLAND_SCANNER=path/to/wayland-scanner to CMake.
2. Looking for wayland-scanner in the current $PATH
3. Figuring out the location from pkg-config (as before).
This will make the package friendlier to cross-compilation, and
then build systems can either prepend their locations for host
tools to $PATH (covered by 2. above), or they can specify the
tool path in the command line (covered by 1. above) if they need
to be more specific.
The motivation for this patch is to avoid kludges like the following:
https://patchwork.ozlabs.org/comment/2172010/
Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
[Upstream status: https://github.com/Igalia/WPEBackend-fdo/pull/39]
---
cmake/FindWaylandScanner.cmake | 93 ++++++++++++++++++++++++++++++----
1 file changed, 84 insertions(+), 9 deletions(-)
diff --git a/cmake/FindWaylandScanner.cmake b/cmake/FindWaylandScanner.cmake
index 09a92b2..7130c10 100644
--- a/cmake/FindWaylandScanner.cmake
+++ b/cmake/FindWaylandScanner.cmake
@@ -28,15 +28,90 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-find_package(PkgConfig)
-pkg_check_modules(WAYLAND_SCANNER wayland-scanner)
-
-pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)
-if (WAYLAND_SCANNER_VERSION VERSION_LESS "1.15")
- set(WAYLAND_SCANNER_CODE_ARG "code")
-else ()
- set(WAYLAND_SCANNER_CODE_ARG "private-code")
+set(WAYLAND_SCANNER "" CACHE FILEPATH "Path to the wayland-scanner tool")
+
+function(wayland_scanner_get_version _result _exepath)
+ set(_version "")
+ set(_status -1)
+ if (EXISTS "${_exepath}")
+ execute_process(
+ COMMAND "${_exepath}" "--version"
+ RESULT_VARIABLE _status
+ ERROR_VARIABLE _version
+ ERROR_STRIP_TRAILING_WHITESPACE
+ OUTPUT_QUIET
+ )
+ if (_status EQUAL 0)
+ string(REPLACE "wayland-scanner" "" _version "${_version}")
+ string(STRIP "${_version}" _version)
+ endif ()
+ endif ()
+ if (_version)
+ set(${_result} "${_version}" PARENT_SCOPE)
+ else ()
+ unset(${_result} PARENT_SCOPE)
+ endif ()
+endfunction()
+
+#
+# Method 1: If -DWAYLAND_SCANNER=... was passed on the command line,
+# check whether we can extract the version number from it.
+# Otherwise: unset the variable, to try other methods below.
+#
+if (WAYLAND_SCANNER)
+ wayland_scanner_get_version(WAYLAND_SCANNER_VERSION "${WAYLAND_SCANNER}")
+ if (NOT WAYLAND_SCANNER_VERSION)
+ set(WAYLAND_SCANNER "")
+ endif ()
+endif ()
+
+#
+# Method 2: Try to find an executable program in the current $PATH.
+#
+if (NOT WAYLAND_SCANNER)
+ find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
+ if (WAYLAND_SCANNER_EXECUTABLE)
+ wayland_scanner_get_version(WAYLAND_SCANNER_VERSION "${WAYLAND_SCANNER_EXECUTABLE}")
+ if (WAYLAND_SCANNER_VERSION)
+ set(WAYLAND_SCANNER "${WAYLAND_SCANNER_EXECUTABLE}")
+ endif ()
+ endif ()
+ unset(WAYLAND_SCANNER_EXECUTABLE)
+endif ()
+
+#
+# Method 3: Try to find the executable using pkg-config, in case the
+# tool was installed in a non-standard location.
+#
+if (NOT DEFINED WAYLAND_SCANNER OR NOT WAYLAND_SCANNER)
+ find_package(PkgConfig)
+ pkg_check_modules(WAYLAND_SCANNER_PC wayland-scanner)
+ if (WAYLAND_SCANNER_PC_FOUND)
+ pkg_get_variable(WAYLAND_SCANNER_PC_EXECUTABLE wayland-scanner wayland_scanner)
+ if (WAYLAND_SCANNER_PC_EXECUTABLE)
+ wayland_scanner_get_version(WAYLAND_SCANNER_VERSION "${WAYLAND_SCANNER_PC_EXECUTABLE}")
+ if (WAYLAND_SCANNER_VERSION)
+ set(WAYLAND_SCANNER "${WAYLAND_SCANNER_PC_EXECUTABLE}")
+ endif ()
+ endif ()
+ endif ()
+ unset(WAYLAND_SCANNER_PC)
+ unset(WAYLAND_SCANNER_PC_EXECUTABLE)
+endif ()
+
+if (WAYLAND_SCANNER_VERSION)
+ if (WAYLAND_SCANNER_VERSION VERSION_LESS "1.15")
+ set(WAYLAND_SCANNER_CODE_ARG "code")
+ else ()
+ set(WAYLAND_SCANNER_CODE_ARG "private-code")
+ endif ()
endif ()
include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_SCANNER DEFAULT_MSG WAYLAND_SCANNER)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ WAYLAND_SCANNER
+ DEFAULT_MSG
+ WAYLAND_SCANNER
+ WAYLAND_SCANNER_VERSION
+ WAYLAND_SCANNER_CODE_ARG
+)
--
2.21.0