commit:     d38b1ad7fccabb3b3b22c649817a655098c35561
Author:     Gonçalo Negrier Duarte <gonegrier.duarte <AT> gmail <DOT> com>
AuthorDate: Mon Jun  3 10:39:31 2024 +0000
Commit:     Gonçalo Negrier Duarte <gonegrier.duarte <AT> gmail <DOT> com>
CommitDate: Mon Jun  3 10:41:43 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d38b1ad7

media-libs/imgui: improve meson build system

Signed-off-by: Gonçalo Negrier Duarte <gonegrier.duarte <AT> gmail.com>

 media-libs/imgui/files/imgui-meson.build           | 73 +++++++++++++---------
 media-libs/imgui/files/imgui-meson_options.txt     |  4 +-
 ...gui-1.89.9-r1.ebuild => imgui-1.89.9-r2.ebuild} |  8 ++-
 media-libs/imgui/imgui-1.90.7.ebuild               | 68 --------------------
 media-libs/imgui/metadata.xml                      |  4 +-
 5 files changed, 55 insertions(+), 102 deletions(-)

diff --git a/media-libs/imgui/files/imgui-meson.build 
b/media-libs/imgui/files/imgui-meson.build
index cb27420aa..2cdbad960 100644
--- a/media-libs/imgui/files/imgui-meson.build
+++ b/media-libs/imgui/files/imgui-meson.build
@@ -20,6 +20,8 @@ sources = files(
   'imgui_widgets.cpp',
 )
 
+headers = files()
+
 cpp = meson.get_compiler('cpp')
 dependencies = []
 
@@ -29,46 +31,66 @@ dx9_dep = cpp.find_library('d3d9', required: 
get_option('dx9'))
 if dx9_dep.found()
   sources += 'backends/imgui_impl_dx9.cpp'
   dependencies += dx9_dep
+  headers += files('backends/imgui_impl_dx9.h')
 endif
 dx10_dep = cpp.find_library('d3d10', required: get_option('dx10'))
 if dx10_dep.found()
   sources += 'backends/imgui_impl_dx10.cpp'
   dependencies += dx10_dep
+  headers += files('backends/imgui_impl_dx10.h')
 endif
 dx11_dep = cpp.find_library('d3d11', required: get_option('dx11'))
 if dx11_dep.found()
   sources += 'backends/imgui_impl_dx11.cpp'
   dependencies += dx11_dep
+  headers += files('backends/imgui_impl_dx11.h')
 endif
 dx12_dep = cpp.find_library('d3d12', required: get_option('dx12'))
 # MinGW does not work. See https://github.com/ocornut/imgui/pull/4604
 if dx12_dep.found() and cpp.get_argument_syntax() == 'msvc'
   sources += 'backends/imgui_impl_dx12.cpp'
   dependencies += dx12_dep
+  headers += files('backends/imgui_impl_dx12.h')
 endif
 metal_dep = dependency('appleframeworks', modules: ['Foundation', 'AppKit', 
'GameController', 'Metal'], required: get_option('metal'))
 if metal_dep.found()
   sources += 'backends/imgui_impl_metal.mm'
   dependencies += metal_dep
+  headers += files('backends/imgui_impl_metal.h')
 endif
 libgl_dep = dependency('gl', required: get_option('opengl'))
+opengl_src = files(
+  'backends/imgui_impl_opengl2.cpp',
+  'backends/imgui_impl_opengl3.cpp')
 if libgl_dep.found()
-  sources += 'backends/imgui_impl_opengl3.cpp'
+  sources += opengl_src
   dependencies += libgl_dep
   dependencies += cpp.find_library('dl', required: false)
+  headers = files('backends/imgui_impl_opengl2.h', 
+    'backends/imgui_impl_opengl3.h', 
+    'backends/imgui_impl_opengl3_loader.h')
 endif
