224 lines
4.7 KiB
Meson
224 lines
4.7 KiB
Meson
project(
|
|
'imgui',
|
|
'cpp',
|
|
license: 'MIT',
|
|
version: '1.92.5',
|
|
meson_version: '>=0.56.0',
|
|
)
|
|
|
|
if host_machine.system() == 'darwin'
|
|
add_languages(
|
|
'objcpp',
|
|
native: false,
|
|
)
|
|
endif
|
|
|
|
include_dirs = include_directories('.', 'backends')
|
|
sources = files(
|
|
'imgui.cpp',
|
|
'imgui_demo.cpp',
|
|
'imgui_draw.cpp',
|
|
'imgui_tables.cpp',
|
|
'imgui_widgets.cpp',
|
|
'misc/cpp/imgui_stdlib.cpp',
|
|
)
|
|
|
|
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
|
|
endif
|
|
dx10_dep = cpp.find_library(
|
|
'd3d10',
|
|
required: get_option('dx10'),
|
|
)
|
|
if dx10_dep.found()
|
|
sources += 'backends/imgui_impl_dx10.cpp'
|
|
dependencies += dx10_dep
|
|
endif
|
|
dx11_dep = cpp.find_library(
|
|
'd3d11',
|
|
required: get_option('dx11'),
|
|
)
|
|
if dx11_dep.found()
|
|
sources += 'backends/imgui_impl_dx11.cpp'
|
|
dependencies += dx11_dep
|
|
endif
|
|
dx12_dep = cpp.find_library(
|
|
'd3d12',
|
|
required: get_option('dx12'),
|
|
)
|
|
if dx12_dep.found()
|
|
sources += 'backends/imgui_impl_dx12.cpp'
|
|
dependencies += dx12_dep
|
|
endif
|
|
dxgi_dep = cpp.find_library(
|
|
'dxgi',
|
|
required: get_option('dx12'),
|
|
)
|
|
if dxgi_dep.found()
|
|
dependencies += dxgi_dep
|
|
endif
|
|
|
|
metal_dep = dependency(
|
|
'appleframeworks',
|
|
modules: ['Foundation', 'AppKit', 'GameController', 'Metal', 'QuartzCore'],
|
|
required: get_option('metal'),
|
|
)
|
|
if metal_dep.found()
|
|
sources += 'backends/imgui_impl_metal.mm'
|
|
dependencies += metal_dep
|
|
endif
|
|
libgl_dep = dependency(
|
|
'gl',
|
|
required: get_option('opengl'),
|
|
)
|
|
if libgl_dep.found()
|
|
sources += 'backends/imgui_impl_opengl3.cpp'
|
|
dependencies += libgl_dep
|
|
dependencies += cpp.find_library(
|
|
'dl',
|
|
required: false,
|
|
)
|
|
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
|
|
endif
|
|
sdl3_renderer_dep = dependency(
|
|
'sdl3',
|
|
version: '>=3.1.8',
|
|
required: get_option('sdl3_renderer'),
|
|
)
|
|
if sdl3_renderer_dep.found()
|
|
sources += 'backends/imgui_impl_sdlrenderer3.cpp'
|
|
dependencies += sdl3_renderer_dep
|
|
endif
|
|
sdl3_gpu_dep = dependency(
|
|
'sdl3',
|
|
version: '>=3.1.8',
|
|
required: get_option('sdl3_gpu'),
|
|
)
|
|
if sdl3_gpu_dep.found()
|
|
sources += 'backends/imgui_impl_sdlgpu3.cpp'
|
|
dependencies += sdl3_gpu_dep
|
|
endif
|
|
vulkan_dep = dependency(
|
|
'vulkan',
|
|
required: get_option('vulkan'),
|
|
)
|
|
if vulkan_dep.found()
|
|
sources += 'backends/imgui_impl_vulkan.cpp'
|
|
dependencies += vulkan_dep
|
|
endif
|
|
if cpp.has_header(
|
|
'webgpu/webgpu.h',
|
|
required: get_option('webgpu'),
|
|
)
|
|
sources += 'backends/imgui_impl_wgpu.cpp'
|
|
endif
|
|
|
|
# platform backends
|
|
glfw_dep = dependency(
|
|
'glfw3',
|
|
version: '>=3.0',
|
|
required: get_option('glfw'),
|
|
)
|
|
if glfw_dep.found()
|
|
sources += 'backends/imgui_impl_glfw.cpp'
|
|
dependencies += glfw_dep
|
|
endif
|
|
sdl2_dep = dependency(
|
|
'sdl2',
|
|
required: get_option('sdl2'),
|
|
)
|
|
if sdl2_dep.found()
|
|
sources += 'backends/imgui_impl_sdl2.cpp'
|
|
dependencies += sdl2_dep
|
|
endif
|
|
sdl3_dep = dependency(
|
|
'sdl3',
|
|
required: get_option('sdl3'),
|
|
)
|
|
if sdl3_dep.found()
|
|
sources += 'backends/imgui_impl_sdl3.cpp'
|
|
dependencies += sdl3_dep
|
|
endif
|
|
osx_dep = dependency(
|
|
'appleframeworks',
|
|
modules: ['Carbon', 'Cocoa', 'GameController'],
|
|
required: get_option('osx'),
|
|
)
|
|
if osx_dep.found()
|
|
sources += 'backends/imgui_impl_osx.mm'
|
|
endif
|
|
win_dep = cpp.find_library(
|
|
'dwmapi',
|
|
required: get_option('win'),
|
|
)
|
|
if win_dep.found()
|
|
sources += 'backends/imgui_impl_win32.cpp'
|
|
dependencies += win_dep
|
|
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]
|
|
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,
|
|
install: true,
|
|
)
|
|
|
|
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,
|
|
)
|
|
|
|
meson.override_dependency('imgui-docking', imgui_dep)
|