x11-toolkits/imgui: Switch to release from docking branch

The docking branch has additional features such as Multi-Viewport and
Docking. Several ports require these features.

Improve port:
- Refresh files files/CMakeLists.txt and files/imgui-config.cmake.in.
- Fix SDL2 option.
- Add options/backends: FREETYPE_SVG GLUT SDL3 SDL3_RENDERER SDLGPU3
  (some of them made by default).
- Switch do-test form example_sdl2_opengl3 to example_sdl3_sdlrenderer3.
- Partially fix warnings from portclippy.

PR:		288454 283228
Approved by:	Yuri Victorovich <yuri@freebsd.org>
This commit is contained in:
Vladimir Druzenko 2025-08-05 17:24:29 +03:00
parent 88dd12d5f3
commit 491ff5dada
5 changed files with 207 additions and 66 deletions

View File

@ -1,6 +1,8 @@
PORTNAME= imgui
DISTVERSIONPREFIX= v
DISTVERSION= 1.92.1
DISTVERSIONSUFFIX= -docking
PORTREVISION= 1
CATEGORIES= x11-toolkits
MAINTAINER= yuri@FreeBSD.org
@ -10,24 +12,34 @@ WWW= https://github.com/ocornut/imgui
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
USES= cmake
USE_LDCONFIG= yes
USES= cmake gl
USE_GITHUB= yes
GH_ACCOUNT= ocornut
USE_GL= gl
USE_LDCONFIG= yes
CMAKE_ON= BUILD_SHARED_LIBS
CMAKE_OFF= EMSCRIPTEN IMGUI_TEST_ENGINE
OPTIONS_DEFINE= FREETYPE WCHAR32
LDFLAGS+= -lGL -L${LOCALBASE}/lib
OPTIONS_DEFINE= FREETYPE FREETYPE_SVG WCHAR32
OPTIONS_DEFAULT= GLFW GLUT OPENGL2 OPENGL3 SDL3 SDL3_RENDERER \
SDLGPU3 VULKAN
OPTIONS_MULTI= BACKENDS
OPTIONS_MULTI_BACKENDS= ALLEGRO5 GLFW OPENGL2 OPENGL3 SDL2 SDL2_RENDERER VULKAN
OPTIONS_DEFAULT= GLFW OPENGL2 OPENGL3
OPTIONS_MULTI_BACKENDS= ALLEGRO5 GLFW GLUT OPENGL2 OPENGL3 SDL2 \
SDL2_RENDERER SDL3 SDL3_RENDERER \
SDLGPU3 VULKAN
OPTIONS_SUB= yes
## general options
FREETYPE_CMAKE_BOOL= IMGUI_FREETYPE
FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
FREETYPE_CMAKE_BOOL= IMGUI_FREETYPE
FREETYPE_SVG_DESC= Support SVG fonts via plutosvg
FREETYPE_SVG_LIB_DEPENDS= libplutosvg.so:graphics/plutosvg
FREETYPE_SVG_CMAKE_BOOL= IMGUI_FREETYPE_SVG
WCHAR32_DESC= Use wchar32
WCHAR32_CMAKE_BOOL= IMGUI_USE_WCHAR32
@ -35,47 +47,74 @@ WCHAR32_CMAKE_BOOL= IMGUI_USE_WCHAR32
## backend options
ALLEGRO5_DESC= Install Allegro5 backend
ALLEGRO5_CMAKE_BOOL= IMGUI_BUILD_ALLEGRO5_BINDING
ALLEGRO5_LIB_DEPENDS= liballegro.so:devel/allegro5 # even though binary doesn't link to liballegro.so for some reason
ALLEGRO5_CMAKE_BOOL= IMGUI_BUILD_ALLEGRO5_BINDING
GLFW_DESC= Install GLFW backend
GLFW_CMAKE_BOOL= IMGUI_BUILD_GLFW_BINDING
GLFW_USES= gl
GLFW_USE= GL=gl
GLFW_LIB_DEPENDS= libglfw.so:graphics/glfw
GLFW_CMAKE_BOOL= IMGUI_BUILD_GLFW_BINDING
GLUT_DESC= Install GLUT backend
GLUT_USES= xorg
GLUT_USE= GL=glut XORG=xi,xmu
GLUT_CMAKE_BOOL= IMGUI_BUILD_GLUT_BINDING
OPENGL2_DESC= Install OPENGL2 backend
OPENGL2_USES= gl localbase
OPENGL2_USE= GL=gl
OPENGL2_CMAKE_BOOL= IMGUI_BUILD_OPENGL2_BINDING
OPENGL3_DESC= Install OPENGL3 backend
OPENGL3_USES= gl localbase
OPENGL3_USE= GL=gl
OPENGL3_CMAKE_BOOL= IMGUI_BUILD_OPENGL3_BINDING
SDL2_DESC= Install SDL2 backend
SDL2_USES= localbase sdl
SDL2_PREVENTS= SDL3 SDL3_RENDERER
SDL2_PREVENTS_MSG= INTERFACE_SDL_VERSION conflict
SDL2_USES= sdl
SDL2_USE= SDL=sdl2
SDL2_CMAKE_BOOL= IMGUI_BUILD_SDL2_BINDING
SDL2_RENDERER_DESC= Install SDL2 renderer backend
SDL2_RENDERER_PREVENTS= SDL3 SDL3_RENDERER SDLGPU3
SDL2_RENDERER_PREVENTS_MSG= INTERFACE_SDL_VERSION conflict
SDL2_RENDERER_USES= sdl
SDL2_RENDERER_USE= SDL=sdl2
SDL2_RENDERER_CMAKE_BOOL= IMGUI_BUILD_SDL2_RENDERER_BINDING
SDL3_DESC= Install SDL3 backend
SDL3_PREVENTS= SDL2 SDL2_RENDERER
SDL3_PREVENTS_MSG= INTERFACE_SDL_VERSION conflict
SDL3_USES= sdl
SDL3_USE= SDL=sdl3
SDL3_CMAKE_BOOL= IMGUI_BUILD_SDL3_BINDING
SDL3_RENDERER_DESC= Install SDL3 renderer backend
SDL3_RENDERER_PREVENTS= SDL2 SDL2_RENDERER
SDL3_RENDERER_PREVENTS_MSG= INTERFACE_SDL_VERSION conflict
SDL3_RENDERER_USES= sdl
SDL3_RENDERER_USE= SDL=sdl3
SDL3_RENDERER_CMAKE_BOOL= IMGUI_BUILD_SDL3_RENDERER_BINDING
SDLGPU3_DESC= Install SDL3 GPU backend
SDLGPU3_PREVENTS= SDL2 SDL2_RENDERER
SDLGPU3_PREVENTS_MSG= INTERFACE_SDL_VERSION conflict
SDLGPU3_USES= sdl
SDLGPU3_USE= SDL=sdl3
SDLGPU3_CMAKE_BOOL= IMGUI_BUILD_SDLGPU3_BINDING
VULKAN_DESC= Install Vulkan renderer backend
VULKAN_CMAKE_BOOL= IMGUI_BUILD_VULKAN_BINDING
VULKAN_BUILD_DEPENDS= glslangValidator:graphics/glslang \
glslc:graphics/shaderc \
${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader
VULKAN_CMAKE_BOOL= IMGUI_BUILD_VULKAN_BINDING
post-patch:
@${CP} ${FILESDIR}/CMakeLists.txt ${FILESDIR}/imgui-config.cmake.in ${WRKSRC}
do-test:
@cd ${WRKSRC}/examples/example_sdl2_opengl3 && \
@cd ${WRKSRC}/examples/example_sdl3_sdlrenderer3 && \
${GMAKE} \
CXXFLAGS="${CXXFLAGS} `pkg-config --cflags sdl2` -I${STAGEDIR}${PREFIX}/include -I${WRKSRC}/backends" \
LIBS="`pkg-config --libs sdl2` -lGL" && \
./example_sdl2_opengl3
CXXFLAGS="${CXXFLAGS} `pkg-config --cflags sdl3` -I${STAGEDIR}${PREFIX}/include -I${WRKSRC}/backends" \
LIBS="`pkg-config --libs sdl3` -lGL" && \
./example_sdl3_sdlrenderer3
.include <bsd.port.mk>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1752140333
SHA256 (ocornut-imgui-v1.92.1_GH0.tar.gz) = 32c237c2abf67a2ffccaac17192f711d4a787554b4133187a153d49057d6109c
SIZE (ocornut-imgui-v1.92.1_GH0.tar.gz) = 1925845
TIMESTAMP = 1754255555
SHA256 (ocornut-imgui-v1.92.1-docking_GH0.tar.gz) = 2f308ae014a8f3a46d89cf4db71c814af815b704b8a88b7136bae148eb8f4b71
SIZE (ocornut-imgui-v1.92.1-docking_GH0.tar.gz) = 2087814

View File

@ -15,7 +15,7 @@ add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
target_include_directories(
${PROJECT_NAME}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
$<INSTALL_INTERFACE:include>
)
@ -33,11 +33,15 @@ target_sources(
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
if(IMGUI_BUILD_ALLEGRO5_BINDING)
find_path(ALLEGRO5_INCLUDE_DIRS allegro5/allegro.h)
target_include_directories(${PROJECT_NAME} PRIVATE ${ALLEGRO5_INCLUDE_DIRS})
find_package(Allegro CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Allegro::allegro Allegro::allegro_ttf Allegro::allegro_font Allegro::allegro_main)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.cpp)
endif()
if(IMGUI_BUILD_ANDROID_BINDING)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.cpp)
endif()
if(IMGUI_BUILD_DX9_BINDING)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.cpp)
endif()
@ -55,8 +59,10 @@ if(IMGUI_BUILD_DX12_BINDING)
endif()
if(IMGUI_BUILD_GLFW_BINDING)
find_package(glfw3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC glfw)
if(NOT EMSCRIPTEN)
find_package(glfw3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC glfw)
endif()
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.cpp)
endif()
@ -86,13 +92,31 @@ endif()
if(IMGUI_BUILD_SDL2_BINDING)
find_package(SDL2 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC SDL2::SDL2)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl.cpp)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl2.cpp)
endif()
if(IMGUI_BUILD_SDL2_RENDERER_BINDING)
find_package(SDL2 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC SDL2::SDL2)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer.cpp)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer2.cpp)
endif()
if(IMGUI_BUILD_SDL3_BINDING)
find_package(SDL3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.cpp)
endif()
if(IMGUI_BUILD_SDLGPU3_BINDING)
find_package(SDL3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.cpp)
endif()
if(IMGUI_BUILD_SDL3_RENDERER_BINDING)
find_package(SDL3 CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.cpp)
endif()
if(IMGUI_BUILD_VULKAN_BINDING)
@ -112,10 +136,33 @@ if(IMGUI_FREETYPE)
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_ENABLE_FREETYPE)
endif()
if(IMGUI_FREETYPE_SVG)
find_package(plutosvg CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC plutosvg::plutosvg)
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_ENABLE_FREETYPE_PLUTOSVG)
endif()
if(IMGUI_USE_WCHAR32)
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_USE_WCHAR32)
endif()
if(IMGUI_TEST_ENGINE)
find_package(Stb REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${Stb_INCLUDE_DIR})
target_sources(
${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_capture_tool.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_context.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_coroutine.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_engine.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_exporters.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_perftool.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_ui.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_utils.cpp
)
endif()
list(REMOVE_DUPLICATES BINDINGS_SOURCES)
install(
@ -152,6 +199,10 @@ if(NOT IMGUI_SKIP_HEADERS)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION include)
endif()
if (IMGUI_BUILD_ANDROID_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION include)
endif()
if(IMGUI_BUILD_DX9_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION include)
endif()
@ -198,12 +249,22 @@ if(NOT IMGUI_SKIP_HEADERS)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
endif()
if(IMGUI_BUILD_SDL2_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl.h DESTINATION include)
if(IMGUI_BUILD_SDL3_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
endif()
if(IMGUI_BUILD_SDL2_RENDERER_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer.h DESTINATION include)
if(IMGUI_BUILD_SDLGPU3_BINDING)
install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.h
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3_shaders.h
DESTINATION
include
)
endif()
if(IMGUI_BUILD_SDL3_RENDERER_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION include)
endif()
if(IMGUI_BUILD_VULKAN_BINDING)
@ -217,6 +278,24 @@ if(NOT IMGUI_SKIP_HEADERS)
if(IMGUI_FREETYPE)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
endif()
if(IMGUI_TEST_ENGINE)
install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_capture_tool.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_context.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_coroutine.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_engine.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_exporters.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_imconfig.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_internal.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_perftool.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_ui.h
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_utils.h
DESTINATION
include
)
endif()
endif()
include(CMakePackageConfigHelpers)

