From 5b45f98255b74589015d5cb0d8ca31d7169c9f34 Mon Sep 17 00:00:00 2001
From: Julien Olivain <ju.o@free.fr>
Date: Fri, 16 Sep 2022 22:30:59 +0200
Subject: [PATCH] demos: makes opengl an optional component

This patch is a port of [1] for the new meson build system.

matrix-code from es2gears has been moved to util in version 9.0.0 [2]
so now es2gears is linked with mesa3d-demo libutil (idep_util).
But at the same time the dependency on glu (dep_glu) has been added
to libutil [3]. dep_glu requires opengl (FULL_GL) to build.

In order to keep the es2gears for egl only builds we have to
split the libutil files list to build readtex.c and showbuffer.c
only if opengl is available.

Add back dep_glu since it's used in util's meson.

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/4936948236
https://gitlab.com/buildroot.org/buildroot/-/jobs/4936948042

[1].
https://git.busybox.net/buildroot/tree/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch?h=2022.08
[2] https://gitlab.freedesktop.org/mesa/demos/-/commit/c33e2f731c2eab86bbad7b6a028f8a90ea40a00c
[3] https://gitlab.freedesktop.org/mesa/demos/-/commit/ef24aae22978d4d357340074ca9a1c04d9cf81e6

Signed-off-by: Julien Olivain <ju.o@free.fr>
[Bernd: rebased for version 9.0.0]
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
[Romain: fix egl only builds in util]
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
 meson.build          |  5 ++++-
 meson_options.txt    |  1 +
 src/egl/meson.build  |  5 ++++-
 src/util/meson.build | 12 +++++++++---
 4 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/meson.build b/meson.build
index 3e39b5a2..f27e1a18 100644
--- a/meson.build
+++ b/meson.build
@@ -39,7 +39,10 @@ add_project_arguments(
 dep_m = cc.find_library('m', required : false)
 dep_winmm = cc.find_library('winmm', required : false)
 
-dep_gl = dependency('gl')
+dep_gl = dependency('gl', required : get_option('gl'))
+if not dep_gl.found()
+  add_project_arguments('-DEGL_NO_X11=1', language: 'c')
+endif
 
 dep_epoll = dependency('epoll-shim', required : false)
 dep_gles1 = dependency('glesv1_cm', required : get_option('gles1'))
diff --git a/meson_options.txt b/meson_options.txt
index 832b916a..c954a710 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,6 @@
 option('with-glut',              type : 'string')
 option('egl',                    type : 'feature')
+option('gl',                     type : 'feature')
 option('gles1',                  type : 'feature')
 option('gles2',                  type : 'feature')
 option('glut',                   type : 'feature')
diff --git a/src/egl/meson.build b/src/egl/meson.build
index d1846921..42bf8ecd 100644
--- a/src/egl/meson.build
+++ b/src/egl/meson.build
@@ -19,7 +19,10 @@
 # SOFTWARE.
 
 subdir('eglut')
-subdir('opengl')
+
+if dep_gl.found()
+  subdir('opengl')
+endif
 
 if dep_gles1.found()
   subdir('opengles1')
diff --git a/src/util/meson.build b/src/util/meson.build
index b4fe614f..4420f28a 100644
--- a/src/util/meson.build
+++ b/src/util/meson.build
@@ -22,13 +22,19 @@ inc_util = include_directories('.')
 
 files_libutil = files(
   'glinfo_common.c',
-  'readtex.c',
-  'showbuffer.c',
   'trackball.c',
   'matrix.c',
 )
 
-_deps = [dep_glu, dep_m]
+_deps = [dep_m]
+if dep_gl.found()
+  files_libutil += files(
+    'readtex.c',
+    'showbuffer.c',
+  )
+  _deps += dep_glu
+endif
+
 if dep_glut.found()
   files_libutil += files('shaderutil.c')
   _deps += dep_glut
-- 
2.41.0

