aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Tassoux <contact@rt2.fr>2020-07-16 01:07:40 +0200
committerGitHub <noreply@github.com>2020-07-15 16:07:40 -0700
commit0b78ddc14bf513ddc33fe70099c5993d789c7081 (patch)
tree18874345c95965c802d27a41f6541b4ae9718a1a
parente59e5a417c1460f3cf3d3772d057ec4e7c2247d5 (diff)
downloadvcpkg-0b78ddc14bf513ddc33fe70099c5993d789c7081.tar.gz
vcpkg-0b78ddc14bf513ddc33fe70099c5993d789c7081.zip
[imgui] Split bindings to multiple features (#12329)
* [imgui] Split bindings to multiple features See #12250. I tested all the features on x86-windows, x64-windows, x64-windows-static and x64-linux triplets. Everything build fine except: - dx12-binding on x86-windows. There's an issue opened about it here : https://github.com/ocornut/imgui/pull/2406 - allegro5-binding on x64-linux, because the current allegro5 port fails to build on this platform. Contrary to the previous port which simply copied the sources to a specific folder, bindings are now compiled with their dependencies. The only exception is Marmelade, because there's no port available for it yet. Unfortunately, I can't test the OSX and metal bindings. If someone using this platform could test it, it would be very much appreciated. :) * [imgui] Move port files to the correct folder * Update ports/imgui/CONTROL Co-authored-by: Rémy Tassoux <rt2@rasterizedworld.com> Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
-rw-r--r--ports/imgui/CMakeLists.txt176
-rw-r--r--ports/imgui/CONTROL66
-rw-r--r--ports/imgui/portfile.cmake21
3 files changed, 236 insertions, 27 deletions
diff --git a/ports/imgui/CMakeLists.txt b/ports/imgui/CMakeLists.txt
index 17f9ca286..a4f3cf611 100644
--- a/ports/imgui/CMakeLists.txt
+++ b/ports/imgui/CMakeLists.txt
@@ -22,20 +22,102 @@ target_sources(
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
)
-if(IMGUI_FREETYPE)
- find_package(Freetype REQUIRED)
+if(IMGUI_BUILD_ALLEGRO5_BINDING)
+ find_path(ALLEGRO5_INCLUDE_DIRS allegro5/allegro.h)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${ALLEGRO5_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_allegro5.cpp)
+endif()
+
+if(IMGUI_BUILD_DX9_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx9.cpp)
+endif()
+
+if(IMGUI_BUILD_DX10_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx10.cpp)
+endif()
+
+if(IMGUI_BUILD_DX11_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx11.cpp)
+endif()
+
+if(IMGUI_BUILD_DX12_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx12.cpp)
+endif()
+
+if(IMGUI_BUILD_GLFW_BINDING)
+ find_package(glfw3 REQUIRED)
+ get_target_property(GLFW3_INCLUDE_DIRS glfw INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLFW3_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_glfw.cpp)
+endif()
+
+if(IMGUI_BUILD_GLUT_BINDING)
+ find_path(GLUT_INCLUDE_DIRS GL/freeglut.h)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLUT_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_glut.cpp)
+endif()
+
+if(IMGUI_BUILD_METAL_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_metal.mm)
+endif()
+
+if(IMGUI_BUILD_OPENGL2_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl2.cpp)
+endif()
+
+if(IMGUI_BUILD_OPENGL3_GLEW_BINDING)
+ find_package(glew REQUIRED)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLEW_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl3.cpp)
+endif()
+
+if(IMGUI_BUILD_OPENGL3_GLAD_BINDING)
+ find_package(glad REQUIRED)
+ get_target_property(GLAD_INCLUDE_DIRS glad::glad INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLAD_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl3.cpp)
+endif()
+
+if(IMGUI_BUILD_OPENGL3_GL3W_BINDING)
+ find_package(gl3w REQUIRED)
+ get_target_property(GL3W_INCLUDE_DIRS unofficial::gl3w::gl3w INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GL3W_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl3.cpp)
+endif()
+
+if(IMGUI_BUILD_OPENGL3_GLBINDING_BINDING)
+ find_package(glbinding REQUIRED)
+ get_target_property(GLBINDING_INCLUDE_DIRS glbinding::glbinding INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${GLBINDING_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl3.cpp)
+endif()
+
+if(IMGUI_BUILD_OSX_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_osx.mm)
+endif()
+
+if(IMGUI_BUILD_SDL2_BINDING)
+ find_package(SDL2 CONFIG REQUIRED)
+ find_path(SDL2_INCLUDE_DIRS SDL2/SDL.h)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS}/SDL2)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_sdl.cpp)
+endif()
- target_include_directories(
- ${PROJECT_NAME}
- PRIVATE
- ${FREETYPE_INCLUDE_DIRS}
- )
+if(IMGUI_BUILD_VULKAN_BINDING)
+ find_package(Vulkan REQUIRED)
+ get_target_property(VULKAN_INCLUDE_DIRS Vulkan::Vulkan INTERFACE_INCLUDE_DIRECTORIES)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${VULKAN_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_vulkan.cpp)
+endif()
- target_sources(
- ${PROJECT_NAME}
- PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp
- )
+if(IMGUI_BUILD_WIN32_BINDING)
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_win32.cpp)
+endif()
+
+if(IMGUI_FREETYPE)
+ find_package(Freetype REQUIRED)
+ target_include_directories(${PROJECT_NAME} PRIVATE ${FREETYPE_INCLUDE_DIRS})
+ target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp)
endif()
install(
@@ -56,19 +138,69 @@ if(NOT IMGUI_SKIP_HEADERS)
DESTINATION include
)
- if(IMGUI_COPY_BINDINGS)
- file(GLOB IMGUI_BINDINGS ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_* )
- install(
- FILES ${IMGUI_BINDINGS}
- DESTINATION include/bindings
- )
+ if(IMGUI_BUILD_ALLEGRO5_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_allegro5.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_DX9_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx9.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_DX10_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx10.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_DX11_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx11.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_DX12_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_dx12.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_GLFW_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_glfw.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_GLUT_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_glut.h DESTINATION include)
+ endif()
+
+ if(IMGUI_COPY_MARMALADE_BINDING)
+ file(GLOB MARMALADE_BINDING_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_marmalade.*)
+ install(FILES ${MARMALADE_BINDING_SRCS} DESTINATION include/bindings)
+ endif()
+
+ if(IMGUI_BUILD_METAL_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_metal.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_OPENGL2_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl2.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_OPENGL3_GLEW_BINDING OR IMGUI_BUILD_OPENGL3_GLAD_BINDING OR IMGUI_BUILD_OPENGL3_GL3W_BINDING OR IMGUI_BUILD_OPENGL3_GLBINDING_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_opengl3.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_OSX_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_osx.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_SDL2_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_sdl.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_VULKAN_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_vulkan.h DESTINATION include)
+ endif()
+
+ if(IMGUI_BUILD_WIN32_BINDING)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/imgui_impl_win32.h DESTINATION include)
endif()
if(IMGUI_FREETYPE)
- install(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h
- DESTINATION include
- )
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
endif()
endif()
diff --git a/ports/imgui/CONTROL b/ports/imgui/CONTROL
index 218505817..88fb1440c 100644
--- a/ports/imgui/CONTROL
+++ b/ports/imgui/CONTROL
@@ -1,11 +1,71 @@
Source: imgui
Version: 1.77
+Port-Version: 1
Homepage: https://github.com/ocornut/imgui
Description: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.
-Feature: bindings
-Description: make available bindings header and source files for supported implementations
-Build-Depends: glfw3, freeglut, opengl, sdl2, allegro5
+Feature: allegro5-binding
+Description: Make available Allegro5 binding
+Build-Depends: allegro5
+
+Feature: dx9-binding
+Description: Make available DirectX9 binding
+
+Feature: dx10-binding
+Description: Make available DirectX10 binding
+
+Feature: dx11-binding
+Description: Make available DirectX11 binding
+
+Feature: dx12-binding
+Description: Make available DirectX12 binding
+
+Feature: glfw-binding
+Description: Make available GLFW binding
+Build-Depends: glfw3
+
+Feature: glut-binding
+Description: Make available Glut binding
+Build-Depends: freeglut
+
+Feature: marmalade-binding
+Description: Make available Marmalade binding
+
+Feature: metal-binding
+Description: Make available Metal binding
+
+Feature: opengl2-binding
+Description: Make available OpenGL (legacy) binding
+
+Feature: opengl3-glew-binding
+Description: Make available OpenGL3/ES/ES2 (modern) binding with GLEW
+Build-Depends: glew
+
+Feature: opengl3-glad-binding
+Description: Make available OpenGL3/ES/ES2 (modern) binding with glad
+Build-Depends: glad
+
+Feature: opengl3-gl3w-binding
+Description: Make available OpenGL3/ES/ES2 (modern) binding with gl3w
+Build-Depends: gl3w
+
+Feature: opengl3-glbinding-binding
+Description: Make available OpenGL3/ES/ES2 (modern) binding glbinding
+Build-Depends: glbinding
+
+Feature: osx-binding
+Description: Make available OSX binding
+
+Feature: sdl2-binding
+Description: Make available SDL2 binding
+Build-Depends: sdl2
+
+Feature: vulkan-binding
+Description: Make available Vulkan binding
+Build-Depends: vulkan
+
+Feature: win32-binding
+Description: Make available Win32 binding
Feature: freetype
Description: Build font atlases using FreeType instead of stb_truetype
diff --git a/ports/imgui/portfile.cmake b/ports/imgui/portfile.cmake
index cb30b7376..6ee33622b 100644
--- a/ports/imgui/portfile.cmake
+++ b/ports/imgui/portfile.cmake
@@ -11,8 +11,25 @@ vcpkg_from_github(
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
- bindings IMGUI_COPY_BINDINGS # should only be copied once, at most
- freetype IMGUI_FREETYPE
+ allegro5-binding IMGUI_BUILD_ALLEGRO5_BINDING
+ dx9-binding IMGUI_BUILD_DX9_BINDING
+ dx10-binding IMGUI_BUILD_DX10_BINDING
+ dx11-binding IMGUI_BUILD_DX11_BINDING
+ dx12-binding IMGUI_BUILD_DX12_BINDING
+ glfw-binding IMGUI_BUILD_GLFW_BINDING
+ glut-binding IMGUI_BUILD_GLUT_BINDING
+ marmalade-binding IMGUI_COPY_MARMALADE_BINDING
+ metal-binding IMGUI_BUILD_METAL_BINDING
+ opengl2-binding IMGUI_BUILD_OPENGL2_BINDING
+ opengl3-glew-binding IMGUI_BUILD_OPENGL3_GLEW_BINDING
+ opengl3-glad-binding IMGUI_BUILD_OPENGL3_GLAD_BINDING
+ opengl3-gl3w-binding IMGUI_BUILD_OPENGL3_GL3W_BINDING
+ opengl3-glbinding-binding IMGUI_BUILD_OPENGL3_GLBINDING_BINDING
+ osx-binding IMGUI_BUILD_OSX_BINDING
+ sdl2-binding IMGUI_BUILD_SDL2_BINDING
+ vulkan-binding IMGUI_BUILD_VULKAN_BINDING
+ win32-binding IMGUI_BUILD_WIN32_BINDING
+ freetype IMGUI_FREETYPE
)
vcpkg_configure_cmake(