mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-10-12 17:51:11 -04:00
media-libs/imgui: set subdirs to imgui in the pkg_mod.generate call
This way, the build systems that integrate with `pkg-config` can instruct compilers to look for the header files at `/usr/include/imgui` instead of making them look up `/usr/include` to no avail. Signed-off-by: Pavel Sobolev <contact@paveloom.dev>
This commit is contained in:
2 files changed
+251
No files matched your search
@@ -0,0 +1,177 @@
|
||||
project(
|
||||
'imgui',
|
||||
'cpp',
|
||||
license: 'MIT',
|
||||
version: 'PV',
|
||||
meson_version: '>=0.50.0',
|
||||
)
|
||||
|
||||
if host_machine.system() == 'darwin'
|
||||
add_languages('objcpp')
|
||||
endif
|
||||
|
||||
include_dirs = include_directories('.', 'backends')
|
||||
sources = files(
|
||||
'misc/cpp/imgui_stdlib.cpp',
|
||||
'imgui.cpp',
|
||||
'imgui_demo.cpp',
|
||||
'imgui_draw.cpp',
|
||||
'imgui_tables.cpp',
|
||||
'imgui_widgets.cpp',
|
||||
)
|
||||
|
||||
headers = files()
|
||||
|
||||
cpp = meson.get_compiler('cpp')
|
||||
dependencies = []
|
||||
|
||||
# renderer backends
|
||||
dependencies += cpp.find_library('d3dcompiler', required: host_machine.system() == 'windows')
|
||||
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 += 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('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
|
||||
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
|
||||
allegro5_dep = dependency('allegro-5', required: get_option('allegro5'))
|
||||
allegro5_primitives_dep = dependency('allegro_primitives-5', required: get_option('allegro5'))
|
||||
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")))'
|
||||
if host_machine.system() == 'windows'
|
||||
api = '-DIMGUI_API=@0@'.format(get_option('default_library') != 'static' ? '__declspec(dllexport)' : '')
|
||||
endif
|
||||
|
||||
imgui = library(
|
||||
'imgui',
|
||||
sources,
|
||||
cpp_args: api,
|
||||
gnu_symbol_visibility: 'hidden',
|
||||
dependencies: dependencies,
|
||||
include_directories: include_dirs,
|
||||
version: meson.project_version(),
|
||||
install: true
|
||||
)
|
||||
|
||||
headers += files(
|
||||
'imconfig.h',
|
||||
'imgui.h',
|
||||
'imgui_internal.h',
|
||||
'imstb_rectpack.h',
|
||||
'imstb_textedit.h',
|
||||
'imstb_truetype.h',)
|
||||
headers_subdir = 'imgui'
|
||||
|
||||
install_headers(headers, subdir: headers_subdir)
|
||||
|
||||
pkg_mod = import('pkgconfig')
|
||||
pkg_mod.generate(imgui,
|
||||
description : 'Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies',
|
||||
subdirs : headers_subdir
|
||||
)
|
||||
|
||||
if host_machine.system() == 'windows'
|
||||
api = '-DIMGUI_API=@0@'.format(get_option('default_library') != 'static' ? '__declspec(dllimport)' : '')
|
||||
endif
|
||||
|
||||
imgui_dep = declare_dependency(
|
||||
compile_args: api,
|
||||
include_directories: include_dirs,
|
||||
link_with: imgui,
|
||||
)
|
||||
@@ -0,0 +1,74 @@
|
||||
# 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="allegro5 glfw sdl2 sdl3 sdl2-renderer sdl3-renderer opengl vulkan webgpu"
|
||||
|
||||
RDEPEND="
|
||||
dev-libs/stb:=
|
||||
media-libs/libglvnd[${MULTILIB_USEDEP}]
|
||||
media-libs/glew[${MULTILIB_USEDEP}]
|
||||
allegro5? ( media-libs/allegro:5[${MULTILIB_USEDEP}] )
|
||||
glfw? ( media-libs/glfw:0[${MULTILIB_USEDEP}] )
|
||||
sdl2? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
|
||||
sdl2-renderer? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )
|
||||
opengl? ( || (
|
||||
>=media-libs/mesa-24.1.0_rc1[opengl,${MULTILIB_USEDEP}]
|
||||
<media-libs/mesa-24.1.0_rc1[gles2,egl(+),${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-r1.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 sdl2-renderer sdl2_renderer)
|
||||
-Dsdl3=disabled
|
||||
-Dsdl3_renderer=disabled
|
||||
$(meson_feature webgpu)
|
||||
-Dosx=disabled
|
||||
-Dwin=disabled
|
||||
$(meson_feature allegro5)
|
||||
)
|
||||
meson_src_configure
|
||||
}
|
||||
Reference in new issue
Block a user