From 9577e95971a73cf9d6d3782e67d96e83cb94b97a Mon Sep 17 00:00:00 2001
From: j1nx
Date: Tue, 4 Aug 2020 15:19:49 +0200
Subject: [PATCH] MycroftOS: Add userland-tools package to install dtoverlay
---
buildroot-external/Config.in | 1 +
.../configs/rpi3_64-gui_defconfig | 1 +
.../configs/rpi4_64-gui_defconfig | 1 +
...r-the-OpenGLESv2-EGL-and-bcm_host-li.patch | 107 ++++++++++++
...-faulty-assert-to-make-weston-happy-.patch | 35 ++++
.../0003-Disable-Werror-everywhere.patch | 165 ++++++++++++++++++
...cations-disable-missing-applications.patch | 34 ++++
...erge-add-missing-include-for-va_list.patch | 34 ++++
.../0006-linux-tools-only.patch | 142 +++++++++++++++
.../package/userland-tools/Config.in | 13 ++
.../userland-tools/userland-tools.hash | 3 +
.../package/userland-tools/userland-tools.mk | 13 ++
12 files changed, 549 insertions(+)
create mode 100644 buildroot-external/package/userland-tools/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch
create mode 100644 buildroot-external/package/userland-tools/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch
create mode 100644 buildroot-external/package/userland-tools/0003-Disable-Werror-everywhere.patch
create mode 100644 buildroot-external/package/userland-tools/0004-host-applications-disable-missing-applications.patch
create mode 100644 buildroot-external/package/userland-tools/0005-dtmerge-add-missing-include-for-va_list.patch
create mode 100644 buildroot-external/package/userland-tools/0006-linux-tools-only.patch
create mode 100644 buildroot-external/package/userland-tools/Config.in
create mode 100644 buildroot-external/package/userland-tools/userland-tools.hash
create mode 100644 buildroot-external/package/userland-tools/userland-tools.mk
diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in
index 4a6b1843..dbb9749c 100644
--- a/buildroot-external/Config.in
+++ b/buildroot-external/Config.in
@@ -53,6 +53,7 @@ endmenu
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/respeaker/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/snapcast/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/spotifyd/Config.in"
+ source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/userland-tools/Config.in"
source "$BR2_EXTERNAL_MYCROFTOS_PATH/package/wifi-connect/Config.in"
endmenu
menu "Additional external python modules"
diff --git a/buildroot-external/configs/rpi3_64-gui_defconfig b/buildroot-external/configs/rpi3_64-gui_defconfig
index 7ce421d9..72200ab6 100644
--- a/buildroot-external/configs/rpi3_64-gui_defconfig
+++ b/buildroot-external/configs/rpi3_64-gui_defconfig
@@ -501,6 +501,7 @@ BR2_PACKAGE_RESPEAKER=y
BR2_PACKAGE_SNAPCAST=y
BR2_PACKAGE_SNAPCAST_SERVER=y
BR2_PACKAGE_SPOTIFYD=y
+BR2_PACKAGE_USERLAND_TOOLS=y
BR2_PACKAGE_WIFI_CONNECT=y
BR2_PACKAGE_PYTHON_ADAPT_PARSER=y
BR2_PACKAGE_PYTHON_COLORZERO=y
diff --git a/buildroot-external/configs/rpi4_64-gui_defconfig b/buildroot-external/configs/rpi4_64-gui_defconfig
index 1c75f2fa..2bb1da5f 100644
--- a/buildroot-external/configs/rpi4_64-gui_defconfig
+++ b/buildroot-external/configs/rpi4_64-gui_defconfig
@@ -505,6 +505,7 @@ BR2_PACKAGE_RESPEAKER=y
BR2_PACKAGE_SNAPCAST=y
BR2_PACKAGE_SNAPCAST_SERVER=y
BR2_PACKAGE_SPOTIFYD=y
+BR2_PACKAGE_USERLAND_TOOLS=y
BR2_PACKAGE_WIFI_CONNECT=y
BR2_PACKAGE_PYTHON_ADAPT_PARSER=y
BR2_PACKAGE_PYTHON_COLORZERO=y
diff --git a/buildroot-external/package/userland-tools/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch b/buildroot-external/package/userland-tools/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch
new file mode 100644
index 00000000..fb873371
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch
@@ -0,0 +1,107 @@
+From 4824be8986c2b6ef0b0bd2b32bc99c4ba6406640 Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN"
+Date: Sat, 24 Jan 2015 19:44:14 +0100
+Subject: [PATCH] Add .pc files for the OpenGLESv2, EGL and bcm_host libraries
+
+Those pkg-config files make it easier for Qt5 to find those libraries
+and the appropriate link flags.
+
+Signed-off-by: Thomas Petazzoni
+Signed-off-by: "Yann E. MORIN"
+
+[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]
+Signed-off-by: Peter Seiderer
+---
+ host_applications/linux/libs/bcm_host/CMakeLists.txt | 4 ++++
+ host_applications/linux/libs/bcm_host/bcm_host.pc.in | 10 ++++++++++
+ interface/khronos/CMakeLists.txt | 8 ++++++++
+ interface/khronos/egl/egl.pc.in | 11 +++++++++++
+ interface/khronos/glxx/glesv2.pc.in | 10 ++++++++++
+ 5 files changed, 43 insertions(+)
+ create mode 100644 host_applications/linux/libs/bcm_host/bcm_host.pc.in
+ create mode 100644 interface/khronos/egl/egl.pc.in
+ create mode 100644 interface/khronos/glxx/glesv2.pc.in
+
+diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+index 1edf50a..1f29ead 100644
+--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt
++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+@@ -20,3 +20,7 @@ target_link_libraries(bcm_host vcos vchostif)
+
+ install(TARGETS bcm_host DESTINATION lib)
+
++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bcm_host.pc.in"
++ "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" @ONLY)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc"
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+diff --git a/host_applications/linux/libs/bcm_host/bcm_host.pc.in b/host_applications/linux/libs/bcm_host/bcm_host.pc.in
+new file mode 100644
+index 0000000..d40d350
+--- /dev/null
++++ b/host_applications/linux/libs/bcm_host/bcm_host.pc.in
+@@ -0,0 +1,10 @@
++prefix=/usr
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include
++
++Name: bcm_host
++Description: Broadcom VideoCore host API library
++Version: 1
++Libs: -L${libdir} -lbcm_host -lvcos -lvchiq_arm
++Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM
+diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt
+index 4231af4..2844ebd 100644
+--- a/interface/khronos/CMakeLists.txt
++++ b/interface/khronos/CMakeLists.txt
+@@ -74,6 +74,14 @@ target_link_libraries(OpenVG EGL)
+
+ install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib)
+ install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib)
++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/egl/egl.pc.in"
++ "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" @ONLY)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc"
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glxx/glesv2.pc.in"
++ "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" @ONLY)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc"
++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+
+ # recommended names to use to avoid conflicts with mesa libs
+ add_library(brcmEGL ${SHARED} ${EGL_SOURCE})
+diff --git a/interface/khronos/egl/egl.pc.in b/interface/khronos/egl/egl.pc.in
+new file mode 100644
+index 0000000..5868706
+--- /dev/null
++++ b/interface/khronos/egl/egl.pc.in
+@@ -0,0 +1,11 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include
++
++Name: egl
++Description: RasberryPi implementation of EGL
++Version: 10
++Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif
++Cflags: -I${includedir}/ -I${includedir}/interface/vcos/pthreads/ \
++ -I${includedir}/interface/vmcs_host/linux/
+diff --git a/interface/khronos/glxx/glesv2.pc.in b/interface/khronos/glxx/glesv2.pc.in
+new file mode 100644
+index 0000000..2f58eed
+--- /dev/null
++++ b/interface/khronos/glxx/glesv2.pc.in
+@@ -0,0 +1,10 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include
++
++Name: glesv2
++Description: RasberryPi implementation of OpenGL ESv2
++Version: 2.0
++Libs: -L${libdir} -lGLESv2
++Cflags: -I${includedir}/
+--
+2.8.1
+
diff --git a/buildroot-external/package/userland-tools/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch b/buildroot-external/package/userland-tools/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch
new file mode 100644
index 00000000..0e9dede5
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch
@@ -0,0 +1,35 @@
+From a126ee5a3235792abb58daffd9d4b3e1012f675b Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN"
+Date: Sat, 24 Jan 2015 22:07:19 +0100
+Subject: [PATCH] interface: remove faulty assert() to make weston happy at
+ runtime
+
+This was removed after a discussion on IRC with the weston guys
+('daniels' on irc.freenode.net/#wayland).
+
+Upstream status: no, will be pushed by weston guys later.
+If not, I'll do it.
+
+Signed-off-by: "Yann E. MORIN"
+
+[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]
+Signed-off-by: Peter Seiderer
+---
+ interface/vmcs_host/vc_vchi_dispmanx.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
+index 133e86d..0c7873c 100755
+--- a/interface/vmcs_host/vc_vchi_dispmanx.c
++++ b/interface/vmcs_host/vc_vchi_dispmanx.c
+@@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) {
+ // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit.
+ vchi_service_release(dispmanx_client.notify_handle[0]);
+ if (dispmanx_client.update_callback ) {
+- vcos_assert( dispmanx_client.pending_update_handle == handle);
+ dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param);
+ }
+ } else {
+--
+2.8.1
+
diff --git a/buildroot-external/package/userland-tools/0003-Disable-Werror-everywhere.patch b/buildroot-external/package/userland-tools/0003-Disable-Werror-everywhere.patch
new file mode 100644
index 00000000..27c8acdd
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0003-Disable-Werror-everywhere.patch
@@ -0,0 +1,165 @@
+From cc9ac86bcff79697d354cc51d3a984fd0f362868 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer
+Date: Thu, 22 Sep 2016 22:59:11 +0200
+Subject: [PATCH] Disable Werror everywhere
+
+With gcc-5.1, some constructs that were previously accepted (but wrong)
+are now considered warnings, and thus -Werror makes them errors.
+
+Ditch -Werror altoghether.
+
+Signed-off-by: "Yann E. MORIN"
+
+[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]
+Signed-off-by: Peter Seiderer
+
+[Rebased for rpi-userland-8f0abfb07b96e7ee85f46e59d895014ec5e25f5e]
+Signed-off-by: Peter Seiderer
+
+[Rebased for rpi-userland-5070cb7fc150fc98f1ed64a7739c3356970d9f76]
+Signed-off-by: Peter Seiderer
+---
+ host_applications/android/apps/vidtex/CMakeLists.txt | 2 +-
+ host_applications/linux/apps/gencmd/CMakeLists.txt | 2 +-
+ host_applications/linux/apps/raspicam/CMakeLists.txt | 2 +-
+ host_applications/linux/apps/smem/CMakeLists.txt | 2 +-
+ host_applications/linux/libs/bcm_host/CMakeLists.txt | 2 +-
+ host_applications/linux/libs/sm/CMakeLists.txt | 2 +-
+ interface/mmal/CMakeLists.txt | 2 +-
+ interface/vcos/CMakeLists.txt | 2 +-
+ interface/vcos/pthreads/CMakeLists.txt | 2 +-
+ interface/vmcs_host/CMakeLists.txt | 2 +-
+ 10 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/host_applications/android/apps/vidtex/CMakeLists.txt b/host_applications/android/apps/vidtex/CMakeLists.txt
+index 6d66d69..06a3192 100644
+--- a/host_applications/android/apps/vidtex/CMakeLists.txt
++++ b/host_applications/android/apps/vidtex/CMakeLists.txt
+@@ -1,6 +1,6 @@
+ cmake_minimum_required(VERSION 2.8)
+
+-SET(COMPILE_DEFINITIONS -Werror -Wall)
++SET(COMPILE_DEFINITIONS -Wall)
+
+ # Set --no-as-needed to stop the linker discarding mmal_vc_client
+ # as it can't see that the constructor registers a load of functionality
+diff --git a/host_applications/linux/apps/gencmd/CMakeLists.txt b/host_applications/linux/apps/gencmd/CMakeLists.txt
+index f95d1a1..034bf20 100644
+--- a/host_applications/linux/apps/gencmd/CMakeLists.txt
++++ b/host_applications/linux/apps/gencmd/CMakeLists.txt
+@@ -4,7 +4,7 @@ if (WIN32)
+ set(VCOS_PLATFORM win32)
+ else ()
+ set(VCOS_PLATFORM pthreads)
+- add_definitions(-Wall -Werror)
++ add_definitions(-Wall )
+ endif ()
+
+ include_directories( ../../../..
+diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt
+index f7db21e..b94bdc3 100644
+--- a/host_applications/linux/apps/raspicam/CMakeLists.txt
++++ b/host_applications/linux/apps/raspicam/CMakeLists.txt
+@@ -1,7 +1,7 @@
+
+ # raspistill/raspivid/raspiyuv
+
+-SET(COMPILE_DEFINITIONS -Werror)
++SET(COMPILE_DEFINITIONS )
+
+ # Set --no-as-needed to stop the linker discarding mmal_vc_client
+ # as it can't see that the constructor registers a load of functionality
+diff --git a/host_applications/linux/apps/smem/CMakeLists.txt b/host_applications/linux/apps/smem/CMakeLists.txt
+index 0fa8328..f0d1e77 100644
+--- a/host_applications/linux/apps/smem/CMakeLists.txt
++++ b/host_applications/linux/apps/smem/CMakeLists.txt
+@@ -4,7 +4,7 @@ get_filename_component (VIDEOCORE_ROOT ../../../.. ABSOLUTE)
+ include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake)
+
+ if (NOT WIN32)
+- add_definitions(-Wall -Werror)
++ add_definitions(-Wall )
+ endif ()
+
+ include_directories (
+diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+index 2154e53..c23779b 100644
+--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt
++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+@@ -3,7 +3,7 @@ if (WIN32)
+ set(VCOS_PLATFORM win32)
+ else ()
+ set(VCOS_PLATFORM pthreads)
+- add_definitions(-Wall -Werror)
++ add_definitions(-Wall )
+ endif ()
+
+ # set this as we want all the source of vchostif to be available in libbcm_host
+diff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt
+index 5ce5aca..02aea7c 100644
+--- a/host_applications/linux/libs/sm/CMakeLists.txt
++++ b/host_applications/linux/libs/sm/CMakeLists.txt
+@@ -3,7 +3,7 @@ if (WIN32)
+ set(VCOS_PLATFORM win32)
+ else ()
+ set(VCOS_PLATFORM pthreads)
+- add_definitions(-Wall -Werror)
++ add_definitions(-Wall )
+ endif ()
+
+ include_directories( ../../../..
+diff --git a/interface/mmal/CMakeLists.txt b/interface/mmal/CMakeLists.txt
+index 46f149d..06273dc 100644
+--- a/interface/mmal/CMakeLists.txt
++++ b/interface/mmal/CMakeLists.txt
+@@ -3,7 +3,7 @@ if (NOT DEFINED LIBRARY_TYPE)
+ set(LIBRARY_TYPE SHARED)
+ endif (NOT DEFINED LIBRARY_TYPE)
+
+-add_definitions(-Wall -Werror)
++add_definitions(-Wall )
+
+ add_library(mmal SHARED util/mmal_util.c)
+
+diff --git a/interface/vcos/CMakeLists.txt b/interface/vcos/CMakeLists.txt
+index 23a8d72..988b104 100644
+--- a/interface/vcos/CMakeLists.txt
++++ b/interface/vcos/CMakeLists.txt
+@@ -43,7 +43,7 @@ foreach (header ${HEADERS})
+ endforeach ()
+
+ if (CMAKE_COMPILER_IS_GNUCC)
+- add_definitions (-ggdb -Werror -Wall)
++ add_definitions (-ggdb -Wall)
+ endif ()
+
+ if (CMAKE_COMPILER_2005)
+diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt
+index 1d81ca3..b35cd8e 100644
+--- a/interface/vcos/pthreads/CMakeLists.txt
++++ b/interface/vcos/pthreads/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ # MSVC5 does not fully support C99, enabling declaration-after-statement
+ # warnings allows a common MSVC5 build error to be detected in Linux builds.
+ if (CMAKE_COMPILER_IS_GNUCC)
+- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement")
++ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement")
+ add_definitions (-D_GNU_SOURCE)
+ endif ()
+
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index a157db1..dc384ca 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -2,7 +2,7 @@
+ # interface/vmcs_host
+
+ # not working in release build
+-# add_definitions(-Werror)
++# add_definitions()
+
+ # vc_vchi_gencmd.c has a type-punning problem in vc_gencmd_read_response
+ add_definitions(-fno-strict-aliasing)
+--
+2.23.0
+
diff --git a/buildroot-external/package/userland-tools/0004-host-applications-disable-missing-applications.patch b/buildroot-external/package/userland-tools/0004-host-applications-disable-missing-applications.patch
new file mode 100644
index 00000000..08039123
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0004-host-applications-disable-missing-applications.patch
@@ -0,0 +1,34 @@
+From c8d2c332da2a03ed80d62628bbf54187a66f49b6 Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN"
+Date: Fri, 24 Jul 2015 20:20:33 +0200
+Subject: [PATCH] host-applications: disable missing applications
+
+Those applications are missing from the public rpi-firmware package, so
+do not even try to build them.
+
+Signed-off-by: "Yann E. MORIN"
+
+[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]
+Signed-off-by: Peter Seiderer
+---
+ host_applications/linux/CMakeLists.txt | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt
+index 5a648e7..83bb66e 100644
+--- a/host_applications/linux/CMakeLists.txt
++++ b/host_applications/linux/CMakeLists.txt
+@@ -12,10 +12,7 @@ add_subdirectory(apps/dtoverlay)
+ add_subdirectory(apps/dtmerge)
+
+ if(ALL_APPS)
+- add_subdirectory(apps/vcdbg)
+- add_subdirectory(libs/elftoolchain)
+ # add_subdirectory(apps/smct)
+- add_subdirectory(apps/edid_parser)
+ add_subdirectory(apps/hello_pi)
+ endif()
+
+--
+2.8.1
+
diff --git a/buildroot-external/package/userland-tools/0005-dtmerge-add-missing-include-for-va_list.patch b/buildroot-external/package/userland-tools/0005-dtmerge-add-missing-include-for-va_list.patch
new file mode 100644
index 00000000..f028f67b
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0005-dtmerge-add-missing-include-for-va_list.patch
@@ -0,0 +1,34 @@
+From 1ffed0e8601afb7e65545bd545772edd0fccc404 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer
+Date: Sat, 23 Apr 2016 17:48:13 +0200
+Subject: [PATCH] dtmerge: add missing include for va_list
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes compile error with uclibc-1.0.14:
+
+ In file included from rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/host_applications/linux/apps/dtmerge/dtmerge.c:32:0:
+ rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/helpers/dtoverlay/dtoverlay.h:65:54: error: unknown type name ‘va_list’
+ const char *fmt, va_list args);
+
+Signed-off-by: Peter Seiderer
+---
+ host_applications/linux/apps/dtmerge/dtmerge.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/host_applications/linux/apps/dtmerge/dtmerge.c b/host_applications/linux/apps/dtmerge/dtmerge.c
+index 9243da1..2ac8d39 100644
+--- a/host_applications/linux/apps/dtmerge/dtmerge.c
++++ b/host_applications/linux/apps/dtmerge/dtmerge.c
+@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include
+ #include
+ #include
++#include
+
+ #include "dtoverlay.h"
+
+--
+2.8.1
+
diff --git a/buildroot-external/package/userland-tools/0006-linux-tools-only.patch b/buildroot-external/package/userland-tools/0006-linux-tools-only.patch
new file mode 100644
index 00000000..980e0fcc
--- /dev/null
+++ b/buildroot-external/package/userland-tools/0006-linux-tools-only.patch
@@ -0,0 +1,142 @@
+From 54c913784e94825d604e3e4323bf4979f399037a Mon Sep 17 00:00:00 2001
+From: j1nx
+Date: Tue, 4 Aug 2020 15:12:49 +0200
+Subject: [PATCH 1/1] Linux tools only
+
+---
+ CMakeLists.txt | 68 +++++++++++++-------------
+ host_applications/linux/CMakeLists.txt | 10 ++--
+ 2 files changed, 39 insertions(+), 39 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fe67fc8..9496af0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -22,20 +22,20 @@ set(VCOS_PTHREADS_BUILD_SHARED TRUE)
+
+ include(makefiles/cmake/global_settings.cmake)
+ include(makefiles/cmake/arm-linux.cmake)
+-include(makefiles/cmake/vmcs.cmake)
++#include(makefiles/cmake/vmcs.cmake)
+
+ enable_language(ASM)
+
+ # Global include paths
+ include_directories(host_applications/framework)
+ include_directories(${PROJECT_SOURCE_DIR})
+-include_directories(interface/vcos/pthreads)
+-include_directories(interface/vmcs_host/linux)
+-include_directories(interface/vmcs_host)
+-include_directories(interface/vmcs_host/khronos)
+-include_directories(interface/khronos/include)
+-include_directories(${PROJECT_BINARY_DIR})
+-include_directories(interface/vchiq_arm)
++#include_directories(interface/vcos/pthreads)
++#include_directories(interface/vmcs_host/linux)
++#include_directories(interface/vmcs_host)
++#include_directories(interface/vmcs_host/khronos)
++#include_directories(interface/khronos/include)
++#include_directories(${PROJECT_BINARY_DIR})
++#include_directories(interface/vchiq_arm)
+ #include_directories(tools/inet_transport)
+ include_directories(host_support/include)
+
+@@ -63,28 +63,28 @@ if(KHRONOS_EGL_PLATFORM MATCHES "openwfc")
+ endif()
+
+ # List of subsidiary CMakeLists
+-add_subdirectory(interface/vcos)
+-add_subdirectory(interface/vmcs_host)
+-add_subdirectory(interface/vchiq_arm)
+-if(NOT ARM64)
+- add_subdirectory(interface/khronos)
+-endif()
++#add_subdirectory(interface/vcos)
++#add_subdirectory(interface/vmcs_host)
++#add_subdirectory(interface/vchiq_arm)
++#if(NOT ARM64)
++# add_subdirectory(interface/khronos)
++#endif()
+
+ #add_subdirectory(opensrc/tools/lua)
+-if(BUILD_MMAL)
+- include_directories(interface/mmal)
+- add_subdirectory(interface/mmal)
+- add_subdirectory(containers)
+-endif()
++#if(BUILD_MMAL)
++# include_directories(interface/mmal)
++# add_subdirectory(interface/mmal)
++# add_subdirectory(containers)
++#endif()
+
+ # VidTex supports Android and Linux
+-if(BUILD_MMAL_APPS)
+-add_subdirectory(host_applications/android/apps/vidtex)
+-endif(BUILD_MMAL_APPS)
++#if(BUILD_MMAL_APPS)
++#add_subdirectory(host_applications/android/apps/vidtex)
++#endif(BUILD_MMAL_APPS)
+
+-if(NOT ARM64)
+- add_subdirectory(middleware/openmaxil)
+-endif()
++#if(NOT ARM64)
++# add_subdirectory(middleware/openmaxil)
++#endif()
+
+ # 3d demo code
+ #if(NOT ANDROID)
+@@ -118,15 +118,15 @@ add_subdirectory(helpers/dtoverlay)
+ set(vmcs_host_apps_VERSION_MAJOR 1)
+ set(vmcs_host_apps_VERSION_MINOR 0)
+
+-include_directories("${PROJECT_BINARY_DIR}")
+-include(FindPkgConfig QUIET)
+-if(PKG_CONFIG_FOUND)
++#include_directories("${PROJECT_BINARY_DIR}")
++#include(FindPkgConfig QUIET)
++#if(PKG_CONFIG_FOUND)
+ # Produce a pkg-config file
+- foreach(PCFILE bcm_host.pc brcmegl.pc brcmglesv2.pc brcmvg.pc vcsm.pc mmal.pc)
+- configure_file("pkgconfig/${PCFILE}.in" "${PCFILE}" @ONLY)
+- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PCFILE}"
+- DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+- endforeach()
+-endif()
++# foreach(PCFILE bcm_host.pc brcmegl.pc brcmglesv2.pc brcmvg.pc vcsm.pc mmal.pc)
++# configure_file("pkgconfig/${PCFILE}.in" "${PCFILE}" @ONLY)
++# install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PCFILE}"
++# DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
++# endforeach()
++#endif()
+ # Remove cache entry, if one added by command line
+ unset(KHRONOS_EGL_PLATFORM CACHE)
+diff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt
+index 928b637..9ef9cab 100644
+--- a/host_applications/linux/CMakeLists.txt
++++ b/host_applications/linux/CMakeLists.txt
+@@ -1,15 +1,15 @@
+ # linux apps
+
+-add_subdirectory(libs/bcm_host)
+-add_subdirectory(apps/gencmd)
+-add_subdirectory(apps/tvservice)
+-add_subdirectory(apps/vcmailbox)
++#add_subdirectory(libs/bcm_host)
++#add_subdirectory(apps/gencmd)
++#add_subdirectory(apps/tvservice)
++#add_subdirectory(apps/vcmailbox)
+ if(NOT ARM64)
+ add_subdirectory(apps/raspicam)
+ add_subdirectory(libs/sm)
+ add_subdirectory(apps/smem)
+ endif()
+-add_subdirectory(libs/debug_sym)
++#add_subdirectory(libs/debug_sym)
+ add_subdirectory(apps/dtoverlay)
+ add_subdirectory(apps/dtmerge)
+
+--
+2.20.1
+
diff --git a/buildroot-external/package/userland-tools/Config.in b/buildroot-external/package/userland-tools/Config.in
new file mode 100644
index 00000000..5332807f
--- /dev/null
+++ b/buildroot-external/package/userland-tools/Config.in
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_USERLAND_TOOLS
+ bool "userland-tools"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on !BR2_STATIC_LIBS
+ help
+ Raspberry Pi Userland contains the necessary library to use
+ the VideoCore driver.
+
+ Includes source for the ARM side code to interface to: EGL,
+ mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC,
+ OpenVG.
+
+ https://github.com/raspberrypi/userland/
diff --git a/buildroot-external/package/userland-tools/userland-tools.hash b/buildroot-external/package/userland-tools/userland-tools.hash
new file mode 100644
index 00000000..5506a6ef
--- /dev/null
+++ b/buildroot-external/package/userland-tools/userland-tools.hash
@@ -0,0 +1,3 @@
+# Locally computed
+sha256 274560adc7afac65b79f4564915d63275b6b220ec0fa29019ece3eb3ca9e0ef2 userland-tools-3e59217bd93b8024fb8fc1c6530b00cbae64bc73.tar.gz
+sha256 bee6f1249175683d8610651706e1aa7dffcbfd3f9c4c05bc1e5ab34f313c2db5 LICENCE
diff --git a/buildroot-external/package/userland-tools/userland-tools.mk b/buildroot-external/package/userland-tools/userland-tools.mk
new file mode 100644
index 00000000..6d7fe00b
--- /dev/null
+++ b/buildroot-external/package/userland-tools/userland-tools.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# userland-tools
+#
+################################################################################
+
+USERLAND_TOOLS_VERSION = 3e59217bd93b8024fb8fc1c6530b00cbae64bc73
+USERLAND_TOOLS_SITE = $(call github,raspberrypi,userland,$(USERLAND_TOOLS_VERSION))
+USERLAND_TOOLS_LICENSE = BSD-3-Clause
+USERLAND_TOOLS_LICENSE_FILES = LICENCE
+USERLAND_TOOLS_CONF_OPTS = -DVMCS_INSTALL_PREFIX=/usr -DALL_APPS=OFF -DARM64=y
+
+$(eval $(cmake-package))