diff --git a/clients/calibrator.c b/clients/calibrator.c
index be65d9bdc7a5452c0365adf7eccf58ce7929f874..f890bc80fc17d28e1eee2fa1538eaafe9606cd41 100644
--- a/clients/calibrator.c
+++ b/clients/calibrator.c
@@ -38,7 +38,7 @@
 #include <wayland-client.h>
 
 #include "window.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/matrix.h>
 
 /* Our points for the calibration must be not be on a line */
diff --git a/clients/clickdot.c b/clients/clickdot.c
index 4a946df8b8216d4f8437922025d514126bdf98e5..d8ed0ef4e3e26a59f65eaaca713e928f2a38bac7 100644
--- a/clients/clickdot.c
+++ b/clients/clickdot.c
@@ -40,7 +40,7 @@
 #include <wayland-client.h>
 
 #include "window.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 
 struct clickdot {
diff --git a/clients/cliptest.c b/clients/cliptest.c
index bdff3db0791f0119d55cd755e0f112f85ccffd63..c37530fe141153ffe44a6426c33b8d62a2fb2e43 100644
--- a/clients/cliptest.c
+++ b/clients/cliptest.c
@@ -56,7 +56,7 @@
 
 #include "libweston/matrix.h"
 #include "libweston/vertex-clipping.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "window.h"
 
diff --git a/clients/color.c b/clients/color.c
index edb815c7cf4f877d5bf22a070f99c6af63939c4b..bd46134e7c01781515926e9504d8098f7b21eb53 100644
--- a/clients/color.c
+++ b/clients/color.c
@@ -27,7 +27,7 @@
 #include <errno.h>
 
 #include "color-management-v1-client-protocol.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "single-pixel-buffer-v1-client-protocol.h"
 #include "viewporter-client-protocol.h"
diff --git a/clients/constraints.c b/clients/constraints.c
index e53389f4ceed51d2e7c339fb522a619328c92796..3b2195eadd5ce41e60a4d59849e2c29ca09892fe 100644
--- a/clients/constraints.c
+++ b/clients/constraints.c
@@ -30,7 +30,7 @@
 #include <linux/input.h>
 #include <wayland-cursor.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "shared/os-compatibility.h"
 #include "shared/cairo-util.h"
diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c
index e06613ff156a3893a9341b3ba103cb1ea339bf6c..68d7c2e1106ce00755fc7291ea936db1644d3e37 100644
--- a/clients/desktop-shell.c
+++ b/clients/desktop-shell.c
@@ -44,7 +44,7 @@
 
 #include <libweston/config-parser.h>
 #include <libweston/zalloc.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "shared/cairo-util.h"
 #include "shared/file-util.h"
diff --git a/clients/dnd.c b/clients/dnd.c
index f36100d1c428c0c62b2f84c5b0a4c831d1ef52a2..206d7fb0047390a838f9552993272ab5b0aab272 100644
--- a/clients/dnd.c
+++ b/clients/dnd.c
@@ -42,7 +42,7 @@
 
 #include "window.h"
 #include "shared/cairo-util.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 
 struct dnd_drag;
diff --git a/clients/editor.c b/clients/editor.c
index ed67fd16c51d24d0d84a720b67ca9c502b677ffc..b349f8102e2707a3267b4ecf86b02ccd7495fe58 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -39,7 +39,7 @@
 #include <pango/pangocairo.h>
 
 #include <libweston/config-parser.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "window.h"
 #include "text-input-unstable-v1-client-protocol.h"
diff --git a/clients/eventdemo.c b/clients/eventdemo.c
index 822cb98dfc2802aa0617609d116f5118f525bb20..910f7f13a5341a1162f7dc261ed9d8b563d568d2 100644
--- a/clients/eventdemo.c
+++ b/clients/eventdemo.c
@@ -42,7 +42,7 @@
 
 #include <cairo.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "window.h"
 
 /** window title */
diff --git a/clients/image.c b/clients/image.c
index b48d7f4b5ccaa4b912d266e2a8cc18b1dc250719..5cb39b10730ee6af35c7b4c7f82021ae5ebba312 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -43,7 +43,7 @@
 
 #include "window.h"
 #include "shared/cairo-util.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/image-loader.h"
 
 bool verbose;
diff --git a/clients/ivi-shell-user-interface.c b/clients/ivi-shell-user-interface.c
index bcb61c0b1466bcdc7c6380586b14ab751e34780a..bbc2ff22f9bfdc358374eaf5937dec85460f057a 100644
--- a/clients/ivi-shell-user-interface.c
+++ b/clients/ivi-shell-user-interface.c
@@ -40,7 +40,7 @@
 #include <wayland-client-protocol.h>
 #include "shared/cairo-util.h"
 #include <libweston/config-parser.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/xalloc.h"
 #include <libweston/zalloc.h>
diff --git a/clients/presentation-shm.c b/clients/presentation-shm.c
index 2bb0aa1ce262705af24f9237999db562217dad24..2945b5cff7b359b1b45b1fd8ab30d0272f432f1c 100644
--- a/clients/presentation-shm.c
+++ b/clients/presentation-shm.c
@@ -38,7 +38,7 @@
 #include <errno.h>
 
 #include <wayland-client.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/zalloc.h>
 #include "shared/timespec-util.h"
 #include "shared/os-compatibility.h"
diff --git a/clients/simple-dmabuf-egl.c b/clients/simple-dmabuf-egl.c
index 9989497e7b7d33ad8d04ca079e21179e4908a441..e374925bf8624197ddd127ef2f8327b31f1d4558 100644
--- a/clients/simple-dmabuf-egl.c
+++ b/clients/simple-dmabuf-egl.c
@@ -43,7 +43,7 @@
 #include <gbm.h>
 
 #include <wayland-client.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/platform.h"
 #include "shared/weston-drm-fourcc.h"
 #include <libweston/zalloc.h>
diff --git a/clients/simple-dmabuf-feedback.c b/clients/simple-dmabuf-feedback.c
index 0ba5ae430833e3db619f447ea58c064870196b24..133d17252c405247b762e98d745023bb2ea8e652 100644
--- a/clients/simple-dmabuf-feedback.c
+++ b/clients/simple-dmabuf-feedback.c
@@ -34,7 +34,7 @@
 #include <sys/mman.h>
 #include <time.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/platform.h"
 #include "shared/weston-drm-fourcc.h"
 #include <libweston/zalloc.h>
diff --git a/clients/simple-dmabuf-v4l.c b/clients/simple-dmabuf-v4l.c
index 8ed3a0b5338c406a5c1517203ef19290baab4d0d..d19090f37094a531791704928d3ff92134578fef 100644
--- a/clients/simple-dmabuf-v4l.c
+++ b/clients/simple-dmabuf-v4l.c
@@ -46,13 +46,14 @@
 
 #include <wayland-client.h>
 #include <wayland-cursor.h>
+
 #include <libweston/zalloc.h>
+#include <libweston/helpers.h>
+
 #include "xdg-shell-client-protocol.h"
 #include "linux-dmabuf-unstable-v1-client-protocol.h"
 #include "weston-direct-display-client-protocol.h"
 #include "viewporter-client-protocol.h"
-
-#include "shared/helpers.h"
 #include "shared/weston-drm-fourcc.h"
 
 #define CLEAR(x) memset(&(x), 0, sizeof(x))
diff --git a/clients/simple-egl.c b/clients/simple-egl.c
index fadeac34c23fce0056d4ca79c3366cf5f687668b..ce74da13a5949ec7110d4b930d10ebac59af35d6 100644
--- a/clients/simple-egl.c
+++ b/clients/simple-egl.c
@@ -51,7 +51,7 @@
 #include <unistd.h>
 
 #include <libweston/matrix.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/platform.h"
 #include "shared/weston-egl-ext.h"
 #include "shared/xalloc.h"
diff --git a/clients/simple-im.c b/clients/simple-im.c
index ef9a604c7d0365cd041c1131d5db2276b57046a7..33309e52c492eaedb762d79ff50e3d0c3ae9891a 100644
--- a/clients/simple-im.c
+++ b/clients/simple-im.c
@@ -36,7 +36,7 @@
 
 #include "window.h"
 #include "input-method-unstable-v1-client-protocol.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 enum compose_state {
 	state_normal,
diff --git a/clients/simple-touch.c b/clients/simple-touch.c
index e32013161375fe85a1ff40904faaab56fd800856..de5ef7f2713b6ccd1937fa2306e99a06b4dddc34 100644
--- a/clients/simple-touch.c
+++ b/clients/simple-touch.c
@@ -36,7 +36,7 @@
 #include <sys/mman.h>
 
 #include <wayland-client.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "shared/os-compatibility.h"
 
diff --git a/clients/stacking.c b/clients/stacking.c
index 680255960e2e1b723bbdb85cd3942cd55eda656a..d4dda3b07e0e86335f3caf2728b16402ce7926eb 100644
--- a/clients/stacking.c
+++ b/clients/stacking.c
@@ -36,7 +36,7 @@
 #include <wayland-util.h>
 
 #include "shared/xalloc.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "window.h"
 
 struct stacking_window {
diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c
index 530ee196db87098e10d9106b867608f2487a04af..039440585c5ae8388cf1bb89fb6fd948beee8eba 100644
--- a/clients/subsurfaces.c
+++ b/clients/subsurfaces.c
@@ -42,7 +42,7 @@
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include <libweston/zalloc.h>
 #include "window.h"
diff --git a/clients/terminal.c b/clients/terminal.c
index 871391acf56c2162cb67f90eee1a8354015c3b5e..50b1bde8453af322446a5ff06a0bcdf4da387579 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -46,7 +46,7 @@
 #include <wayland-client.h>
 
 #include <libweston/config-parser.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "window.h"
 
diff --git a/clients/touch-calibrator.c b/clients/touch-calibrator.c
index 49dd9206b2b4e8fb5a9480dcde766b88c28610ec..96c2ec286a7f9e6d6bf9bf8cee3c8ede7b65c6a7 100644
--- a/clients/touch-calibrator.c
+++ b/clients/touch-calibrator.c
@@ -39,7 +39,7 @@
 #include <wayland-client.h>
 
 #include "clients/window.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/matrix.h>
 
 #include "weston-touch-calibration-client-protocol.h"
diff --git a/clients/weston-debug.c b/clients/weston-debug.c
index 187fc8749141a7f3d352d6f53fc21334eef724b1..08d1cb5a6a1607d8204e9662bb003ccda860092d 100644
--- a/clients/weston-debug.c
+++ b/clients/weston-debug.c
@@ -41,7 +41,7 @@
 
 #include <wayland-client.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/zalloc.h>
 #include "weston-debug-client-protocol.h"
 
diff --git a/clients/window.c b/clients/window.c
index 0867133461c4742263a921defae35ec1f454d73f..e2d69eb2a90bf28e60bccb93d7189ddbc67d25b9 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -52,7 +52,7 @@
 #include <linux/input.h>
 #include <wayland-client.h>
 #include "shared/cairo-util.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include <libweston/zalloc.h>
 #include "xdg-shell-client-protocol.h"
diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c
index 9b5d3b20a494e6a658f903d7ed057861be763acf..5d8902665cc4dedcd9a61426e8220b6218d0e67e 100644
--- a/desktop-shell/input-panel.c
+++ b/desktop-shell/input-panel.c
@@ -30,9 +30,10 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <libweston/helpers.h>
+
 #include "shell.h"
 #include "input-method-unstable-v1-server-protocol.h"
-#include "shared/helpers.h"
 
 struct input_panel_surface {
 	struct wl_resource *resource;
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 6b2bf4862817851b6d5505f77683ce54c1fc9803..7fdb048662e2be0a106a28064fd8817ecdebe692 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -36,14 +36,15 @@
 #include <math.h>
 #include <sys/types.h>
 
+#include <libweston/config-parser.h>
+#include <libweston/helpers.h>
+#include <libweston/shell-utils.h>
+#include <libweston/desktop.h>
+
 #include "shell.h"
 #include "frontend/weston.h"
 #include "weston-desktop-shell-server-protocol.h"
-#include <libweston/config-parser.h>
-#include "shared/helpers.h"
 #include "shared/timespec-util.h"
-#include <libweston/shell-utils.h>
-#include <libweston/desktop.h>
 
 #define DEFAULT_NUM_WORKSPACES 1
 #define DEFAULT_WORKSPACE_CHANGE_ANIMATION_LENGTH 200
diff --git a/frontend/config-helpers.c b/frontend/config-helpers.c
index 21a0512eb46acf525bce6c336451e1499323c4f9..c4ed2ee7ce8b9e23bfa3b3cbd5acead03c0d0a79 100644
--- a/frontend/config-helpers.c
+++ b/frontend/config-helpers.c
@@ -30,7 +30,7 @@
 #include <libweston/libweston.h>
 #include <libweston/config-parser.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "weston-private.h"
 
 struct {
diff --git a/frontend/main.c b/frontend/main.c
index c27c011d9d122d94e740cd0611c05bb151c065ba..042b6f3fcfa8d016c3bcbd482bf03acbc6b1a17c 100644
--- a/frontend/main.c
+++ b/frontend/main.c
@@ -47,15 +47,16 @@
 #include <sys/time.h>
 #include <linux/limits.h>
 
-#include "weston.h"
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+#include <libweston/version.h>
+
+#include "weston.h"
 #include "shared/os-compatibility.h"
-#include "shared/helpers.h"
 #include "shared/process-util.h"
 #include "shared/string-helpers.h"
 #include "shared/xalloc.h"
 #include "git-version.h"
-#include <libweston/version.h>
 #include "weston.h"
 #include "weston-private.h"
 
diff --git a/frontend/screen-share.c b/frontend/screen-share.c
index 305bab186d465b81ede2de7e82ca5c869c8950d9..12702b1cbf8dd9606a4a41c517ddde9b46dd0b8b 100644
--- a/frontend/screen-share.c
+++ b/frontend/screen-share.c
@@ -41,14 +41,14 @@
 #include <wayland-client.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+#include <libweston/shell-utils.h>
 #include "backend.h"
 #include "libweston-internal.h"
 #include "pixel-formats.h"
 #include "weston.h"
-#include "shared/helpers.h"
 #include "shared/os-compatibility.h"
 #include "shared/timespec-util.h"
-#include <libweston/shell-utils.h>
 #include "fullscreen-shell-unstable-v1-client-protocol.h"
 
 struct shared_output {
diff --git a/frontend/systemd-notify.c b/frontend/systemd-notify.c
index 61196d8182224427479dbe88676c0379d11eab24..0fd17fdc1484b2b719c3bc7e4c025678f0b616e4 100644
--- a/frontend/systemd-notify.c
+++ b/frontend/systemd-notify.c
@@ -30,10 +30,11 @@
 #include <sys/socket.h>
 #include <wayland-server.h>
 
-#include "shared/helpers.h"
-#include "shared/string-helpers.h"
-#include <libweston/zalloc.h>
 #include <libweston/libweston.h>
+#include <libweston/zalloc.h>
+#include <libweston/helpers.h>
+
+#include "shared/string-helpers.h"
 #include "weston.h"
 
 struct systemd_notifier {
diff --git a/frontend/text-backend.c b/frontend/text-backend.c
index 73a1eda30c48069b30697949686ef2134b0d6db7..9399fcd8b3a92ad0ca223ece40c0419a74c63412 100644
--- a/frontend/text-backend.c
+++ b/frontend/text-backend.c
@@ -34,10 +34,11 @@
 #include <time.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+
 #include "weston.h"
 #include "text-input-unstable-v1-server-protocol.h"
 #include "input-method-unstable-v1-server-protocol.h"
-#include "shared/helpers.h"
 #include "shared/timespec-util.h"
 #include "shared/xalloc.h"
 
diff --git a/frontend/weston-screenshooter.c b/frontend/weston-screenshooter.c
index 5499b3d0fbf89edbc6dcc70ce799b05166fdd598..1867a9c78ef7c3430f098d684b495c5c268acd21 100644
--- a/frontend/weston-screenshooter.c
+++ b/frontend/weston-screenshooter.c
@@ -30,8 +30,8 @@
 #include <linux/input.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 #include "weston.h"
-#include "shared/helpers.h"
 
 struct screenshooter {
 	struct weston_compositor *ec;
diff --git a/frontend/xwayland.c b/frontend/xwayland.c
index 8d80a048b62f4fecf8a3ea8cb0b0127b3d005630..919d4d152c200de88dc4e39a63a78ab49086ab1d 100644
--- a/frontend/xwayland.c
+++ b/frontend/xwayland.c
@@ -35,7 +35,7 @@
 #include <libweston/libweston.h>
 #include "frontend/weston.h"
 #include <libweston/xwayland-api.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/process-util.h"
 #include "shared/string-helpers.h"
diff --git a/fullscreen-shell/fullscreen-shell.c b/fullscreen-shell/fullscreen-shell.c
index 733e1a3e3e751622135dce71839caf300db5a27e..a3f8695dcbb09f20761440e852e10d9c389f0dfa 100644
--- a/fullscreen-shell/fullscreen-shell.c
+++ b/fullscreen-shell/fullscreen-shell.c
@@ -34,10 +34,11 @@
 #include <assert.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+#include <libweston/shell-utils.h>
+
 #include "frontend/weston.h"
 #include "fullscreen-shell-unstable-v1-server-protocol.h"
-#include "shared/helpers.h"
-#include <libweston/shell-utils.h>
 
 struct fullscreen_shell {
 	struct wl_client *client;
diff --git a/shared/helpers.h b/include/libweston/helpers.h
similarity index 99%
rename from shared/helpers.h
rename to include/libweston/helpers.h
index 7ff60d03ee4d65fe9b3cfd8df681d47685ea2171..12a8fb50a8a2875f138770f70b824a7a1479ffae 100644
--- a/shared/helpers.h
+++ b/include/libweston/helpers.h
@@ -19,10 +19,8 @@
  * SOFTWARE.
  */
 
-#ifndef WESTON_HELPERS_H
-#define WESTON_HELPERS_H
-
-#include "config.h"
+#ifndef LIBWESTON_HELPERS_H
+#define LIBWESTON_HELPERS_H
 
 #include <stdint.h>
 
diff --git a/include/libweston/meson.build b/include/libweston/meson.build
index fc1070c5f3949e7fcd4286c9b9e1aaba9da80161..f87ed4a49730ac4a01d09ea5c533b6a1c6c3dc33 100644
--- a/include/libweston/meson.build
+++ b/include/libweston/meson.build
@@ -10,6 +10,7 @@ install_headers(
 	'remoting-plugin.h',
 	'pipewire-plugin.h',
 	'shell-utils.h',
+	'helpers.h',
 	subdir: dir_include_libweston_install
 )
 
diff --git a/include/libweston/windowed-output-api.h b/include/libweston/windowed-output-api.h
index 840cd2b58f9658eab9214d362bd138416b9e05a2..9acf2d513696ad493aa9a61fbd3f6a1447da0572 100644
--- a/include/libweston/windowed-output-api.h
+++ b/include/libweston/windowed-output-api.h
@@ -31,6 +31,7 @@ extern "C" {
 #endif
 
 #include <libweston/plugin-registry.h>
+#include <libweston/helpers.h>
 
 struct weston_compositor;
 struct weston_output;
diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c
index 4e774f216a9d19a6434418cbe7ac97ffed264a36..943eec6cb6b6dde64cacc6c6a68c83cf80c2aa0e 100644
--- a/ivi-shell/hmi-controller.c
+++ b/ivi-shell/hmi-controller.c
@@ -63,7 +63,7 @@
 
 #include "ivi-layout-export.h"
 #include "ivi-hmi-controller-server-protocol.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "frontend/weston.h"
 
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index 54a8842c4c2792727d39f99a5ed727930ec4a3e8..304016f49054656a20cdb23521f94bd03e5f2240 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -68,7 +68,7 @@
 #include "ivi-layout-private.h"
 #include "ivi-layout-shell.h"
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/xalloc.h"
 
diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c
index 17ed7cf89d6f7d8e4b008408b0820dab80958aee..da0a0e1f7843b20a319dc2d9c7bc227527c1012f 100644
--- a/ivi-shell/ivi-shell.c
+++ b/ivi-shell/ivi-shell.c
@@ -42,13 +42,14 @@
 #include <assert.h>
 #include <linux/input.h>
 
+#include <libweston/libweston.h>
+#include <libweston/helpers.h>
+
 #include "input-method-unstable-v1-server-protocol.h"
 #include "ivi-shell.h"
 #include "ivi-application-server-protocol.h"
 #include "ivi-layout-private.h"
 #include "ivi-layout-shell.h"
-#include "libweston/libweston.h"
-#include "shared/helpers.h"
 #include "shared/xalloc.h"
 #include "frontend/weston.h"
 
diff --git a/kiosk-shell/kiosk-shell-grab.c b/kiosk-shell/kiosk-shell-grab.c
index bff706fb3d8de194b8528bd80e3a9c759e3773d7..afb7bb4721cbaf66b76de12b65c4ea7795b47470 100644
--- a/kiosk-shell/kiosk-shell-grab.c
+++ b/kiosk-shell/kiosk-shell-grab.c
@@ -24,7 +24,7 @@
  */
 
 #include "kiosk-shell-grab.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 struct kiosk_shell_grab {
 	struct kiosk_shell_surface *shsurf;
diff --git a/kiosk-shell/kiosk-shell.c b/kiosk-shell/kiosk-shell.c
index 099478d9ae6e310dbbc55769153a0bdc9bb429b8..a4887bf069d2c13a451b63a67c2c2efb91c4138c 100644
--- a/kiosk-shell/kiosk-shell.c
+++ b/kiosk-shell/kiosk-shell.c
@@ -29,14 +29,14 @@
 #include <stdint.h>
 #include <string.h>
 
+#include <libweston/helpers.h>
+#include <libweston/shell-utils.h>
+#include <libweston/xwayland-api.h>
+
 #include "kiosk-shell.h"
 #include "kiosk-shell-grab.h"
 #include "frontend/weston.h"
 #include "libweston/libweston.h"
-#include "shared/helpers.h"
-#include <libweston/shell-utils.h>
-
-#include <libweston/xwayland-api.h>
 
 static struct kiosk_shell_surface *
 get_kiosk_shell_surface(struct weston_surface *surface)
diff --git a/libweston/animation.c b/libweston/animation.c
index 3d8cc7a20d762423089328fce64eb1370b8a4b7e..47be2d4ac038f99e7093d586d6031092190e22a0 100644
--- a/libweston/animation.c
+++ b/libweston/animation.c
@@ -37,7 +37,7 @@
 
 #include <libweston/libweston.h>
 #include "libweston-internal.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 
 WL_EXPORT void
diff --git a/libweston/backend-drm/drm-internal.h b/libweston/backend-drm/drm-internal.h
index 6118e1a722f62de0c24d1de2f62d17a6f32077ba..d5cdbfb79720da52ea9b3c4645967fc7657d0dec 100644
--- a/libweston/backend-drm/drm-internal.h
+++ b/libweston/backend-drm/drm-internal.h
@@ -54,8 +54,8 @@
 #include <libweston/libweston.h>
 #include <libweston/backend-drm.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 #include "output-capture.h"
-#include "shared/helpers.h"
 #include "shared/weston-drm-fourcc.h"
 #include "libinput-seat.h"
 #include "backend.h"
diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
index 11a5c3d4ce44ff9294d5c6901d9f3c59075b541f..04cc8eb07e7511f33f0826b134e9027f6ce1bf9d 100644
--- a/libweston/backend-drm/drm.c
+++ b/libweston/backend-drm/drm.c
@@ -51,9 +51,9 @@
 #include <libweston/libweston.h>
 #include <libweston/backend-drm.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 #include "drm-internal.h"
 #include "shared/hash.h"
-#include "shared/helpers.h"
 #include "shared/timespec-util.h"
 #include "shared/string-helpers.h"
 #include "shared/weston-drm-fourcc.h"
diff --git a/libweston/backend-drm/fb.c b/libweston/backend-drm/fb.c
index 05fba0cef7f269868d61f2a1ae217e6067767aec..97a5a34994e7e5012311d920231a5aa895bfa6b0 100644
--- a/libweston/backend-drm/fb.c
+++ b/libweston/backend-drm/fb.c
@@ -38,8 +38,8 @@
 #include <libweston/backend-drm.h>
 #include <libweston/pixel-formats.h>
 #include <libweston/linux-dmabuf.h>
+#include <libweston/helpers.h>
 #include "shared/hash.h"
-#include "shared/helpers.h"
 #include "shared/weston-drm-fourcc.h"
 #include "drm-internal.h"
 #include "linux-dmabuf.h"
diff --git a/libweston/backend-drm/kms.c b/libweston/backend-drm/kms.c
index d6be1efc67ac3d3fb004f7bdbb73eba4d40cfd2a..adb64b3ce471924a0bbd3d9934eb18cb96fcf53a 100644
--- a/libweston/backend-drm/kms.c
+++ b/libweston/backend-drm/kms.c
@@ -36,7 +36,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/backend-drm.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/weston-drm-fourcc.h"
 #include "drm-internal.h"
 #include "pixel-formats.h"
diff --git a/libweston/backend-headless/headless.c b/libweston/backend-headless/headless.c
index 9fe660417a3a3db526326634cc9dd35bf90b5963..b73bbffad1bdbca4fdcac5cd034b6404365b82c2 100644
--- a/libweston/backend-headless/headless.c
+++ b/libweston/backend-headless/headless.c
@@ -37,7 +37,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/backend-headless.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "linux-explicit-synchronization.h"
 #include "pixel-formats.h"
 #include "pixman-renderer.h"
diff --git a/libweston/backend-pipewire/pipewire.c b/libweston/backend-pipewire/pipewire.c
index 56bf591ef2dd79245dd55baa97492c2bbc5aa9a0..ad887f3a0cc58d18f8d72418d5f0da1144b4c6b8 100644
--- a/libweston/backend-pipewire/pipewire.c
+++ b/libweston/backend-pipewire/pipewire.c
@@ -49,13 +49,14 @@
 #include <spa/utils/defs.h>
 #include <spa/utils/result.h>
 
-#include "shared/helpers.h"
-#include "shared/timespec-util.h"
-#include "shared/xalloc.h"
 #include <libweston/libweston.h>
 #include <libweston/backend-pipewire.h>
 #include <libweston/linux-dmabuf.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
+
+#include "shared/timespec-util.h"
+#include "shared/xalloc.h"
 #include "pixel-formats.h"
 #include "pixman-renderer.h"
 #include "renderer-gl/gl-renderer.h"
diff --git a/libweston/backend-rdp/rdp.h b/libweston/backend-rdp/rdp.h
index 541579fe5a9433d8a25e2dadd603cf53bc47e419..1350b9b31e179c59a8e76655d8e125b4030902ab 100644
--- a/libweston/backend-rdp/rdp.h
+++ b/libweston/backend-rdp/rdp.h
@@ -51,12 +51,12 @@
 #include <libweston/libweston.h>
 #include <libweston/backend-rdp.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 
 #include <winpr/string.h>
 
 #include "backend.h"
 
-#include "shared/helpers.h"
 #include "shared/string-helpers.h"
 
 #define MAX_FREERDP_FDS 32
diff --git a/libweston/backend-vnc/vnc.c b/libweston/backend-vnc/vnc.c
index 6cea3988ee43db0be032598b0c15ad4a93da813c..475ad1b0e0fbce610b5e52065769f75ca401a3f9 100644
--- a/libweston/backend-vnc/vnc.c
+++ b/libweston/backend-vnc/vnc.c
@@ -47,12 +47,13 @@
 #include <neatvnc.h>
 #include <drm_fourcc.h>
 
-#include "shared/helpers.h"
-#include "shared/xalloc.h"
-#include "shared/timespec-util.h"
 #include <libweston/libweston.h>
 #include <libweston/backend-vnc.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
+
+#include "shared/xalloc.h"
+#include "shared/timespec-util.h"
 #include "pixel-formats.h"
 #include "pixman-renderer.h"
 #include "renderer-gl/gl-renderer.h"
diff --git a/libweston/backend-wayland/wayland.c b/libweston/backend-wayland/wayland.c
index 8b5d96197f8e4b69888301d1ec76a5df408d0939..b36cdefe69a2373889c929e29e4320f83c26d4f6 100644
--- a/libweston/backend-wayland/wayland.c
+++ b/libweston/backend-wayland/wayland.c
@@ -52,7 +52,7 @@
 #include "shared/weston-drm-fourcc.h"
 #include "shared/weston-egl-ext.h"
 #include "pixman-renderer.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/image-loader.h"
 #include "shared/os-compatibility.h"
 #include "shared/cairo-util.h"
diff --git a/libweston/backend-x11/x11.c b/libweston/backend-x11/x11.c
index 8c87d9ede58af206679f10d35b8941abd4e6ff66..4dd73b5793aa6921d3c606513ff1c88b6cc1532b 100644
--- a/libweston/backend-x11/x11.c
+++ b/libweston/backend-x11/x11.c
@@ -52,7 +52,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/backend-x11.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/image-loader.h"
 #include "shared/timespec-util.h"
 #include "shared/file-util.h"
diff --git a/libweston/bindings.c b/libweston/bindings.c
index 4d2ad94f6b848169c48b7519ef9e300aeb6b1d95..c79ffeaef329f55ddaa2069fde913fc07eb668bf 100644
--- a/libweston/bindings.c
+++ b/libweston/bindings.c
@@ -31,7 +31,7 @@
 
 #include <libweston/libweston.h>
 #include "libweston-internal.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 #include "tablet-unstable-v2-server-protocol.h"
 
diff --git a/libweston/clipboard.c b/libweston/clipboard.c
index a82d8fe85dbceeff46a36872c6957682a053e769..14a7aa823b70a89edb20055f66a512a7d307ea6a 100644
--- a/libweston/clipboard.c
+++ b/libweston/clipboard.c
@@ -34,8 +34,9 @@
 #include <sys/uio.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+
 #include "libweston-internal.h"
-#include "shared/helpers.h"
 
 struct clipboard_source {
 	struct weston_data_source base;
diff --git a/libweston/color-lcms/color-lcms.c b/libweston/color-lcms/color-lcms.c
index e8a473ab0cf1a08625944986c8163534001b577a..fbfe9e3b02e33dbb3a537b40089dfe1af7d8368d 100644
--- a/libweston/color-lcms/color-lcms.c
+++ b/libweston/color-lcms/color-lcms.c
@@ -29,11 +29,11 @@
 #include <assert.h>
 #include <string.h>
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 
 #include "color.h"
 #include "color-lcms.h"
 #include "color-properties.h"
-#include "shared/helpers.h"
 #include "shared/xalloc.h"
 #include "shared/weston-assert.h"
 
diff --git a/libweston/color-lcms/color-lcms.h b/libweston/color-lcms/color-lcms.h
index e519565e5129aa8270c687ad8d8bb4f8d501b797..79a83520d2fe2139cb68d5aaa5bdd773d5ad630f 100644
--- a/libweston/color-lcms/color-lcms.h
+++ b/libweston/color-lcms/color-lcms.h
@@ -30,9 +30,9 @@
 #include <lcms2.h>
 #include <libweston/libweston.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 
 #include "color.h"
-#include "shared/helpers.h"
 #include "shared/os-compatibility.h"
 
 /*
diff --git a/libweston/color-lcms/color-profile.c b/libweston/color-lcms/color-profile.c
index 5fea80e02458c8a66bdf6aa0453bf6d0338473eb..08f0f4a04567b2cd0329cbad6827997af2fd4f47 100644
--- a/libweston/color-lcms/color-profile.c
+++ b/libweston/color-lcms/color-profile.c
@@ -29,11 +29,11 @@
 #include <stdio.h>
 #include <string.h>
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 
 #include "color.h"
 #include "color-lcms.h"
 #include "color-management.h"
-#include "shared/helpers.h"
 #include "shared/string-helpers.h"
 #include "shared/xalloc.h"
 #include "shared/weston-assert.h"
diff --git a/libweston/color-lcms/color-transform.c b/libweston/color-lcms/color-transform.c
index d4a02c47196195c6a81c18d6f18ccaad0a5e4edd..02f13e3881d63dc020d7d41d464724871d1f7f79 100644
--- a/libweston/color-lcms/color-transform.c
+++ b/libweston/color-lcms/color-transform.c
@@ -34,7 +34,7 @@
 #include "color-curve-segments.h"
 #include "color-lcms.h"
 #include "color-properties.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/string-helpers.h"
 #include "shared/weston-assert.h"
 #include "shared/xalloc.h"
diff --git a/libweston/color-management.c b/libweston/color-management.c
index 1a84de82cf156729691457065d91daad998e85d8..ed988944b74f9211efbe23437f4acb838396dbfb 100644
--- a/libweston/color-management.c
+++ b/libweston/color-management.c
@@ -25,12 +25,13 @@
 
 #include "config.h"
 
+#include <libweston/helpers.h>
+
 #include "color.h"
 #include "color-management.h"
 #include "shared/string-helpers.h"
 #include "shared/weston-assert.h"
 #include "shared/xalloc.h"
-#include "shared/helpers.h"
 
 #include <fcntl.h>
 
diff --git a/libweston/color-noop.c b/libweston/color-noop.c
index 2fdfbdacc18ee78d542c210687e3ca485ead7508..3bd9fb1b415e43f85a1ccd8496cf0ed72b2a3a71 100644
--- a/libweston/color-noop.c
+++ b/libweston/color-noop.c
@@ -26,9 +26,9 @@
 #include "config.h"
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 
 #include "color.h"
-#include "shared/helpers.h"
 #include "shared/xalloc.h"
 #include "shared/weston-assert.h"
 
diff --git a/libweston/color-profile-param-builder.c b/libweston/color-profile-param-builder.c
index b1d7f5f34ebb36b2e9b0e48756e99193ca27bbaa..6bd03bc2e31e481577f3ce2c4a678b3e10113571 100644
--- a/libweston/color-profile-param-builder.c
+++ b/libweston/color-profile-param-builder.c
@@ -25,9 +25,10 @@
 
 #include "config.h"
 
+#include <libweston/helpers.h>
+
 #include "color.h"
 #include "color-properties.h"
-#include "shared/helpers.h"
 #include "shared/string-helpers.h"
 #include "shared/xalloc.h"
 #include "shared/weston-assert.h"
diff --git a/libweston/color-properties.c b/libweston/color-properties.c
index 7b53a948a920e0058591b2d1fbe2a341307b9d07..74c488c631b242341dc5afec62cd846daaef5771 100644
--- a/libweston/color-properties.c
+++ b/libweston/color-properties.c
@@ -35,7 +35,7 @@
 
 #include <libweston/libweston.h>
 #include <color-properties.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/weston-assert.h"
 
 #include "color-management-v1-server-protocol.h"
diff --git a/libweston/color.c b/libweston/color.c
index 4e33946ddf5e4602bf438fcb7abc37a857d97118..1f2b0c0f8e91b72c39965fdfd800a1912ffcdb79 100644
--- a/libweston/color.c
+++ b/libweston/color.c
@@ -40,7 +40,7 @@
 #include "id-number-allocator.h"
 #include "libweston-internal.h"
 #include <libweston/weston-log.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 
 /**
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 8c63f0a2a5187d65605a3db3a2ea7c78b5c86499..a3bc9126af5da53d171944220269518965215f99 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -58,6 +58,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 #include "linux-dmabuf.h"
 #include "linux-dmabuf-unstable-v1-server-protocol.h"
 #include "viewporter-server-protocol.h"
@@ -67,7 +68,6 @@
 #include "linux-explicit-synchronization.h"
 #include "single-pixel-buffer-v1-server-protocol.h"
 #include "shared/fd-util.h"
-#include "shared/helpers.h"
 #include "shared/os-compatibility.h"
 #include "shared/string-helpers.h"
 #include "shared/timespec-util.h"
diff --git a/libweston/content-protection.c b/libweston/content-protection.c
index d732b1657952d56625cd8835894e2d0cb6e33f37..d3c482b1343d3e3f476267e8e7478d940db1b90d 100644
--- a/libweston/content-protection.c
+++ b/libweston/content-protection.c
@@ -34,7 +34,7 @@
 #include <libweston/weston-log.h>
 #include "libweston-internal.h"
 #include "weston-content-protection-server-protocol.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 
 #define content_protection_log(cp, ...) \
diff --git a/libweston/data-device.c b/libweston/data-device.c
index f259292cd3ef1d011bab6105f5db91f09d0880c1..56e36de1b6c4d88a5058832a2813cfd541e7414a 100644
--- a/libweston/data-device.c
+++ b/libweston/data-device.c
@@ -34,7 +34,7 @@
 
 #include <libweston/libweston.h>
 #include "libweston-internal.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 
 struct weston_drag {
diff --git a/libweston/desktop/libweston-desktop.c b/libweston/desktop/libweston-desktop.c
index c1d82e630b6c339989a41c098b254d870e06fe8e..961ff91006a32fab7961be285a7a83967cf1a9b7 100644
--- a/libweston/desktop/libweston-desktop.c
+++ b/libweston/desktop/libweston-desktop.c
@@ -30,7 +30,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/zalloc.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 #include <libweston/desktop.h>
 #include "internal.h"
diff --git a/libweston/desktop/xdg-shell.c b/libweston/desktop/xdg-shell.c
index 2ee58b9b36ff083726827a502ebc8cefeb273569..e7ba103e4037299c30d135654276d0df87bcbcc0 100644
--- a/libweston/desktop/xdg-shell.c
+++ b/libweston/desktop/xdg-shell.c
@@ -37,7 +37,7 @@
 
 #include <libweston/desktop.h>
 #include "internal.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 /************************************************************************************
  * WARNING: This file implements the stable xdg shell protocol.
diff --git a/libweston/gl-borders.c b/libweston/gl-borders.c
index edf9df443e46d9085b8f9bacea719f3ba4fbeadd..526ab716f305c0f2d894a47082cbb54f9d57eb55 100644
--- a/libweston/gl-borders.c
+++ b/libweston/gl-borders.c
@@ -29,7 +29,7 @@
 #include "config.h"
 
 #include "gl-borders.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 void
 weston_gl_borders_update(struct weston_gl_borders *borders,
diff --git a/libweston/id-number-allocator.c b/libweston/id-number-allocator.c
index aeae7e7390e6c86a82aec30086eb566d74c84de7..ba3f5366bb4c8011b650a59ed1d174f240b203e3 100644
--- a/libweston/id-number-allocator.c
+++ b/libweston/id-number-allocator.c
@@ -25,8 +25,9 @@
 
 #include "config.h"
 
+#include <libweston/helpers.h>
+
 #include "id-number-allocator.h"
-#include "shared/helpers.h"
 #include "shared/xalloc.h"
 #include "shared/weston-assert.h"
 
diff --git a/libweston/input.c b/libweston/input.c
index 3faa6be42f2d40c0b298b97e050da26a6bece820..19069762ea08487b4f22b634bd12b1c2158e9421 100644
--- a/libweston/input.c
+++ b/libweston/input.c
@@ -40,7 +40,7 @@
 #include <errno.h>
 #include <linux/input.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/timespec-util.h"
 #include <libweston/libweston.h>
diff --git a/libweston/libinput-device.c b/libweston/libinput-device.c
index 31b88ac43c3af0e5047739452d4d6549dcb83bb3..01c2344376c2d931420236e33957cdcbf32e9c76 100644
--- a/libweston/libinput-device.c
+++ b/libweston/libinput-device.c
@@ -39,10 +39,10 @@
 #include <libinput.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 #include "backend.h"
 #include "libweston-internal.h"
 #include "libinput-device.h"
-#include "shared/helpers.h"
 #include "shared/timespec-util.h"
 
 #include "tablet-unstable-v2-server-protocol.h"
diff --git a/libweston/libinput-seat.c b/libweston/libinput-seat.c
index 5ecb9741359e5f0f54335a1f6327528bcad5f06d..e350c51217c2fd1abf531a082c1b3db0ddcbd238 100644
--- a/libweston/libinput-seat.c
+++ b/libweston/libinput-seat.c
@@ -35,13 +35,13 @@
 #include <libudev.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 #include "backend.h"
 #include "libweston-internal.h"
 #include "weston-log-internal.h"
 #include "launcher-util.h"
 #include "libinput-seat.h"
 #include "libinput-device.h"
-#include "shared/helpers.h"
 
 static void
 process_events(struct udev_input *input);
diff --git a/libweston/linux-dmabuf.c b/libweston/linux-dmabuf.c
index d37121d764db2e5eec26a4e5cf0855c6a0ce71a8..7074f6b15d25594e43eecd8f1d87b1bb76f611c9 100644
--- a/libweston/linux-dmabuf.c
+++ b/libweston/linux-dmabuf.c
@@ -36,7 +36,7 @@
 #include "linux-dmabuf.h"
 #include "linux-dmabuf-unstable-v1-server-protocol.h"
 #include "shared/os-compatibility.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "libweston-internal.h"
 #include "shared/weston-assert.h"
 #include "shared/weston-drm-fourcc.h"
diff --git a/libweston/output-capture.c b/libweston/output-capture.c
index 3265f063ee6eabc700a49d7b767d123003d97ff6..d48eaa7dc86c9623375b832e3bd42efc7e38c5fe 100644
--- a/libweston/output-capture.c
+++ b/libweston/output-capture.c
@@ -32,7 +32,7 @@
 #include "libweston-internal.h"
 #include "output-capture.h"
 #include "pixel-formats.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/weston-drm-fourcc.h"
 #include "shared/xalloc.h"
 #include "weston-output-capture-server-protocol.h"
diff --git a/libweston/pixel-formats.c b/libweston/pixel-formats.c
index 46a93cc3c72c701d1f2c532181b1eebfd7aee48a..fd3423217cf1e9b837cba0acd5e4c6ccb5027c8a 100644
--- a/libweston/pixel-formats.c
+++ b/libweston/pixel-formats.c
@@ -37,7 +37,7 @@
 
 #include <xf86drm.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/string-helpers.h"
 #include "shared/weston-drm-fourcc.h"
 #include "shared/xalloc.h"
diff --git a/libweston/pixman-renderer.c b/libweston/pixman-renderer.c
index 15401eb512c8e21f4b3e103716afe68309f78d91..e109bd1e21dea239fbbf0926e68c9a7629a8e20c 100644
--- a/libweston/pixman-renderer.c
+++ b/libweston/pixman-renderer.c
@@ -36,7 +36,7 @@
 #include "color.h"
 #include "pixel-formats.h"
 #include "output-capture.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/weston-drm-fourcc.h"
 #include "shared/xalloc.h"
 
diff --git a/libweston/renderer-gl/egl-glue.c b/libweston/renderer-gl/egl-glue.c
index f6d7c48707b13dbc104c81abbd84735257eb1612..3536def7ad75f21875c0b0307c05cb518755c168 100644
--- a/libweston/renderer-gl/egl-glue.c
+++ b/libweston/renderer-gl/egl-glue.c
@@ -29,7 +29,7 @@
 
 #include <assert.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/platform.h"
 #include "shared/string-helpers.h"
 
diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h
index 31114089346a7b747c0d6d5c7454cdc127458bfd..9f95b299c540fd05b961a62fd7db51189ae371c8 100644
--- a/libweston/renderer-gl/gl-renderer-internal.h
+++ b/libweston/renderer-gl/gl-renderer-internal.h
@@ -49,7 +49,7 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 #include "shared/weston-egl-ext.h"  /* for PFN* stuff */
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 /* Max number of images per buffer. */
 #define SHADER_INPUT_TEX_MAX 3
diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
index e694418b9f4046e1bb9ccdb24a5fccdab994030a..f92e5a3072cb26eaff8ff2f200126e1a72d87cf3 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -58,8 +58,9 @@
 #include "output-capture.h"
 #include "pixel-formats.h"
 
+#include <libweston/helpers.h>
+
 #include "shared/fd-util.h"
-#include "shared/helpers.h"
 #include "shared/platform.h"
 #include "shared/string-helpers.h"
 #include "shared/timespec-util.h"
diff --git a/libweston/renderer-gl/gl-shaders.c b/libweston/renderer-gl/gl-shaders.c
index 007e107e789e291c85c4fa0fb482999df2143bf7..c956ceaddf43a4380e56d0c4a9948859d22162c3 100644
--- a/libweston/renderer-gl/gl-shaders.c
+++ b/libweston/renderer-gl/gl-shaders.c
@@ -36,6 +36,7 @@
 
 #include <libweston/libweston.h>
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 #include <GLES2/gl2.h>
 
 #include <string.h>
@@ -43,7 +44,6 @@
 #include "gl-renderer.h"
 #include "gl-renderer-internal.h"
 #include "pixel-formats.h"
-#include "shared/helpers.h"
 #include "shared/timespec-util.h"
 
 /* static const char vertex_shader[]; vertex.glsl */
diff --git a/libweston/screenshooter.c b/libweston/screenshooter.c
index 8b11e3484bd058be8c55aa4a211ba5856ccfed3e..47d4754047a0b5774db3cb26c5011f337b46f1f2 100644
--- a/libweston/screenshooter.c
+++ b/libweston/screenshooter.c
@@ -36,7 +36,7 @@
 #include <sys/uio.h>
 
 #include <libweston/libweston.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 #include "backend.h"
 #include "libweston-internal.h"
diff --git a/libweston/shell-utils/shell-utils.c b/libweston/shell-utils/shell-utils.c
index 5587d44e9254cf90e1fcec9687da08f63d92a352..472a640e3bf75bb37d4d85b287e6a16c78bd7f5e 100644
--- a/libweston/shell-utils/shell-utils.c
+++ b/libweston/shell-utils/shell-utils.c
@@ -27,7 +27,7 @@
 #include "config.h"
 #include <libweston/shell-utils.h>
 #include <libweston/desktop.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 /**
  * \defgroup shell-utils Shell utils
diff --git a/libweston/timeline.h b/libweston/timeline.h
index 23c06bb220f845e9eb3c513f154037f9ce8379e9..b13b0c7014d140927595ffde0ba57c6b3f7b48ae 100644
--- a/libweston/timeline.h
+++ b/libweston/timeline.h
@@ -31,10 +31,9 @@
 #include <stdbool.h>
 
 #include <libweston/weston-log.h>
+#include <libweston/helpers.h>
 #include <wayland-server-core.h>
 
-#include "shared/helpers.h"
-
 enum timeline_type {
 	TLT_END = 0,
 	TLT_OUTPUT,
diff --git a/libweston/touch-calibration.c b/libweston/touch-calibration.c
index f4c9366a0757ba18bacef7c383b040a37a515509..a539625f3dd2b0587f922c6bed4c33355b4efd54 100644
--- a/libweston/touch-calibration.c
+++ b/libweston/touch-calibration.c
@@ -29,7 +29,7 @@
 #include <string.h>
 #include <wayland-server.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/string-helpers.h"
 #include <libweston/zalloc.h>
 #include "shared/timespec-util.h"
diff --git a/libweston/vertex-clipping.c b/libweston/vertex-clipping.c
index 319b35eee9e061d3c5ae436902103d25f29dfcf0..e7065e2b1e8cc680d040dc487c4fd5549d3bfdfb 100644
--- a/libweston/vertex-clipping.c
+++ b/libweston/vertex-clipping.c
@@ -27,7 +27,7 @@
 #include <math.h>
 #include <string.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "vertex-clipping.h"
 
 struct clip_context {
diff --git a/libweston/weston-log-file.c b/libweston/weston-log-file.c
index 25e36b46a1600f1b82813054b2d86b4dcdc1313f..59538455ca08d8e813fd4bcfeff30e82d72e97ac 100644
--- a/libweston/weston-log-file.c
+++ b/libweston/weston-log-file.c
@@ -26,7 +26,7 @@
 #include "config.h"
 
 #include <libweston/weston-log.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/libweston.h>
 
 #include "weston-log-internal.h"
diff --git a/libweston/weston-log-flight-rec.c b/libweston/weston-log-flight-rec.c
index a577a38a8991b9f24af95859672b454a18eb5878..c979be07e7b0c580ecc5c04c38c4a61dcf7b254c 100644
--- a/libweston/weston-log-flight-rec.c
+++ b/libweston/weston-log-flight-rec.c
@@ -26,7 +26,7 @@
 #include "config.h"
 
 #include <libweston/weston-log.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/libweston.h>
 
 #include "weston-log-internal.h"
diff --git a/libweston/weston-log-wayland.c b/libweston/weston-log-wayland.c
index 8b9771406cd94d16ed4d7314776e573f353e69f5..14a8c58633d07342cd5a627a89bf2a8cb97a29e1 100644
--- a/libweston/weston-log-wayland.c
+++ b/libweston/weston-log-wayland.c
@@ -26,7 +26,7 @@
 #include "config.h"
 
 #include <libweston/weston-log.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/libweston.h>
 
 #include "weston-log-internal.h"
diff --git a/libweston/weston-log.c b/libweston/weston-log.c
index 5d6ff2bc9645e03b71e91ac5709042deb81903da..e0269ee5fee73a1c2188e470c139b0b0c77cfff0 100644
--- a/libweston/weston-log.c
+++ b/libweston/weston-log.c
@@ -27,7 +27,7 @@
 #include "config.h"
 
 #include <libweston/weston-log.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/libweston.h>
 
 #include "weston-log-internal.h"
diff --git a/remoting/remoting-plugin.c b/remoting/remoting-plugin.c
index 86830c0792f99db15788b4b8ea8c6a39c378eba0..f1dfb541849180e9e6c41c1cfada93dbeade4e2c 100644
--- a/remoting/remoting-plugin.c
+++ b/remoting/remoting-plugin.c
@@ -44,7 +44,7 @@
 
 #include <libweston/remoting-plugin.h>
 #include <libweston/backend-drm.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 #include "shared/weston-drm-fourcc.h"
 #include "shared/string-helpers.h"
diff --git a/shared/cairo-util.c b/shared/cairo-util.c
index 47a96e0803e32e4996e55d284da15492ad90d8ab..93cc0976822845fd913b7d81625dc506d9329509 100644
--- a/shared/cairo-util.c
+++ b/shared/cairo-util.c
@@ -35,10 +35,10 @@
 #include <cairo.h>
 #include "cairo-util.h"
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
+#include <libweston/config-parser.h>
 #include "image-loader.h"
 #include "shared/xalloc.h"
-#include <libweston/config-parser.h>
 
 #ifdef HAVE_PANGO
 #include <fontconfig/fontconfig.h>
diff --git a/shared/config-parser.c b/shared/config-parser.c
index cd93e5f34a2f3b8f4f3707218a1e49b12e55d41a..98b70709f91d31d16a1b0f8a39cfac3827c30c14 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -42,7 +42,7 @@
 #include <libweston/zalloc.h>
 #include <libweston/config-parser.h>
 #include <libweston/libweston.h>
-#include "helpers.h"
+#include <libweston/helpers.h>
 #include "string-helpers.h"
 
 /**
diff --git a/shared/image-loader.c b/shared/image-loader.c
index c5131dcc6b2babeece39ec75e8e54c996afdc09c..d95c97595ea8a3ca239e17e69d4c387d34e84668 100644
--- a/shared/image-loader.c
+++ b/shared/image-loader.c
@@ -36,7 +36,7 @@
 #include <png.h>
 #include <pixman.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/xalloc.h"
 #include "image-loader.h"
diff --git a/shared/process-util.c b/shared/process-util.c
index fe895d234e7060947d68dfc0a072ffe64d88e0af..954f318bee036a8009ce90472919f019d0efcb9a 100644
--- a/shared/process-util.c
+++ b/shared/process-util.c
@@ -35,7 +35,7 @@
 
 #include <wayland-util.h>
 
-#include "helpers.h"
+#include <libweston/helpers.h>
 #include "os-compatibility.h"
 #include "process-util.h"
 #include "string-helpers.h"
diff --git a/shared/timespec-util.h b/shared/timespec-util.h
index f76b9537cc744e2403d20bcccb0b2ff0e47f2783..37bb75fe8c45a83b77378916376aab3e93a9d2f1 100644
--- a/shared/timespec-util.h
+++ b/shared/timespec-util.h
@@ -30,7 +30,7 @@
 #include <assert.h>
 #include <time.h>
 #include <stdbool.h>
-#include <shared/helpers.h>
+#include <libweston/helpers.h>
 
 #define NSEC_PER_SEC 1000000000
 
diff --git a/shared/xcb-xwayland.c b/shared/xcb-xwayland.c
index 260dd52150441cad7b4b94d4e0be0f501d33650f..69b7740db96294b0684b48e0c9f625831cf802eb 100644
--- a/shared/xcb-xwayland.c
+++ b/shared/xcb-xwayland.c
@@ -32,7 +32,7 @@
 #include <stddef.h>
 #include <assert.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "xcb-xwayland.h"
 
 const char *
diff --git a/tests/color_util.c b/tests/color_util.c
index 5db692e5afcbf133576f9266e4fcbddc8fac1e59..31936770c73eb14db3d034c983738c7f7a0dfe0a 100644
--- a/tests/color_util.c
+++ b/tests/color_util.c
@@ -33,9 +33,9 @@
 #include <stddef.h>
 
 #include <libweston/matrix.h>
+#include <libweston/helpers.h>
 #include "color_util.h"
 #include "weston-test-runner.h"
-#include "shared/helpers.h"
 
 static_assert(sizeof(struct color_float) == 4 * sizeof(float),
 	      "unexpected padding in struct color_float");
diff --git a/tests/config-parser-test.c b/tests/config-parser-test.c
index 33ad5d0b37321690514602543ac4dfe592946f0b..f016bf211e86a9d8d3d64779618a1db3ea1b424d 100644
--- a/tests/config-parser-test.c
+++ b/tests/config-parser-test.c
@@ -35,8 +35,8 @@
 #include <math.h>
 
 #include <libweston/config-parser.h>
+#include <libweston/helpers.h>
 
-#include "shared/helpers.h"
 #include "zunitc/zunitc.h"
 
 struct fixture_data {
diff --git a/tests/custom-env-test.c b/tests/custom-env-test.c
index 3a5161907c7ba72f0d69d243cceaa9541f9baa3d..c1c3ca6bd85f480ff9b317d43f590a57a6b97a26 100644
--- a/tests/custom-env-test.c
+++ b/tests/custom-env-test.c
@@ -33,7 +33,7 @@
 
 #include <wayland-util.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/os-compatibility.h"
 #include "shared/process-util.h"
 #include "shared/string-helpers.h"
diff --git a/tests/ivi-layout-internal-test.c b/tests/ivi-layout-internal-test.c
index 3d75a6c5df651e7b2f51f8c9a4da1e9a5a49949b..2efdbb72f7c70fdbaf1b08a728148f1a65dc3d5e 100644
--- a/tests/ivi-layout-internal-test.c
+++ b/tests/ivi-layout-internal-test.c
@@ -33,10 +33,11 @@
 #include <stdint.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
+
 #include "ivi-shell/ivi-layout-export.h"
 #include "ivi-shell/ivi-layout-private.h"
 #include "ivi-test.h"
-#include "shared/helpers.h"
 #include "weston-test-runner.h"
 #include "weston-test-fixture-compositor.h"
 
diff --git a/tests/ivi-layout-test-client.c b/tests/ivi-layout-test-client.c
index b49701cc846ecf71d246241bbaca56e0a91361e7..a7d54d5c81036b49bd4fc5c0302b004ba49b8859 100644
--- a/tests/ivi-layout-test-client.c
+++ b/tests/ivi-layout-test-client.c
@@ -29,7 +29,7 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "weston-test-client-helper.h"
 #include "ivi-application-client-protocol.h"
diff --git a/tests/ivi-layout-test-plugin.c b/tests/ivi-layout-test-plugin.c
index 90f27630cfc3d7176646c0553665991f061171ca..114292ad597907dae0162437b8ea77d980208ac4 100644
--- a/tests/ivi-layout-test-plugin.c
+++ b/tests/ivi-layout-test-plugin.c
@@ -40,7 +40,7 @@
 #include "weston-test-server-protocol.h"
 #include "ivi-test.h"
 #include "ivi-shell/ivi-layout-export.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 struct test_context;
 
diff --git a/tests/lcms_util.c b/tests/lcms_util.c
index eef32e6199cc207d2b67e35b848fb733c0e7e6dd..b9d54d64f1dd7ecf9748af5c5ab9a780570cf483 100644
--- a/tests/lcms_util.c
+++ b/tests/lcms_util.c
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 
 #include <libweston/matrix.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "color_util.h"
 #include "lcms_util.h"
 
diff --git a/tests/presentation-test.c b/tests/presentation-test.c
index 3ffedd1f4660186f28cab2914842db2f15083102..6cd6c5b520c1128e1e8dbbeaf9343bd6719595b2 100644
--- a/tests/presentation-test.c
+++ b/tests/presentation-test.c
@@ -32,7 +32,7 @@
 #include <assert.h>
 #include <time.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "shared/timespec-util.h"
 #include "weston-test-client-helper.h"
diff --git a/tests/timespec-test.c b/tests/timespec-test.c
index fa1e6a163813c3617cb10f797f4fe92b165529fb..b4c9e7691de19625ae7bb1ebae7acd3d2a42ae71 100644
--- a/tests/timespec-test.c
+++ b/tests/timespec-test.c
@@ -36,7 +36,7 @@
 
 #include "shared/timespec-util.h"
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "zunitc/zunitc.h"
 
 ZUC_TEST(timespec_test, timespec_sub)
diff --git a/tests/viewporter-test.c b/tests/viewporter-test.c
index 6f5ef669aa3f828fad8965701de9ad6c0bbdc52a..0d4aa252131b9a4d4110985a19dcff3874c7bb1f 100644
--- a/tests/viewporter-test.c
+++ b/tests/viewporter-test.c
@@ -31,7 +31,7 @@
 #include <assert.h>
 #include <time.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/xalloc.h"
 #include "weston-test-client-helper.h"
 #include "weston-test-fixture-compositor.h"
diff --git a/tests/weston-test-desktop-shell.c b/tests/weston-test-desktop-shell.c
index fe7f86f4e45d6e2d8186f1e0c69ff3c04d00af91..72d626fe43397542aa304756a6b4d254784a35f9 100644
--- a/tests/weston-test-desktop-shell.c
+++ b/tests/weston-test-desktop-shell.c
@@ -38,7 +38,7 @@
 
 #include "frontend/weston.h"
 #include <libweston/config-parser.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/shell-utils.h>
 #include <libweston/desktop.h>
 
diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c
index 45e6eac0b19d3abd77d9059cfaa8db67a5f622b2..767aa2a174e2e5463a6665ecbec0817b66eba8e2 100644
--- a/tests/weston-test-fixture-compositor.c
+++ b/tests/weston-test-fixture-compositor.c
@@ -37,7 +37,7 @@
 #include <errno.h>
 #include <fcntl.h>
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/string-helpers.h"
 #include "weston-test-fixture-compositor.h"
 #include "weston.h"
diff --git a/tests/weston-test-runner.h b/tests/weston-test-runner.h
index a96348344a1aaece4a24bde568cd05fd7bae79a1..87ab1174584080ec75e3e7d6f68d0bf914b14b09 100644
--- a/tests/weston-test-runner.h
+++ b/tests/weston-test-runner.h
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 
 #include <wayland-util.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "weston-test-fixture-compositor.h"
 #include "weston-testsuite-data.h"
 
diff --git a/tests/weston-test.c b/tests/weston-test.c
index 420ec5a04de5bb6e440139cf8c666d4bcf685517..6112335c077158ec2c8168ee37f48ecbb7a4fda8 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -45,7 +45,7 @@
 #include "weston.h"
 #include "weston-testsuite-data.h"
 
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/timespec-util.h"
 #include "shared/xalloc.h"
 
diff --git a/tests/xcb-client-helper.c b/tests/xcb-client-helper.c
index c2249c2e266c8ba3e8b6217e4330c8847a88a8a8..91ff647d0e210f97e8191eff154ad78429dd8d89 100644
--- a/tests/xcb-client-helper.c
+++ b/tests/xcb-client-helper.c
@@ -36,13 +36,14 @@
 
 #include <time.h>
 
+#include <libweston/helpers.h>
+#include <libweston/zalloc.h>
+
 #include <wayland-client.h>
 #include "test-config.h"
 #include "shared/os-compatibility.h"
-#include "shared/helpers.h"
 #include "shared/xalloc.h"
 #include "shared/xcb-xwayland.h"
-#include <libweston/zalloc.h>
 #include "xcb-client-helper.h"
 
 #define DEBUG
diff --git a/tools/zunitc/src/zunitc_impl.c b/tools/zunitc/src/zunitc_impl.c
index 9b460fa03bc9e67ab8bd804e32662e82610b1823..5b92c2e7a495ecb35d35cf642799911b758835ea 100644
--- a/tools/zunitc/src/zunitc_impl.c
+++ b/tools/zunitc/src/zunitc_impl.c
@@ -47,7 +47,7 @@
 #include "zuc_junit_reporter.h"
 
 #include <libweston/config-parser.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include <libweston/zalloc.h>
 
 /*
diff --git a/xwayland/launcher.c b/xwayland/launcher.c
index dd4ecdc8a26ce893f55263f8b7e4beb9cf7481c4..1dec2bd8704c28404893527ce8b9f66fdf28de91 100644
--- a/xwayland/launcher.c
+++ b/xwayland/launcher.c
@@ -38,7 +38,7 @@
 
 #include "xwayland.h"
 #include <libweston/xwayland-api.h>
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 #include "shared/string-helpers.h"
 
 static void
diff --git a/xwayland/selection.c b/xwayland/selection.c
index c243aa2da2703a4a4d94788ec714909cd192314d..f7d5888cbb6d225f56eab737161bc697ab46bd62 100644
--- a/xwayland/selection.c
+++ b/xwayland/selection.c
@@ -35,7 +35,7 @@
 
 #include <libweston/libweston.h>
 #include "xwayland.h"
-#include "shared/helpers.h"
+#include <libweston/helpers.h>
 
 #ifdef WM_DEBUG
 #define wm_log(...) weston_log(__VA_ARGS__)
diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
index d403675227432ceab81cf09ba2191d21570b8ebc..5ed2c9dee857196da89b36c4e7f2f9fd6c11ec1c 100644
--- a/xwayland/window-manager.c
+++ b/xwayland/window-manager.c
@@ -42,12 +42,12 @@
 #include <linux/input.h>
 
 #include <libweston/libweston.h>
+#include <libweston/helpers.h>
 #include "xwayland.h"
 #include "xwayland-internal-interface.h"
 
 #include "shared/cairo-util.h"
 #include "shared/hash.h"
-#include "shared/helpers.h"
 #include "shared/xcb-xwayland.h"
 #include "xwayland-shell-v1-server-protocol.h"