meson: allow egl_native_platform to be specified
authorChia-I Wu <olvaffe@gmail.com>
Wed, 21 Jul 2021 00:52:47 +0000 (17:52 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 21 Jul 2021 23:12:58 +0000 (23:12 +0000)
After commit f8dc22bf61c, it was no longer possible to have explicitly
enabled platforms with surfaceless being the EGL native platform.  This
fixes that by adding -Degl-native-platform.

Fixes: f8dc22bf61c ("meson: drop deprecated EGL platform build options")
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11992>

meson.build
meson_options.txt

index 2c3cbdd..9c968a3 100644 (file)
@@ -358,12 +358,6 @@ with_platform_wayland = _platforms.contains('wayland')
 with_platform_haiku = _platforms.contains('haiku')
 with_platform_windows = _platforms.contains('windows')
 
-if _platforms.length() != 0
-  egl_native_platform = _platforms[0]
-else
-  egl_native_platform = 'surfaceless'
-endif
-
 with_glx = get_option('glx')
 if with_glx == 'auto'
   if with_platform_android
@@ -458,6 +452,26 @@ else
   with_egl = false
 endif
 
+if with_egl
+  _platforms += 'surfaceless'
+  if with_gbm and not with_platform_android
+    _platforms += 'drm'
+  endif
+endif
+
+egl_native_platform = get_option('egl-native-platform')
+if egl_native_platform.contains('auto')
+  if _platforms.length() != 0
+    egl_native_platform = _platforms[0]
+  else
+    egl_native_platform = 'surfaceless'
+  endif
+endif
+
+if with_egl and not _platforms.contains(egl_native_platform)
+  error('-Degl-native-platform does not specify an enabled platform')
+endif
+
 # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
 use_elf_tls = false
 if (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and
index 2c11092..29c402c 100644 (file)
@@ -28,6 +28,16 @@ option(
   description : 'window systems to support. If this is set to `auto`, all platforms applicable will be enabled.'
 )
 option(
+  'egl-native-platform',
+  type : 'combo',
+  value : 'auto',
+  choices : [
+    'auto', 'x11', 'wayland', 'haiku', 'android', 'windows',
+    'surfaceless', 'drm',
+  ],
+  description : 'the window system EGL assumes for EGL_DEFAULT_DISPLAY',
+)
+option(
   'android-stub',
   type : 'boolean',
   value : false,