-sdl2_renderer_dep = dependency('sdl2', version: '>=2.0.17', required: 
get_option('sdl_renderer'))
+sdl2_renderer_dep = dependency('sdl2', version: '>=2.0.17', required: 
get_option('sdl2_renderer'))
 if sdl2_renderer_dep.found()
   sources += 'backends/imgui_impl_sdlrenderer2.cpp'
   dependencies += sdl2_renderer_dep
+  headers += files('backends/imgui_impl_sdlrenderer2.h')
+endif
+sdl3_renderer_dep = dependency('sdl3', version: '>=3.0.0', required: 
get_option('sdl3_renderer'))
+if sdl3_renderer_dep.found()
+  sources += 'backends/imgui_impl_sdlrenderer3.cpp'
+  dependencies += sdl3_renderer_dep
+  headers += files('backends/imgui_impl_sdlrenderer3.h')
 endif
 vulkan_dep = dependency('vulkan', required: get_option('vulkan'))
 if vulkan_dep.found()
   sources += 'backends/imgui_impl_vulkan.cpp'
   dependencies += vulkan_dep
+  headers += files('backends/imgui_impl_vulkan.h')
 endif
 if cpp.has_header('webgpu/webgpu.h', required: get_option('webgpu'))
   sources += 'backends/imgui_impl_wgpu.cpp'
+  headers += files('backends/imgui_impl_wgpu.h')
 endif
 
 # platform backends
@@ -76,20 +98,30 @@ glfw_dep = dependency('glfw3', required: get_option('glfw'))
 if glfw_dep.found()
   sources += 'backends/imgui_impl_glfw.cpp'
   dependencies += glfw_dep
+  headers += files('backends/imgui_impl_glfw.h')
 endif
 sdl2_dep = dependency('sdl2', required: get_option('sdl2'))
 if sdl2_dep.found()
   sources += 'backends/imgui_impl_sdl2.cpp'
   dependencies += sdl2_dep
+  headers += files('backends/imgui_impl_sdl2.h')
+endif
+sdl3_dep = dependency('sdl3', required: get_option('sdl3'))
+if sdl3_dep.found()
+  sources += 'backends/imgui_impl_sdl3.cpp'
+  dependencies += sdl3_dep
+  headers += files('backends/imgui_impl_sdl3.h')
 endif
 osx_dep = dependency('appleframeworks', modules: ['Carbon', 'Cocoa', 
'GameController'], required: get_option('osx'))
 if osx_dep.found()
   sources += 'backends/imgui_impl_osx.mm'
+  headers += files('backends/imgui_impl_osx.h')
 endif
 win_dep = cpp.find_library('dwmapi', required: get_option('win'))
 if win_dep.found()
   sources += 'backends/imgui_impl_win32.cpp'
   dependencies += win_dep
+  headers += files('backends/imgui_impl_win32.h')
 endif
 
 # frameworks