View File

@ -1,29 +1,47 @@
# from https://raw.githubusercontent.com/microsoft/vcpkg/master/ports/imgui/imgui-config.cmake.in
cmake_policy(SET CMP0012 NEW)
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
if (@IMGUI_BUILD_GLFW_BINDING@)
find_dependency(glfw3 CONFIG)
endif()
if (@IMGUI_BUILD_GLUT_BINDING@)
find_dependency(GLUT)
endif()
if (@IMGUI_BUILD_SDL2_BINDING@ OR @IMGUI_BUILD_SDL2_RENDERER_BINDING@)
find_dependency(SDL2 CONFIG)
endif()
if (@IMGUI_BUILD_VULKAN_BINDING@)
find_dependency(Vulkan)
endif()
if (@IMGUI_FREETYPE@)
find_dependency(freetype CONFIG)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/imgui-targets.cmake")
# from https://raw.githubusercontent.com/microsoft/vcpkg/master/ports/imgui/imgui-config.cmake.in
cmake_policy(SET CMP0012 NEW)
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
if (@IMGUI_BUILD_GLFW_BINDING@)
if (NOT "@EMSCRIPTEN@")
find_dependency(glfw3 CONFIG)
endif()
endif()
if (@IMGUI_BUILD_GLUT_BINDING@)
find_dependency(GLUT)
endif()
if (@IMGUI_BUILD_SDL2_BINDING@ OR @IMGUI_BUILD_SDL2_RENDERER_BINDING@)
find_dependency(SDL2 CONFIG)
endif()
if (@IMGUI_BUILD_SDL3_BINDING@ OR @IMGUI_BUILD_SDL3_RENDERER_BINDING@ OR @IMGUI_BUILD_SDLGPU3_BINDING@)
find_dependency(SDL3 CONFIG)
endif()
if (@IMGUI_BUILD_VULKAN_BINDING@)
find_dependency(Vulkan)
endif()
if (@IMGUI_FREETYPE@)
find_dependency(freetype CONFIG)
endif()
if (@IMGUI_FREETYPE_SVG@)
find_dependency(plutosvg CONFIG)
endif()
if (@IMGUI_BUILD_ALLEGRO5_BINDING@)
find_dependency(Allegro CONFIG)
endif()
if (@IMGUI_TEST_ENGINE@)
find_dependency(Stb)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/imgui-targets.cmake")

View File

@ -3,11 +3,16 @@ include/imgui.h
%%FREETYPE%%include/imgui_freetype.h
%%ALLEGRO5%%include/imgui_impl_allegro5.h
%%GLFW%%include/imgui_impl_glfw.h
%%GLUT%%include/imgui_impl_glut.h
%%OPENGL2%%include/imgui_impl_opengl2.h
%%OPENGL3%%include/imgui_impl_opengl3.h
%%OPENGL3%%include/imgui_impl_opengl3_loader.h
%%SDL2%%include/imgui_impl_sdl.h
%%SDL2_RENDERER%%include/imgui_impl_sdlrenderer.h
%%SDL2%%include/imgui_impl_sdl2.h
%%SDL3%%include/imgui_impl_sdl3.h
%%SDLGPU3%%include/imgui_impl_sdlgpu3.h
%%SDLGPU3%%include/imgui_impl_sdlgpu3_shaders.h
%%SDL2_RENDERER%%include/imgui_impl_sdlrenderer2.h
%%SDL3_RENDERER%%include/imgui_impl_sdlrenderer3.h
%%VULKAN%%include/imgui_impl_vulkan.h
include/imgui_internal.h
include/imgui_stdlib.h