Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build-windows-hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ jobs:
vcpkgJsonGlob: "test/self-hosted.json"
vcpkgConfigurationJsonGlob: "test/vcpkg-configuration.json"
runVcpkgInstall: true
runVcpkgFormatString: '[`install`, `--keep-going`, `--triplet`, `$[env.VCPKG_DEFAULT_TRIPLET]`, `--x-feature`, `vulkan`]'
runVcpkgFormatString: '[`install`, `--keep-going`, `--x-feature`, `vulkan`]'
env:
VCPKG_DEFAULT_TRIPLET: "x64-windows"
VCPKG_TARGET_TRIPLET: "x64-windows"
VCPKG_OVERLAY_PORTS: "${{ github.workspace }}/ports"
VCPKG_OVERLAY_TRIPLETS: "${{ github.workspace }}/triplets"
306 changes: 306 additions & 0 deletions ports/imgui/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
cmake_minimum_required(VERSION 3.16)
project(imgui C CXX)

if(APPLE)
set(CMAKE_CXX_STANDARD 11)
enable_language(OBJCXX)
endif()

add_library(imgui "")
add_library(imgui::imgui ALIAS imgui)
target_include_directories(
imgui
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
$<INSTALL_INTERFACE:include>
)

target_sources(
imgui
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/imgui.cpp
${CMAKE_CURRENT_SOURCE_DIR}/imgui_demo.cpp
${CMAKE_CURRENT_SOURCE_DIR}/imgui_draw.cpp
${CMAKE_CURRENT_SOURCE_DIR}/imgui_tables.cpp
${CMAKE_CURRENT_SOURCE_DIR}/imgui_widgets.cpp
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
)

target_compile_features(imgui PUBLIC cxx_std_11)

if(IMGUI_BUILD_ALLEGRO5_BINDING)
find_package(Allegro CONFIG REQUIRED)
target_link_libraries(imgui PRIVATE Allegro::allegro Allegro::allegro_ttf Allegro::allegro_font Allegro::allegro_main)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.cpp)
endif()

if(IMGUI_BUILD_ANDROID_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.cpp)
endif()

if(IMGUI_BUILD_DX9_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.cpp)
endif()

if(IMGUI_BUILD_DX10_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.cpp)
endif()

if(IMGUI_BUILD_DX11_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.cpp)
endif()

if(IMGUI_BUILD_DX12_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.cpp)
endif()

if(IMGUI_BUILD_GLFW_BINDING)
if(NOT EMSCRIPTEN)
find_package(glfw3 CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC glfw)
endif()
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.cpp)
endif()

if(IMGUI_BUILD_GLUT_BINDING)
find_package(GLUT REQUIRED)
target_link_libraries(imgui PUBLIC GLUT::GLUT)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.cpp)
endif()

if(IMGUI_BUILD_METAL_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.mm)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.mm PROPERTIES COMPILE_FLAGS -fobjc-weak)
endif()

if(IMGUI_BUILD_OPENGL2_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.cpp)
endif()

if(IMGUI_BUILD_OPENGL3_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp)
endif()

if(IMGUI_BUILD_OSX_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.mm)
endif()

if(IMGUI_BUILD_SDL3_BINDING)
find_package(SDL3 CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC SDL3::SDL3)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.cpp)
endif()

if(IMGUI_BUILD_SDLGPU3_BINDING)
find_package(SDL3 CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC SDL3::SDL3)
target_sources(imgui 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(imgui PUBLIC SDL3::SDL3)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.cpp)
endif()

if(IMGUI_BUILD_VULKAN_BINDING)
find_package(Vulkan REQUIRED)
target_link_libraries(imgui PUBLIC Vulkan::Vulkan)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.cpp)
endif()

if(IMGUI_BUILD_WIN32_BINDING)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.cpp)
endif()

if(IMGUI_BUILD_WEBGPU_BINDING)
find_package(Dawn CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC dawn::webgpu_dawn)
target_compile_definitions(imgui PRIVATE IMGUI_IMPL_WEBGPU_BACKEND_DAWN)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_wgpu.cpp)
endif()

if(IMGUI_FREETYPE)
find_package(freetype CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC freetype)
target_sources(imgui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp)
target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE)
endif()

if(IMGUI_FREETYPE_SVG)
find_package(plutosvg CONFIG REQUIRED)
target_link_libraries(imgui PUBLIC plutosvg::plutosvg)
target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE_PLUTOSVG)
endif()

if(IMGUI_USE_WCHAR32)
target_compile_definitions(imgui PUBLIC IMGUI_USE_WCHAR32)
endif()

if(IMGUI_TEST_ENGINE)
find_package(Stb REQUIRED)
target_include_directories(imgui PRIVATE ${Stb_INCLUDE_DIR})
target_sources(
imgui
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(
TARGETS imgui
EXPORT imgui_target
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)

foreach(BINDING_TARGET ${BINDING_TARGETS})
install(
TARGETS ${BINDING_TARGET}
EXPORT imgui_target
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
endforeach()

if(NOT IMGUI_SKIP_HEADERS)
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/imgui.h
${CMAKE_CURRENT_SOURCE_DIR}/imconfig.h
${CMAKE_CURRENT_SOURCE_DIR}/imgui_internal.h
${CMAKE_CURRENT_SOURCE_DIR}/imstb_textedit.h
${CMAKE_CURRENT_SOURCE_DIR}/imstb_rectpack.h
${CMAKE_CURRENT_SOURCE_DIR}/imstb_truetype.h
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
DESTINATION include
)

if(IMGUI_BUILD_ALLEGRO5_BINDING)
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()

if(IMGUI_BUILD_DX10_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION include)
endif()

if(IMGUI_BUILD_DX11_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION include)
endif()

if(IMGUI_BUILD_DX12_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION include)
endif()

if(IMGUI_BUILD_GLFW_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION include)
endif()

if(IMGUI_BUILD_GLUT_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION include)
endif()

if(IMGUI_BUILD_METAL_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION include)
endif()

if(IMGUI_BUILD_OPENGL2_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION include)
endif()

if(IMGUI_BUILD_OPENGL3_BINDING)
install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.h
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3_loader.h
DESTINATION
include
)
endif()

if(IMGUI_BUILD_OSX_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
endif()

if(IMGUI_BUILD_SDL3_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
endif()

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)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION include)
endif()

if(IMGUI_BUILD_WIN32_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION include)
endif()

if(IMGUI_BUILD_WEBGPU_BINDING)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_wgpu.h DESTINATION include)
endif()

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)
configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION share/imgui)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION share/imgui)

install(
EXPORT imgui_target
NAMESPACE imgui::
FILE imgui-targets.cmake
DESTINATION share/imgui
)
45 changes: 45 additions & 0 deletions ports/imgui/imgui-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
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_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_BUILD_WEBGPU_BINDING@)
find_dependency(Dawn)
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")
Loading
Loading