@@ -98,6 +130,7 @@ allegro5_primitives_dep = dependency('allegro_primitives-5', 
required: get_optio
 if allegro5_dep.found() and allegro5_primitives_dep.found()
   sources += 'backends/imgui_impl_allegro5.cpp'
   dependencies += [allegro5_dep, allegro5_primitives_dep]
+  headers+= files('backends/imgui_impl_allegro5.h')
 endif
 
 api = '-DIMGUI_API=__attribute__((visibility("default")))'
@@ -116,38 +149,20 @@ imgui = library(
   install: true
 )
 
-pkg_mod = import('pkgconfig')
-pkg_mod.generate(imgui,
-  description : 'Dear ImGui: Bloat-free Graphical User interface for C++ with 
minimal dependencies'
-)
-
-install_headers(
+headers += files(
     'imconfig.h',
     'imgui.h',
     'imgui_internal.h',
     'imstb_rectpack.h',
     'imstb_textedit.h',
-    'imstb_truetype.h',
-    'backends/imgui_impl_allegro5.h',
-    'backends/imgui_impl_android.h',
-    'backends/imgui_impl_dx10.h',
-    'backends/imgui_impl_dx11.h',
-    'backends/imgui_impl_dx12.h',
-    'backends/imgui_impl_glfw.h',
-    'backends/imgui_impl_glut.h',
-    'backends/imgui_impl_metal.h',
-    'backends/imgui_impl_opengl2.h',
-    'backends/imgui_impl_opengl3.h',
-    'backends/imgui_impl_opengl3_loader.h',
-    'backends/imgui_impl_osx.h',
-    'backends/imgui_impl_sdl2.h',
-    'backends/imgui_impl_sdl3.h',
-    'backends/imgui_impl_sdlrenderer2.h',
-    'backends/imgui_impl_sdlrenderer3.h',
-    'backends/imgui_impl_vulkan.h',
-    'backends/imgui_impl_wgpu.h',
-    'backends/imgui_impl_win32.h',
-    subdir: 'imgui')
+    'imstb_truetype.h',)
+
+install_headers(headers, subdir: 'imgui')
+
+pkg_mod = import('pkgconfig')
+pkg_mod.generate(imgui,
+  description : 'Dear ImGui: Bloat-free Graphical User interface for C++ with 
minimal dependencies'
+)
 
 if host_machine.system() == 'windows'
   api = '-DIMGUI_API=@0@'.format(get_option('default_library') != 'static' ? 
'__declspec(dllimport)' : '')

diff --git a/media-libs/imgui/files/imgui-meson_options.txt 
b/media-libs/imgui/files/imgui-meson_options.txt
index 967c85f64..d5941684a 100644
--- a/media-libs/imgui/files/imgui-meson_options.txt
+++ b/media-libs/imgui/files/imgui-meson_options.txt
@@ -5,13 +5,15 @@ option('dx11', type : 'feature', value : 'auto')
 option('dx12', type : 'feature', value : 'auto')
 option('metal', type : 'feature', value : 'auto')
 option('opengl', type : 'feature', value : 'auto')
-option('sdl_renderer', type : 'feature', value : 'auto')
+option('sdl2_renderer', type : 'feature', value : 'auto')
+option('sdl3_renderer', type : 'feature', value : 'auto')
 option('vulkan', type : 'feature', value : 'auto')
 option('webgpu', type : 'feature', value : 'auto')
 
 # platform backends
 option('glfw', type : 'feature', value : 'auto')
 option('sdl2', type : 'feature', value : 'auto')
+option('sdl3', type : 'feature', value : 'auto')
 option('osx', type : 'feature', value : 'auto')
 option('win', type : 'feature', value : 'auto')
 

diff --git a/media-libs/imgui/imgui-1.89.9-r1.ebuild 
b/media-libs/imgui/imgui-1.89.9-r2.ebuild
similarity index 87%
rename from media-libs/imgui/imgui-1.89.9-r1.ebuild
rename to media-libs/imgui/imgui-1.89.9-r2.ebuild
index 917ecd30c..80fab10f6 100644
--- a/media-libs/imgui/imgui-1.89.9-r1.ebuild
+++ b/media-libs/imgui/imgui-1.89.9-r2.ebuild
@@ -17,7 +17,7 @@ 
SRC_URI="https://github.com/ocornut/imgui/archive/v${PV}.tar.gz -> imgui-${PV}.t
 LICENSE="MIT"
 SLOT="0/${PV}"
 KEYWORDS="~amd64"
-IUSE="opengl vulkan glfw sdl2 sdl_renderer webgpu allegro5"
+IUSE="opengl vulkan glfw sdl2 sdl3 sdl2_renderer sdl3_renderer webgpu allegro5"
 
 RDEPEND="
        dev-libs/stb:=
@@ -26,7 +26,7 @@ RDEPEND="
        glfw? ( media-libs/glfw:0[${MULTILIB_USEDEP}] )
        opengl? ( virtual/opengl[${MULTILIB_USEDEP}] )
        sdl2? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
-       sdl_renderer? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
+       sdl2_renderer? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
        vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
        webgpu? ( dev-util/webgpu-headers )
 "
@@ -58,7 +58,9 @@ multilib_src_configure() {
                $(meson_feature vulkan)
                $(meson_feature glfw)
                $(meson_feature sdl2)
-               $(meson_feature sdl_renderer)
+               $(meson_feature sdl2_renderer)
+               -Dsdl3=disabled
+               -Dsdl3_renderer=disabled
                $(meson_feature webgpu)
                -Dosx=disabled
                -Dwin=disabled

diff --git a/media-libs/imgui/imgui-1.90.7.ebuild 
b/media-libs/imgui/imgui-1.90.7.ebuild
deleted file mode 100644
index 917ecd30c..000000000
--- a/media-libs/imgui/imgui-1.90.7.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson-multilib
-
-MESON_WRAP_VER="1"
-
-DESCRIPTION="Bloat-free graphical user interface library for C++"
-HOMEPAGE="
-       https://github.com/ocornut/imgui
-"
-
-SRC_URI="https://github.com/ocornut/imgui/archive/v${PV}.tar.gz -> 
imgui-${PV}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0/${PV}"
-KEYWORDS="~amd64"
-IUSE="opengl vulkan glfw sdl2 sdl_renderer webgpu allegro5"
-
-RDEPEND="
-       dev-libs/stb:=
-       media-libs/glew[${MULTILIB_USEDEP}]
-       allegro5? ( media-libs/allegro:5[${MULTILIB_USEDEP}] )
-       glfw? ( media-libs/glfw:0[${MULTILIB_USEDEP}] )
-       opengl? ( virtual/opengl[${MULTILIB_USEDEP}] )
-       sdl2? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
-       sdl_renderer? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
-       vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
-       webgpu? ( dev-util/webgpu-headers )
-"
-DEPEND="
-       ${RDEPEND}
-       vulkan? ( dev-util/vulkan-headers )
-"
-BDEPEND="
-       virtual/pkgconfig
-"
-
-src_prepare() {
-       default
-
-       # Use custom meson.build and meson_options.txt to install instead of 
relay on packages
-       cp "${FILESDIR}/${PN}-meson.build" "${S}/meson.build" || die
-       cp "${FILESDIR}/${PN}-meson_options.txt" "${S}/meson_options.txt" || die
-       sed -i "s/  version: 'PV',/  version: '${PV}',/g" "${S}/meson.build" || 
die
-}
-
-multilib_src_configure() {
-       local emesonargs=(
-               -Ddx9=disabled
-               -Ddx10=disabled
-               -Ddx11=disabled
-               -Ddx12=disabled
-               -Dmetal=disabled
-               $(meson_feature opengl)
-               $(meson_feature vulkan)
-               $(meson_feature glfw)
-               $(meson_feature sdl2)
-               $(meson_feature sdl_renderer)
-               $(meson_feature webgpu)
-               -Dosx=disabled
-               -Dwin=disabled
-               $(meson_feature allegro5)
-       )
-       meson_src_configure
-}

diff --git a/media-libs/imgui/metadata.xml b/media-libs/imgui/metadata.xml
index 6719588bc..6273590a2 100644
--- a/media-libs/imgui/metadata.xml
+++ b/media-libs/imgui/metadata.xml
@@ -15,7 +15,9 @@
         <flag name="opengl">Enable opengl renderer</flag>
         <flag name="vulkan">Enable vulkan renderer</flag>
         <flag name="sdl2">Enable SDL2 backend</flag>
-        <flag name="sdl_renderer">Enable SDL renderer backend</flag>
+               <flag name="sdl2_renderer">Enable SDL2 renderer backend</flag>
+        <flag name="sdl3">Enable SDL3 backend</flag>
+        <flag name="sdl2_renderer">Enable SDL3 renderer backend</flag>
         <flag name="webgpu">Enable webgpu renderer backend</flag>
     </use>
 </pkgmetadata>

Reply via email to