diff options
author | Joshua Watt <jpewhacker@gmail.com> | 2019-11-12 13:33:51 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-11-14 13:14:25 +0000 |
commit | 1dafcd8c699fa77564bd42ab5597ed640a4853e4 (patch) | |
tree | 49042b1cecd5d96877e7ad0e4e3e6582aba61f8f /meta/recipes-graphics/wayland/wayland | |
parent | 1cb3c64b70e0b16aabd2fe9cd6012564165ac476 (diff) | |
download | openembedded-core-contrib-1dafcd8c699fa77564bd42ab5597ed640a4853e4.tar.gz |
wayland: Fix wayland-scanner build for MinGW
Applies 2 patches to fix the wayland-scanner build for MinGW (e.g.
nativesdk-wayland)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/wayland/wayland')
2 files changed, 216 insertions, 0 deletions
diff --git a/meta/recipes-graphics/wayland/wayland/0001-scanner-Add-configure-check-for-strndup.patch b/meta/recipes-graphics/wayland/wayland/0001-scanner-Add-configure-check-for-strndup.patch new file mode 100644 index 0000000000..c4435875ad --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/0001-scanner-Add-configure-check-for-strndup.patch @@ -0,0 +1,50 @@ +From 3c8b4467a1ca229e72fb5223787ed400a19c65c0 Mon Sep 17 00:00:00 2001 +From: Joshua Watt <JPEWhacker@gmail.com> +Date: Fri, 25 Oct 2019 21:03:23 -0500 +Subject: [PATCH] scanner: Add configure check for strndup + +Some platforms may not have strndup() (e.g. MinGW), so provide a +equivalent implementation if it's not found. + +Upstream-Status: Accepted [4a1f348c20157db7bd7c759fdeb23fbe8729c571] +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> +--- + configure.ac | 2 +- + src/scanner.c | 11 +++++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8d56f2b..1c99e21 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -63,7 +63,7 @@ fi + AC_SUBST(GCC_CFLAGS) + + AC_CHECK_HEADERS([sys/prctl.h]) +-AC_CHECK_FUNCS([accept4 mkostemp posix_fallocate prctl]) ++AC_CHECK_FUNCS([accept4 mkostemp posix_fallocate prctl strndup]) + + AC_ARG_ENABLE([libraries], + [AC_HELP_STRING([--disable-libraries], +diff --git a/src/scanner.c b/src/scanner.c +index a94be5d..27004bc 100644 +--- a/src/scanner.c ++++ b/src/scanner.c +@@ -916,6 +916,17 @@ verify_arguments(struct parse_context *ctx, + + } + ++#ifndef HAVE_STRNDUP ++char * ++strndup(const char *s, size_t size) ++{ ++ char *r = malloc(size + 1); ++ strncpy(r, s, size); ++ r[size] = '\0'; ++ return r; ++} ++#endif ++ + static void + end_element(void *data, const XML_Char *name) + { diff --git a/meta/recipes-graphics/wayland/wayland/0002-Move-wl_priv_signal-to-wayland-server-private.h.patch b/meta/recipes-graphics/wayland/wayland/0002-Move-wl_priv_signal-to-wayland-server-private.h.patch new file mode 100644 index 0000000000..b05b875abb --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/0002-Move-wl_priv_signal-to-wayland-server-private.h.patch @@ -0,0 +1,166 @@ +From e746f3bf7c8bb2f5dcf9e93edffc23b56eff12d0 Mon Sep 17 00:00:00 2001 +From: Joshua Watt <JPEWhacker@gmail.com> +Date: Tue, 5 Nov 2019 09:09:50 -0600 +Subject: [PATCH] Move wl_priv_signal to wayland-server-private.h + +Including wayland-server-core.h in wayland-private.h is problematic +because wayland-private.h is included by wayland-scanner which should be +able to build against non-POSIX platforms (e.g. MinGW). The only reason +that wayland-server-core.h was included in wayland-private.h was for the +wl_private_signal definitions, so move those to a +wayland-server-private.h file that can be included by both +wayland-server.c and the tests. + +Upstream-Status: Accepted [e7d88f35eb89cf0cc77cbddd834cacc63683a9cc] +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> +--- + Makefile.am | 3 +- + src/wayland-private.h | 22 +-------------- + src/wayland-server-private.h | 53 ++++++++++++++++++++++++++++++++++++ + src/wayland-server.c | 1 + + tests/newsignal-test.c | 2 +- + 5 files changed, 58 insertions(+), 23 deletions(-) + create mode 100644 src/wayland-server-private.h + +diff --git a/Makefile.am b/Makefile.am +index f47d055..026d981 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -56,7 +56,8 @@ libwayland_private_la_SOURCES = \ + src/connection.c \ + src/wayland-os.c \ + src/wayland-os.h \ +- src/wayland-private.h ++ src/wayland-private.h \ ++ src/wayland-server-private.h + + include_HEADERS = \ + src/wayland-util.h \ +diff --git a/src/wayland-private.h b/src/wayland-private.h +index 29516ec..dc7d12f 100644 +--- a/src/wayland-private.h ++++ b/src/wayland-private.h +@@ -31,11 +31,11 @@ + #include <stdarg.h> + #include <stdlib.h> + #include <stdint.h> ++#include <stdbool.h> + + #define WL_HIDE_DEPRECATED 1 + + #include "wayland-util.h" +-#include "wayland-server-core.h" + + /* Invalid memory address */ + #define WL_ARRAY_POISON_PTR (void *) 4 +@@ -236,26 +236,6 @@ zalloc(size_t s) + return calloc(1, s); + } + +-struct wl_priv_signal { +- struct wl_list listener_list; +- struct wl_list emit_list; +-}; +- +-void +-wl_priv_signal_init(struct wl_priv_signal *signal); +- +-void +-wl_priv_signal_add(struct wl_priv_signal *signal, struct wl_listener *listener); +- +-struct wl_listener * +-wl_priv_signal_get(struct wl_priv_signal *signal, wl_notify_func_t notify); +- +-void +-wl_priv_signal_emit(struct wl_priv_signal *signal, void *data); +- +-void +-wl_priv_signal_final_emit(struct wl_priv_signal *signal, void *data); +- + void + wl_connection_close_fds_in(struct wl_connection *connection, int max); + +diff --git a/src/wayland-server-private.h b/src/wayland-server-private.h +new file mode 100644 +index 0000000..23fa458 +--- /dev/null ++++ b/src/wayland-server-private.h +@@ -0,0 +1,53 @@ ++/* ++ * Copyright © 2008-2011 Kristian Høgsberg ++ * Copyright © 2011 Intel Corporation ++ * Copyright © 2013 Jason Ekstrand ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files (the ++ * "Software"), to deal in the Software without restriction, including ++ * without limitation the rights to use, copy, modify, merge, publish, ++ * distribute, sublicense, and/or sell copies of the Software, and to ++ * permit persons to whom the Software is furnished to do so, subject to ++ * the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the ++ * next paragraph) shall be included in all copies or substantial ++ * portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ * SOFTWARE. ++ */ ++ ++#ifndef WAYLAND_SERVER_PRIVATE_H ++#define WAYLAND_SERVER_PRIVATE_H ++ ++#include "wayland-server-core.h" ++ ++struct wl_priv_signal { ++ struct wl_list listener_list; ++ struct wl_list emit_list; ++}; ++ ++void ++wl_priv_signal_init(struct wl_priv_signal *signal); ++ ++void ++wl_priv_signal_add(struct wl_priv_signal *signal, struct wl_listener *listener); ++ ++struct wl_listener * ++wl_priv_signal_get(struct wl_priv_signal *signal, wl_notify_func_t notify); ++ ++void ++wl_priv_signal_emit(struct wl_priv_signal *signal, void *data); ++ ++void ++wl_priv_signal_final_emit(struct wl_priv_signal *signal, void *data); ++ ++#endif +diff --git a/src/wayland-server.c b/src/wayland-server.c +index 19f6a76..d6f0206 100644 +--- a/src/wayland-server.c ++++ b/src/wayland-server.c +@@ -45,6 +45,7 @@ + + #include "wayland-util.h" + #include "wayland-private.h" ++#include "wayland-server-private.h" + #include "wayland-server.h" + #include "wayland-os.h" + +diff --git a/tests/newsignal-test.c b/tests/newsignal-test.c +index 47c429b..f3a7bd9 100644 +--- a/tests/newsignal-test.c ++++ b/tests/newsignal-test.c +@@ -26,7 +26,7 @@ + #include <assert.h> + + #include "test-runner.h" +-#include "wayland-private.h" ++#include "wayland-server-private.h" + + static void + signal_notify(struct wl_listener *listener, void *data) |