diff --git a/recipes/imgui/all/CMakeLists.txt b/recipes/imgui/all/CMakeLists.txt index 0626bf7008e52..16c2740fbe0ca 100644 --- a/recipes/imgui/all/CMakeLists.txt +++ b/recipes/imgui/all/CMakeLists.txt @@ -1,56 +1,222 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.15) project(imgui LANGUAGES CXX) -set(MISC_DIR ${IMGUI_SRC_DIR}/misc) -set(EXTRA_FONTS_DIR ${MISC_DIR}/fonts) -set(IMGUI_EXPORT_HEADERS imgui_export_headers.h) - -file(GLOB SOURCE_FILES ${IMGUI_SRC_DIR}/*.cpp) -file(GLOB HEADER_FILES ${IMGUI_SRC_DIR}/*.h) - -file(GLOB EXTRA_FONTS_FILES ${EXTRA_FONTS_DIR}/*.ttf) -if (MSVC) - file(GLOB EXTRA_NATVIS_FILES ${MISC_DIR}/natvis/*.natvis) +if(NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 11) endif() -set(BINARY_TO_COMPRESSED_BIN binary_to_compressed_c) - -add_executable(${BINARY_TO_COMPRESSED_BIN} ${EXTRA_FONTS_DIR}/binary_to_compressed_c.cpp) -target_compile_features(${BINARY_TO_COMPRESSED_BIN} PRIVATE cxx_std_11) +add_library(imgui + imgui.cpp + imgui_demo.cpp + imgui_draw.cpp + imgui_tables.cpp + imgui_widgets.cpp + misc/cpp/imgui_stdlib.cpp +) +target_include_directories(imgui PUBLIC ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}) -add_library(${PROJECT_NAME} ${SOURCE_FILES}) -set_target_properties(${PROJECT_NAME} PROPERTIES +set_target_properties(imgui PROPERTIES CXX_VISIBILITY_PRESET hidden + OBJCXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON ) +set(IMGUI_EXPORT_HEADER imgui_export.h) include(GenerateExportHeader) -generate_export_header(${PROJECT_NAME} +generate_export_header(imgui EXPORT_MACRO_NAME IMGUI_API - EXPORT_FILE_NAME ${IMGUI_EXPORT_HEADERS} + EXPORT_FILE_NAME ${IMGUI_EXPORT_HEADER} ) -target_include_directories(${PROJECT_NAME} PUBLIC - $ - $ - $ +# Enable __declspec(dllexport) in backend libs as well +add_compile_definitions(imgui_EXPORTS) + +if(IMGUI_FREETYPE) + find_package(freetype CONFIG REQUIRED) + target_sources(imgui PRIVATE misc/freetype/imgui_freetype.cpp) + target_link_libraries(imgui PRIVATE freetype) + install(FILES misc/freetype/imgui_freetype.h DESTINATION include) + if(IMGUI_FREETYPE_LUNASVG) + find_package(lunasvg CONFIG REQUIRED) + target_link_libraries(imgui PRIVATE lunasvg::lunasvg) + endif() +endif() + +if(IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS) + target_link_libraries(imgui PRIVATE "-framework ApplicationServices") +endif() + +if(IMGUI_IMPL_ALLEGRO5) + find_package(Allegro CONFIG REQUIRED) + add_library(imgui-allegro5 backends/imgui_impl_allegro5.cpp) + target_link_libraries(imgui-allegro5 PRIVATE Allegro::allegro Allegro::allegro_ttf Allegro::allegro_font Allegro::allegro_main) + install(FILES backends/imgui_impl_allegro5.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-allegro5) +endif() + +if(IMGUI_IMPL_ANDROID) + add_library(imgui-android backends/imgui_impl_android.cpp) + install(FILES backends/imgui_impl_android.h DESTINATION include) + target_link_libraries(imgui-android PRIVATE android log EGL GLESv3) + list(APPEND IMGUI_COMPONENTS imgui-android) +endif() + +if(IMGUI_IMPL_DX9) + add_library(imgui-dx9 backends/imgui_impl_dx9.cpp) + target_link_libraries(imgui-dx9 PRIVATE d3d9) + install(FILES backends/imgui_impl_dx9.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-dx9) +endif() + +if(IMGUI_IMPL_DX10) + add_library(imgui-dx10 backends/imgui_impl_dx10.cpp) + target_link_libraries(imgui-dx9 PRIVATE d3d10) + install(FILES backends/imgui_impl_dx10.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-dx10) +endif() + +if(IMGUI_IMPL_DX11) + add_library(imgui-dx11 backends/imgui_impl_dx11.cpp) + target_link_libraries(imgui-dx11 PRIVATE d3d11) + install(FILES backends/imgui_impl_dx11.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-dx11) +endif() + +if(IMGUI_IMPL_DX12) + add_library(imgui-dx12 backends/imgui_impl_dx12.cpp) + target_link_libraries(imgui-dx12 PRIVATE d3d12) + install(FILES backends/imgui_impl_dx12.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-dx12) +endif() + +if(IMGUI_IMPL_GLFW) + add_library(imgui-glfw backends/imgui_impl_glfw.cpp) + if(NOT EMSCRIPTEN) + find_package(glfw3 CONFIG REQUIRED) + target_link_libraries(imgui-glfw PRIVATE glfw) + endif() + install(FILES backends/imgui_impl_glfw.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-glfw) +endif() + +if(IMGUI_IMPL_GLUT) + add_library(imgui-glut backends/imgui_impl_glut.cpp) + if(NOT EMSCRIPTEN) + find_package(GLUT REQUIRED) + target_link_libraries(imgui-glut PRIVATE GLUT::GLUT) + endif() + install(FILES backends/imgui_impl_glut.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-glut) +endif() + +if(IMGUI_IMPL_METAL) + enable_language(OBJCXX) + add_library(imgui-metal backends/imgui_impl_metal.mm) + set_source_files_properties(backends/imgui_impl_metal.mm PROPERTIES COMPILE_FLAGS -fobjc-weak) + target_link_libraries(imgui-metal PRIVATE + "-framework Foundation" + "-framework Metal" + "-framework QuartzCore" + ) + install(FILES backends/imgui_impl_metal.h DESTINATION include) + if(IMGUI_IMPL_METAL_CPP) + find_package(metal-cpp CONFIG REQUIRED) + target_link_libraries(imgui-metal PRIVATE metal-cpp::metal-cpp) + endif() + list(APPEND IMGUI_COMPONENTS imgui-metal) +endif() + +if(IMGUI_IMPL_OPENGL2) + find_package(OpenGL REQUIRED) + add_library(imgui-opengl2 backends/imgui_impl_opengl2.cpp) + target_link_libraries(imgui-opengl2 PRIVATE OpenGL::GL) + install(FILES backends/imgui_impl_opengl2.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-opengl2) +endif() + +if(IMGUI_IMPL_OPENGL3) + find_package(OpenGL REQUIRED) + add_library(imgui-opengl3 backends/imgui_impl_opengl3.cpp) + target_link_libraries(imgui-opengl3 PRIVATE OpenGL::GL) + install(FILES backends/imgui_impl_opengl3.h DESTINATION include) + install(FILES backends/imgui_impl_opengl3_loader.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-opengl3) +endif() + +if(IMGUI_IMPL_OSX) + enable_language(OBJCXX) + add_library(imgui-osx backends/imgui_impl_osx.mm) + target_link_libraries(imgui-osx PRIVATE + "-framework AppKit" + "-framework Carbon" + "-framework Cocoa" + "-framework Foundation" + "-framework GameController" + ) + install(FILES backends/imgui_impl_osx.h DESTINATION include) + if(IMGUI_IMPL_METAL_CPP_EXTENSIONS) + find_package(metal-cpp CONFIG REQUIRED) + target_link_libraries(imgui-osx PRIVATE metal-cpp::metal-cpp) + endif() + list(APPEND IMGUI_COMPONENTS imgui-osx) +endif() + +if(IMGUI_IMPL_SDL2) + find_package(SDL2 CONFIG REQUIRED) + add_library(imgui-sdl2 backends/imgui_impl_sdl2.cpp) + target_link_libraries(imgui-sdl2 PRIVATE SDL2::SDL2) + install(FILES backends/imgui_impl_sdl2.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-sdl2) +endif() + +if(IMGUI_IMPL_SDLRENDERER2) + find_package(SDL2 CONFIG REQUIRED) + add_library(imgui-sdlrenderer2 backends/imgui_impl_sdlrenderer2.cpp) + target_link_libraries(imgui-sdlrenderer2 PRIVATE SDL2::SDL2) + install(FILES backends/imgui_impl_sdlrenderer2.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-sdlrenderer2) +endif() + +if(IMGUI_IMPL_VULKAN) + find_package(Vulkan REQUIRED) + add_library(imgui-vulkan backends/imgui_impl_vulkan.cpp) + target_link_libraries(imgui-vulkan PRIVATE Vulkan::Vulkan) + install(FILES backends/imgui_impl_vulkan.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-vulkan) +endif() + +if(IMGUI_IMPL_WIN32) + add_library(imgui-win32 backends/imgui_impl_win32.cpp) + target_link_libraries(imgui-win32 PRIVATE dwmapi xinput) + install(FILES backends/imgui_impl_win32.h DESTINATION include) + list(APPEND IMGUI_COMPONENTS imgui-win32) +endif() + +foreach(component ${IMGUI_COMPONENTS}) + target_link_libraries(${component} PUBLIC imgui) +endforeach() + +if(IMGUI_IMPL_TOOLS) + add_executable(binary_to_compressed_c misc/fonts/binary_to_compressed_c.cpp) + install(TARGETS binary_to_compressed_c DESTINATION bin) +endif() + +install(TARGETS imgui ${IMGUI_COMPONENTS} + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin +) + +file(GLOB IMGUI_HEADERS *.h) +install(FILES + misc/cpp/imgui_stdlib.h + ${IMGUI_HEADERS} + ${PROJECT_BINARY_DIR}/${IMGUI_EXPORT_HEADER} + DESTINATION include ) -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) - -include(GNUInstallDirs) - -install(TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(TARGETS ${BINARY_TO_COMPRESSED_BIN} - DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES ${HEADER_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${IMGUI_EXPORT_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) -install(FILES ${EXTRA_FONTS_FILES} - DESTINATION ${CMAKE_INSTALL_PREFIX}/res/fonts - PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) + +file(GLOB EXTRA_FONTS_FILES misc/fonts/*.ttf) +install(FILES ${EXTRA_FONTS_FILES} DESTINATION res/fonts) + if (MSVC) - install(FILES ${EXTRA_NATVIS_FILES} - DESTINATION ${CMAKE_INSTALL_PREFIX}/res/natvis - PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) + file(GLOB EXTRA_NATVIS_FILES misc/natvis/*.natvis) + install(FILES ${EXTRA_NATVIS_FILES} DESTINATION res/natvis) endif() diff --git a/recipes/imgui/all/conandata.yml b/recipes/imgui/all/conandata.yml index 60726e912afc5..d695a3c337db5 100644 --- a/recipes/imgui/all/conandata.yml +++ b/recipes/imgui/all/conandata.yml @@ -1,73 +1,87 @@ sources: "1.91.4": - url: "https://github.com/ocornut/imgui/archive/v1.91.4.tar.gz" - sha256: "a455c28d987c78ddf56aab98ce0ff0fda791a23a2ec88ade46dd106b837f0923" - "1.91.4-docking": - url: "https://github.com/ocornut/imgui/archive/v1.91.4-docking.tar.gz" - sha256: "7405bdaf304b77d6d03e6d17d1f31ca3586fa0c65a466fa1dd71b6ca6a222023" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.91.4.tar.gz" + sha256: "a455c28d987c78ddf56aab98ce0ff0fda791a23a2ec88ade46dd106b837f0923" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.91.4-docking.tar.gz" + sha256: "7405bdaf304b77d6d03e6d17d1f31ca3586fa0c65a466fa1dd71b6ca6a222023" "1.91.3": - url: "https://github.com/ocornut/imgui/archive/v1.91.3.tar.gz" - sha256: "29949d7b300c30565fbcd66398100235b63aa373acfee0b76853a7aeacd1be28" - "1.91.3-docking": - url: "https://github.com/ocornut/imgui/archive/v1.91.3-docking.tar.gz" - sha256: "d462ccd0ca10cb412f8946c09ebd4cd0f62ca5def544dec5b3ce293c59f089fb" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.91.3.tar.gz" + sha256: "29949d7b300c30565fbcd66398100235b63aa373acfee0b76853a7aeacd1be28" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.91.3-docking.tar.gz" + sha256: "d462ccd0ca10cb412f8946c09ebd4cd0f62ca5def544dec5b3ce293c59f089fb" "1.91.2": - url: "https://github.com/ocornut/imgui/archive/v1.91.2.tar.gz" - sha256: "a3c4fd857a0a48f6edad3e25de68fa1e96d2437f1665039714d1de9ad579b8d0" - "1.91.2-docking": - url: "https://github.com/ocornut/imgui/archive/v1.91.2-docking.tar.gz" - sha256: "bd6e9e6dc0451060152cea2a610256969c77a360659f4bd3836d6d4c9267229b" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.91.2.tar.gz" + sha256: "a3c4fd857a0a48f6edad3e25de68fa1e96d2437f1665039714d1de9ad579b8d0" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.91.2-docking.tar.gz" + sha256: "bd6e9e6dc0451060152cea2a610256969c77a360659f4bd3836d6d4c9267229b" "1.91.0": - url: "https://github.com/ocornut/imgui/archive/v1.91.0.tar.gz" - sha256: "6e62c87252e6b3725ba478a1c04dc604aa0aaeec78fedcf4011f1e52548f4cc9" - "1.91.0-docking": - url: "https://github.com/ocornut/imgui/archive/v1.91.0-docking.tar.gz" - sha256: "b08a569eedcf2bf25e763e034754fdbe37dfcb035072310781c92fa6e6504bf7" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.91.0.tar.gz" + sha256: "6e62c87252e6b3725ba478a1c04dc604aa0aaeec78fedcf4011f1e52548f4cc9" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.91.0-docking.tar.gz" + sha256: "b08a569eedcf2bf25e763e034754fdbe37dfcb035072310781c92fa6e6504bf7" "1.90.9": - url: "https://github.com/ocornut/imgui/archive/v1.90.9.tar.gz" - sha256: "04943919721e874ac75a2f45e6eb6c0224395034667bf508923388afda5a50bf" - "1.90.9-docking": - url: "https://github.com/ocornut/imgui/archive/v1.90.9-docking.tar.gz" - sha256: "48e7e4e4f154ad98d0946126a84e2375f849f6a67792129a805817dd60a34330" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.90.9.tar.gz" + sha256: "04943919721e874ac75a2f45e6eb6c0224395034667bf508923388afda5a50bf" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.90.9-docking.tar.gz" + sha256: "48e7e4e4f154ad98d0946126a84e2375f849f6a67792129a805817dd60a34330" "1.90.8": - url: "https://github.com/ocornut/imgui/archive/v1.90.8.tar.gz" - sha256: "f606b4fb406aa0f8dad36d4a9dd3d6f0fd39f5f0693e7468abc02d545fb505ae" - "1.90.8-docking": - url: "https://github.com/ocornut/imgui/archive/v1.90.8-docking.tar.gz" - sha256: "51845ed8b8e81490288c3c8165173d47e9bcf92f7d999aea800635f95587b9e7" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.90.8.tar.gz" + sha256: "f606b4fb406aa0f8dad36d4a9dd3d6f0fd39f5f0693e7468abc02d545fb505ae" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.90.8-docking.tar.gz" + sha256: "51845ed8b8e81490288c3c8165173d47e9bcf92f7d999aea800635f95587b9e7" "1.90.7": - url: "https://github.com/ocornut/imgui/archive/v1.90.7.tar.gz" - sha256: "872574217643d4ad7e9e6df420bb8d9e0d468fb90641c2bf50fd61745e05de99" - "1.90.7-docking": - url: "https://github.com/ocornut/imgui/archive/v1.90.7-docking.tar.gz" - sha256: "582a9061a508b82b0ff6504aa17af6bb449bca9edf0a0f0f33bf729252cd3194" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.90.7.tar.gz" + sha256: "872574217643d4ad7e9e6df420bb8d9e0d468fb90641c2bf50fd61745e05de99" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.90.7-docking.tar.gz" + sha256: "582a9061a508b82b0ff6504aa17af6bb449bca9edf0a0f0f33bf729252cd3194" "1.90.6": - url: "https://github.com/ocornut/imgui/archive/v1.90.6.tar.gz" - sha256: "70b4b05ac0938e82b4d5b8d59480d3e2ca63ca570dfb88c55023831f387237ad" - "1.90.6-docking": - url: "https://github.com/ocornut/imgui/archive/v1.90.6-docking.tar.gz" - sha256: "fc7f81d009ef718917aee0ac3ea1c74c8a5cfc8016049ad153b4d91d302b8aef" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.90.6.tar.gz" + sha256: "70b4b05ac0938e82b4d5b8d59480d3e2ca63ca570dfb88c55023831f387237ad" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.90.6-docking.tar.gz" + sha256: "fc7f81d009ef718917aee0ac3ea1c74c8a5cfc8016049ad153b4d91d302b8aef" "1.90.5": - url: "https://github.com/ocornut/imgui/archive/v1.90.5.tar.gz" - sha256: "e94b48dba7311c85ba8e3e6fe7c734d76a0eed21b2b42c5180fd5706d1562241" - "1.90.5-docking": - url: "https://github.com/ocornut/imgui/archive/v1.90.5-docking.tar.gz" - sha256: "8a5e1e594d6c8552e46e4c1ba8dd9deb51262067f04937904babc04384533ccc" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.90.5.tar.gz" + sha256: "e94b48dba7311c85ba8e3e6fe7c734d76a0eed21b2b42c5180fd5706d1562241" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.90.5-docking.tar.gz" + sha256: "8a5e1e594d6c8552e46e4c1ba8dd9deb51262067f04937904babc04384533ccc" "1.89.9": - url: "https://github.com/ocornut/imgui/archive/v1.89.9.tar.gz" - sha256: "1acc27a778b71d859878121a3f7b287cd81c29d720893d2b2bf74455bf9d52d6" - "1.89.9-docking": - url: "https://github.com/ocornut/imgui/archive/v1.89.9-docking.tar.gz" - sha256: "2481489ce9091239b3cab8a330d0409ffdd9ee607ad1f3fe3a0b0b751c27a8eb" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.89.9.tar.gz" + sha256: "1acc27a778b71d859878121a3f7b287cd81c29d720893d2b2bf74455bf9d52d6" + docking: + url: "https://github.com/ocornut/imgui/archive/v1.89.9-docking.tar.gz" + sha256: "2481489ce9091239b3cab8a330d0409ffdd9ee607ad1f3fe3a0b0b751c27a8eb" "1.88": - url: "https://github.com/ocornut/imgui/archive/v1.88.tar.gz" - sha256: "9f14c788aee15b777051e48f868c5d4d959bd679fc5050e3d2a29de80d8fd32e" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.88.tar.gz" + sha256: "9f14c788aee15b777051e48f868c5d4d959bd679fc5050e3d2a29de80d8fd32e" "1.87": - url: "https://github.com/ocornut/imgui/archive/v1.87.tar.gz" - sha256: "b54ceb35bda38766e36b87c25edf7a1cd8fd2cb8c485b245aedca6fb85645a20" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.87.tar.gz" + sha256: "b54ceb35bda38766e36b87c25edf7a1cd8fd2cb8c485b245aedca6fb85645a20" "1.86": - url: "https://github.com/ocornut/imgui/archive/v1.86.tar.gz" - sha256: "6ba6ae8425a19bc52c5e067702c48b70e4403cd339cba02073a462730a63e825" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.86.tar.gz" + sha256: "6ba6ae8425a19bc52c5e067702c48b70e4403cd339cba02073a462730a63e825" "1.85": - url: "https://github.com/ocornut/imgui/archive/v1.85.tar.gz" - sha256: "7ed49d1f4573004fa725a70642aaddd3e06bb57fcfe1c1a49ac6574a3e895a77" + regular: + url: "https://github.com/ocornut/imgui/archive/v1.85.tar.gz" + sha256: "7ed49d1f4573004fa725a70642aaddd3e06bb57fcfe1c1a49ac6574a3e895a77" diff --git a/recipes/imgui/all/conanfile.py b/recipes/imgui/all/conanfile.py index ffe8b2248047c..499ea0bce0756 100644 --- a/recipes/imgui/all/conanfile.py +++ b/recipes/imgui/all/conanfile.py @@ -1,104 +1,341 @@ -from conan import ConanFile -from conan.tools.files import get, copy, replace_in_file -from conan.tools.scm import Version -from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout import os import re +from pathlib import Path + +from conan import ConanFile +from conan.errors import ConanException +from conan.tools.apple import is_apple_os +from conan.tools.build import check_min_cppstd +from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout +from conan.tools.files import copy, get, replace_in_file +from conan.tools.scm import Version -required_conan_version = ">=1.53.0" +required_conan_version = ">=2.0.9" -class IMGUIConan(ConanFile): +class ImguiConan(ConanFile): name = "imgui" description = "Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies" license = "MIT" url = "https://github.com/conan-io/conan-center-index" homepage = "https://github.com/ocornut/imgui" topics = ("gui", "graphical", "bloat-free") - package_type = "library" + package_type = "library" settings = "os", "arch", "compiler", "build_type" options = { "shared": [True, False], "fPIC": [True, False], + "docking": [True, False], + # Backends + # See https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md + "build_backends": [True, False], + # "backend_allegro5": [True, False], + "backend_android": [True, False], + "backend_dx9": [True, False], + "backend_dx10": [True, False], + "backend_dx11": [True, False], + "backend_dx12": [True, False], + "backend_glfw": [True, False], + "backend_glut": [True, False], + "backend_metal": [True, False], + "backend_opengl2": [True, False], + "backend_opengl3": [True, False], + "backend_osx": [True, False], + "backend_sdl2": [True, False], + "backend_sdlrenderer2": [True, False], + # "backend_sdlrenderer3": [True, False], + "backend_vulkan": [True, False], + "backend_win32": [True, False], + # "backend_wgpu": [True, False], + # Other options + # See https://github.com/ocornut/imgui/blob/master/imconfig.h for details + "enable_freetype": [True, False], + "enable_freetype_lunasvg": [True, False], + "enable_metal_cpp": [True, False], + "enable_osx_clipboard": [True, False], + "enable_demo_windows": [True, False], + "enable_debug_tools": [True, False], + "use_bgra_packed_color": [True, False], + "use_wchar32": [True, False], + "build_programs": [True, False], } default_options = { "shared": False, "fPIC": True, + "docking": False, + # Backends + "build_backends": True, + "backend_android": True, + "backend_dx9": True, + "backend_dx10": True, + "backend_dx11": False, + "backend_dx12": False, + "backend_glfw": True, + "backend_glut": False, + "backend_metal": True, + "backend_opengl2": True, + "backend_opengl3": True, + "backend_osx": True, + "backend_sdl2": False, + "backend_sdlrenderer2": False, + "backend_vulkan": False, + "backend_win32": True, + # Other options + "enable_freetype": False, + "enable_freetype_lunasvg": False, + "enable_metal_cpp": True, + "enable_osx_clipboard": True, + "enable_demo_windows": True, + "enable_debug_tools": True, + "use_bgra_packed_color": False, + "use_wchar32": False, + "build_programs": False, } def export_sources(self): - copy(self, "CMakeLists.txt", self.recipe_folder, self.export_sources_folder) + copy(self, "CMakeLists.txt", self.recipe_folder, os.path.join(self.export_sources_folder, "src")) def config_options(self): if self.settings.os == "Windows": del self.options.fPIC + if self.version.endswith("-docking"): + # Support the old -docking versions for backwards compatibility + self.options.docking = True + if self.settings.os != "Android": + del self.options.backend_android + if self.settings.os != "Windows": + del self.options.backend_dx9 + del self.options.backend_dx10 + del self.options.backend_dx11 + del self.options.backend_dx12 + del self.options.backend_win32 + if not is_apple_os(self): + del self.options.backend_metal + del self.options.backend_osx + del self.options.enable_metal_cpp + del self.options.enable_osx_clipboard + if Version(self.version) < "1.90": + del self.options.enable_freetype_lunasvg + if Version(self.version) < "1.89.6": + del self.options.backend_sdl2 + del self.options.backend_sdlrenderer2 + if Version(self.version) < "1.87": + self.options.rm_safe("enable_metal_cpp") def configure(self): if self.options.shared: self.options.rm_safe("fPIC") + if not self.options.build_backends: + self.options.rm_safe("backend_allegro5") + self.options.rm_safe("backend_android") + self.options.rm_safe("backend_dx9") + self.options.rm_safe("backend_dx10") + self.options.rm_safe("backend_dx11") + self.options.rm_safe("backend_dx12") + self.options.rm_safe("backend_glfw") + self.options.rm_safe("backend_glut") + self.options.rm_safe("backend_metal") + self.options.rm_safe("backend_opengl2") + self.options.rm_safe("backend_opengl3") + self.options.rm_safe("backend_osx") + self.options.rm_safe("backend_sdl2") + self.options.rm_safe("backend_sdlrenderer2") + self.options.rm_safe("backend_sdlrenderer3") + self.options.rm_safe("backend_vulkan") + self.options.rm_safe("backend_win32") + self.options.rm_safe("backend_wgpu") + if not self.options.enable_freetype: + self.options.rm_safe("enable_freetype_lunasvg") + if not self.options.get_safe("backend_osx"): + self.options.rm_safe("enable_osx_clipboard") + if not self.options.get_safe("backend_osx") and not self.options.get_safe("backend_metal"): + self.options.rm_safe("enable_metal_cpp") def layout(self): cmake_layout(self, src_folder="src") + def requirements(self): + # if self.options.get_safe("backend_allegro5"): + # self.requires("allegro5/0") + if self.options.get_safe("backend_opengl2") or self.options.get_safe("backend_opengl3"): + self.requires("opengl/system") + if self.options.get_safe("backend_glut") and self.settings.os != "Emscripten": + self.requires("freeglut/3.4.0") + if self.options.get_safe("backend_sdl2") or self.options.get_safe("backend_sdlrenderer2"): + self.requires("sdl/2.30.7") + # elif self.options.get_safe("backend_sdlrenderer3"): + # self.requires("sdl/3.x") + if self.options.get_safe("backend_vulkan"): + self.requires("vulkan-headers/1.3.290.0", transitive_headers=True) + self.requires("vulkan-loader/1.3.290.0") + if self.options.get_safe("backend_glfw") and self.settings.os != "Emscripten": + self.requires("glfw/3.4") + # if self.options.get_safe("backend_wgpu"): + # self.requires("dawn/cci.20240726") + if self.options.enable_freetype: + self.requires("freetype/2.13.2") + if self.options.get_safe("enable_freetype_lunasvg"): + self.requires("lunasvg/2.4.1") + if self.options.get_safe("enable_metal_cpp"): + self.requires("metal-cpp/14.2", transitive_headers=bool(self.options.get_safe("backend_metal"))) + + def validate(self): + check_min_cppstd(self, 11) + if Version(self.version) < "1.89" and self.options.docking: + raise ConanException("Docking support requires version 1.89 or newer.") + if self.version.endswith("-docking"): + self.output.warning("The -docking versions of imgui are deprecated. Use -o imgui/*:docking=True instead.") + def source(self): - get(self, **self.conan_data["sources"][self.version], strip_root=True) + # Handled in build() instead to support self.options.docking. + pass def generate(self): tc = CMakeToolchain(self) - tc.variables["IMGUI_SRC_DIR"] = self.source_folder.replace("\\", "/") + tc.cache_variables["IMGUI_IMPL_ALLEGRO5"] = self.options.get_safe("backend_allegro5", False) + tc.cache_variables["IMGUI_IMPL_ANDROID"] = self.options.get_safe("backend_android", False) + tc.cache_variables["IMGUI_IMPL_DX9"] = self.options.get_safe("backend_dx9", False) + tc.cache_variables["IMGUI_IMPL_DX10"] = self.options.get_safe("backend_dx10", False) + tc.cache_variables["IMGUI_IMPL_DX11"] = self.options.get_safe("backend_dx11", False) + tc.cache_variables["IMGUI_IMPL_DX12"] = self.options.get_safe("backend_dx12", False) + tc.cache_variables["IMGUI_IMPL_GLFW"] = self.options.get_safe("backend_glfw", False) + tc.cache_variables["IMGUI_IMPL_GLUT"] = self.options.get_safe("backend_glut", False) + tc.cache_variables["IMGUI_IMPL_METAL"] = self.options.get_safe("backend_metal", False) + tc.cache_variables["IMGUI_IMPL_OPENGL2"] = self.options.get_safe("backend_opengl2", False) + tc.cache_variables["IMGUI_IMPL_OPENGL3"] = self.options.get_safe("backend_opengl3", False) + tc.cache_variables["IMGUI_IMPL_OSX"] = self.options.get_safe("backend_osx", False) + tc.cache_variables["IMGUI_IMPL_SDL2"] = self.options.get_safe("backend_sdl2", False) + tc.cache_variables["IMGUI_IMPL_SDLRENDERER2"] = self.options.get_safe("backend_sdlrenderer2", False) + tc.cache_variables["IMGUI_IMPL_SDLRENDERER3"] = self.options.get_safe("backend_sdlrenderer3", False) + tc.cache_variables["IMGUI_IMPL_VULKAN"] = self.options.get_safe("backend_vulkan", False) + tc.cache_variables["IMGUI_IMPL_WIN32"] = self.options.get_safe("backend_win32", False) + tc.cache_variables["IMGUI_IMPL_WGPU"] = self.options.get_safe("backend_wgpu", False) + tc.cache_variables["IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS"] = self.options.get_safe("enable_osx_clipboard", False) + tc.cache_variables["IMGUI_FREETYPE"] = self.options.enable_freetype + tc.cache_variables["IMGUI_FREETYPE_LUNASVG"] = self.options.get_safe("enable_freetype_lunasvg", False) + tc.cache_variables["IMGUI_BUILD_PROGRAMS"] = self.options.build_programs + tc.cache_variables["IMGUI_IMPL_METAL_CPP"] = self.options.get_safe("enable_metal_cpp", False) + tc.cache_variables["IMGUI_IMPL_METAL_CPP_EXTENSIONS"] = self.options.get_safe("enable_metal_cpp", False) tc.generate() + deps = CMakeDeps(self) + deps.generate() + + def _source(self): + version = self.version.replace("-docking", "") + kind = "docking" if self.options.docking else "regular" + get(self, **self.conan_data["sources"][version][kind], destination=self.source_folder, strip_root=True) + + def _configure_header(self): + defines = {} + defines["IMGUI_ENABLE_FREETYPE"] = self.options.enable_freetype + defines["IMGUI_ENABLE_FREETYPE_LUNASVG"] = self.options.get_safe("enable_freetype_lunasvg") + defines["IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS"] = self.options.get_safe("enable_osx_clipboard") + # Build default IME handler on MinGW as well, not just MSVC. Only disabled there due to a lack of autolinking support. + defines["IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS"] = True + defines["IMGUI_USE_BGRA_PACKED_COLOR"] = self.options.use_bgra_packed_color + defines["IMGUI_USE_WCHAR32"] = self.options.use_wchar32 + defines["IMGUI_DISABLE_DEMO_WINDOWS"] = not self.options.enable_demo_windows + if Version(self.version) >= "1.88": + defines["IMGUI_DISABLE_DEBUG_TOOLS"] = not self.options.enable_debug_tools + else: + defines["IMGUI_DISABLE_METRICS_WINDOW"] = not self.options.enable_debug_tools + + imconfig_path = Path(self.source_folder, "imconfig.h") + content = imconfig_path.read_text("utf8") + for define, value in defines.items(): + if value: + content, n = re.subn(rf"// *#define +{define}\b", f"#define {define}", content) + if n != 1: + raise ConanException(f"Failed to set {define} in imconfig.h") + # Not listed in imconfig.h, but supported by the OSX and Metal backends + if self.options.get_safe("enable_metal_cpp"): + content += "\n#define IMGUI_IMPL_METAL_CPP\n" + content += "#define IMGUI_IMPL_METAL_CPP_EXTENSIONS\n" + imconfig_path.write_text(content, "utf8") + def _patch_sources(self): - # Ensure we take into account export_headers - replace_in_file(self, - os.path.join(self.source_folder, "imgui.h"), - "#ifdef IMGUI_USER_CONFIG", - "#include \"imgui_export_headers.h\"\n\n#ifdef IMGUI_USER_CONFIG" - ) + # Ensure the generated imgui_export.h is always included + replace_in_file(self, os.path.join(self.source_folder, "imgui.h"), + '#include "imconfig.h"', + '#include "imconfig.h"\n\n#include "imgui_export.h"') def build(self): + self._source() + self._configure_header() self._patch_sources() cmake = CMake(self) - cmake.configure(build_script_folder=os.path.join(self.source_folder, os.pardir)) + cmake.configure() cmake.build() - def _match_docking_branch(self): - return re.match(r'cci\.\d{8}\+(?P\d+\.\d+(?:\.\d+))\.docking', str(self.version)) - def package(self): - copy(self, pattern="LICENSE.txt", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder) - m = self._match_docking_branch() - version = Version(m.group('version')) if m else Version(self.version) - backends_folder = os.path.join( - self.source_folder, - "backends" if version >= "1.80" else "examples" - ) - copy(self, pattern="imgui_impl_*", - dst=os.path.join(self.package_folder, "res", "bindings"), - src=backends_folder) - copy(self, pattern="imgui*.cpp", - dst=os.path.join(self.package_folder, "res", "src"), - src=os.path.join(self.source_folder)) - copy(self, pattern="*.*", - dst=os.path.join(self.package_folder, "res", "misc", "cpp"), - src=os.path.join(self.source_folder, "misc", "cpp")) - copy(self, pattern="*.*", - dst=os.path.join(self.package_folder, "res", "misc", "freetype"), - src=os.path.join(self.source_folder, "misc", "freetype")) + copy(self, "LICENSE.txt", self.source_folder, os.path.join(self.package_folder, "licenses")) cmake = CMake(self) cmake.install() + # Package ImGui sources for users that need more fine-grained control + version = Version(self.version.replace("-docking", "")) + backends_folder = os.path.join(self.source_folder, "backends" if version >= "1.80" else "examples") + res_folder = os.path.join(self.package_folder, "res") + copy(self, "imgui_impl_*", backends_folder, os.path.join(res_folder, "bindings")) + copy(self, "imgui*.cpp", self.source_folder, os.path.join(res_folder, "src")) + copy(self, "*", os.path.join(self.source_folder, "misc", "cpp"), os.path.join(res_folder, "misc", "cpp")) + copy(self, "*", os.path.join(self.source_folder, "misc", "freetype"), os.path.join(res_folder, "misc", "freetype")) + def package_info(self): - self.conf_info.define("user.imgui:with_docking", bool(self._match_docking_branch())) + # Unofficial aggregate target. Prefer the individual targets instead. + self.cpp_info.set_property("cmake_target_name", "imgui::imgui_all") - self.cpp_info.libs = ["imgui"] - if self.settings.os == "Linux": - self.cpp_info.system_libs.append("m") - if self.settings.os == "Windows": - self.cpp_info.system_libs.append("imm32") - self.cpp_info.srcdirs = [os.path.join("res", "bindings")] + self.cpp_info.components["core"].set_property("cmake_target_name", "imgui::imgui") + self.cpp_info.components["core"].set_property("pkg_config_name", "imgui") + self.cpp_info.components["core"].libs = ["imgui"] + self.cpp_info.components["core"].srcdirs = [os.path.join("res", "bindings")] + if self.settings.os in ["Linux", "FreeBSD"]: + self.cpp_info.components["core"].system_libs.append("m") + elif self.settings.os == "Windows": + self.cpp_info.components["core"].system_libs.append("imm32") + elif is_apple_os(self): + if self.options.enable_osx_clipboard: + self.cpp_info.components["core"].frameworks.append("ApplicationServices") + if self.options.enable_freetype: + self.cpp_info.components["core"].requires.append("freetype::freetype") + if self.options.get_safe("enable_freetype_lunasvg"): + self.cpp_info.components["core"].requires.append("lunasvg::lunasvg") + + def _add_binding(name, requires=None, system_libs=None, frameworks=None): + if self.options.get_safe(f"backend_{name}"): + self.cpp_info.components[name].libs = [f"imgui-{name}"] + self.cpp_info.components[name].requires = ["core"] + self.cpp_info.components[name].requires = requires or [] + self.cpp_info.components[name].system_libs = system_libs or [] + self.cpp_info.components[name].frameworks = frameworks or [] + + def _metal_cpp(): + return ["metal-cpp::metal-cpp"] if self.options.get_safe("enable_metal_cpp") else [] + + # _add_binding("allegro5", requires=[ + # "allegro::allegro", + # "allegro::allegro_ttf", + # "allegro::allegro_font", + # "allegro::allegro_main", + # ]) + _add_binding("android", system_libs=["android", "log", "EGL", "GLESv3"]) + _add_binding("dx9", system_libs=["d3d9"]) + _add_binding("dx10", system_libs=["d3d10"]) + _add_binding("dx11", system_libs=["d3d11"]) + _add_binding("dx12", system_libs=["d3d12"]) + _add_binding("glfw", requires=["glfw::glfw"] if self.settings.os != "Emscripten" else []) + _add_binding("glut", requires=["freeglut::freeglut"] if self.settings.os != "Emscripten" else []) + _add_binding("metal", frameworks=["Foundation", "Metal", "QuartzCore"], requires=_metal_cpp()) + _add_binding("opengl2", requires=["opengl::opengl"]) + _add_binding("opengl3", requires=["opengl::opengl"]) + _add_binding("osx", frameworks=["AppKit", "Carbon", "Cocoa", "Foundation", "GameController"], requires=_metal_cpp()) + _add_binding("sdl2", requires=["sdl::sdl"]) + _add_binding("sdlrenderer2", requires=["sdl::sdl"]) + # _add_binding("sdlrenderer3", requires=["sdl::sdl"]) + _add_binding("vulkan", requires=["vulkan-headers::vulkan-headers", "vulkan-loader::vulkan-loader"]) + _add_binding("win32", system_libs=["dwmapi", "xinput"]) + # _add_binding("wgpu", requires=["dawn::dawn"]) - bin_path = os.path.join(self.package_folder, "bin") - self.output.info("Appending PATH env var with : {}".format(bin_path)) - self.env_info.PATH.append(bin_path) + self.conf_info.define("user.imgui:with_docking", bool(self.options.docking)) diff --git a/recipes/imgui/all/test_package/CMakeLists.txt b/recipes/imgui/all/test_package/CMakeLists.txt index e5abc72962c86..d252145610b31 100644 --- a/recipes/imgui/all/test_package/CMakeLists.txt +++ b/recipes/imgui/all/test_package/CMakeLists.txt @@ -1,16 +1,17 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.15) project(test_package LANGUAGES CXX) find_package(imgui REQUIRED CONFIG) +add_compile_definitions("IMGUI_USER_CONFIG=\"${CMAKE_CURRENT_SOURCE_DIR}/my_imgui_config.h\"") add_executable(${PROJECT_NAME} test_package.cpp) -target_link_libraries(${PROJECT_NAME} PRIVATE imgui::imgui) - -option(DOCKING "Test docking" OFF) +# Using the aggregate target for easier testing. +target_link_libraries(${PROJECT_NAME} PRIVATE imgui::imgui_all) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) -if (DOCKING) - target_compile_definitions(${PROJECT_NAME} PRIVATE -DDOCKING) +if(APPLE) + enable_language(OBJCXX) + add_executable(${PROJECT_NAME}_objcxx test_package.mm) + target_link_libraries(${PROJECT_NAME}_objcxx PRIVATE imgui::imgui_all) + target_compile_features(${PROJECT_NAME}_objcxx PRIVATE cxx_std_11) endif() - -target_compile_definitions(${PROJECT_NAME} PUBLIC "IMGUI_USER_CONFIG=\"${CMAKE_CURRENT_SOURCE_DIR}/my_imgui_config.h\"") -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) diff --git a/recipes/imgui/all/test_package/conanfile.py b/recipes/imgui/all/test_package/conanfile.py index b97c0a2e4d75c..c450d7c3758a8 100644 --- a/recipes/imgui/all/test_package/conanfile.py +++ b/recipes/imgui/all/test_package/conanfile.py @@ -1,8 +1,8 @@ from conan import ConanFile +from conan.tools.apple import is_apple_os from conan.tools.build import can_run from conan.tools.cmake import cmake_layout, CMake, CMakeToolchain import os -import re class TestPackageConan(ConanFile): @@ -16,10 +16,37 @@ def requirements(self): def layout(self): cmake_layout(self) + @property + def _backends(self): + return [ + "allegro5", + "android", + "dx9", + "dx10", + "dx11", + "dx12", + "glfw", + "glut", + "metal", + "opengl2", + "opengl3", + "osx", + "sdl2", + "sdlrenderer2", + "sdlrenderer3", + "vulkan", + "win32", + "wgpu", + ] + def generate(self): with_docking = self.dependencies[self.tested_reference_str].conf_info.get("user.imgui:with_docking", False) tc = CMakeToolchain(self) - tc.variables["DOCKING"] = with_docking + if with_docking: + tc.preprocessor_definitions["DOCKING"] = "" + for backend in self._backends: + if str(self.dependencies[self.tested_reference_str].options.get_safe(f"backend_{backend}", False)) == "True": + tc.preprocessor_definitions[f"IMGUI_IMPL_{backend.upper()}"] = "" tc.generate() def build(self): @@ -29,5 +56,9 @@ def build(self): def test(self): if can_run(self): - bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") + bin_path = os.path.join(self.cpp.build.bindir, "test_package") self.run(bin_path, env="conanrun") + + if is_apple_os(self): + bin_path = os.path.join(self.cpp.build.bindir, "test_package_objcxx") + self.run(bin_path, env="conanrun") diff --git a/recipes/imgui/all/test_package/test_package.cpp b/recipes/imgui/all/test_package/test_package.cpp index 37c38430fa7a8..26d62cfba7375 100644 --- a/recipes/imgui/all/test_package/test_package.cpp +++ b/recipes/imgui/all/test_package/test_package.cpp @@ -1,12 +1,112 @@ #include + #ifdef DOCKING #include #endif -#include +#ifdef IMGUI_IMPL_ALLEGRO5 + #include +#endif +#ifdef IMGUI_IMPL_ANDROID + #include +#endif +#ifdef IMGUI_IMPL_DX9 + #include +#endif +#ifdef IMGUI_IMPL_DX10 + #include +#endif +#ifdef IMGUI_IMPL_DX11 + #include +#endif +#ifdef IMGUI_IMPL_DX12 + #include +#endif +#ifdef IMGUI_IMPL_GLFW + #include +#endif +#ifdef IMGUI_IMPL_GLUT + #include +#endif +#ifdef IMGUI_IMPL_OPENGL2 + #include +#endif +#ifdef IMGUI_IMPL_OPENGL3 + #include +#endif +#ifdef IMGUI_IMPL_SDL2 + #include +#endif +#ifdef IMGUI_IMPL_SDLRENDERER2 + #include +#endif +#ifdef IMGUI_IMPL_SDLRENDERER3 + #include +#endif +#ifdef IMGUI_IMPL_VULKAN + #include +#endif +#ifdef IMGUI_IMPL_WIN32 + #include +#endif +#ifdef IMGUI_IMPL_WGPU + #include +#endif + +#include + +void test_backends() { +#ifdef IMGUI_IMPL_ALLEGRO5 + ImGui_ImplAllegro5_Shutdown(); +#endif +#ifdef IMGUI_IMPL_ANDROID + ImGui_ImplAndroid_Shutdown(); +#endif +#ifdef IMGUI_IMPL_DX9 + ImGui_ImplDX9_Shutdown(); +#endif +#ifdef IMGUI_IMPL_DX10 + ImGui_ImplDX10_Shutdown(); +#endif +#ifdef IMGUI_IMPL_DX11 + ImGui_ImplDX11_Shutdown(); +#endif +#ifdef IMGUI_IMPL_DX12 + ImGui_ImplDX12_Shutdown(); +#endif +#ifdef IMGUI_IMPL_GLFW + ImGui_ImplGlfw_Shutdown(); +#endif +#ifdef IMGUI_IMPL_GLUT + ImGui_ImplGLUT_Shutdown(); +#endif +#ifdef IMGUI_IMPL_OPENGL2 + ImGui_ImplOpenGL2_Shutdown(); +#endif +#ifdef IMGUI_IMPL_OPENGL3 + ImGui_ImplOpenGL3_Shutdown(); +#endif +#ifdef IMGUI_IMPL_SDL2 + ImGui_ImplSDL2_Shutdown(); +#endif +#ifdef IMGUI_IMPL_SDLRENDERER2 + ImGui_ImplSDLRenderer2_Shutdown(); +#endif +#ifdef IMGUI_IMPL_SDLRENDERER3 + ImGui_ImplSDLRenderer3_Shutdown(); +#endif +#ifdef IMGUI_IMPL_VULKAN + ImGui_ImplVulkan_Shutdown(); +#endif +#ifdef IMGUI_IMPL_WIN32 + ImGui_ImplWin32_Shutdown(); +#endif +#ifdef IMGUI_IMPL_WGPU + ImGui_ImplWGPU_Shutdown(); +#endif +} -int main(int, char**) -{ +int main() { printf("IMGUI VERSION: %s\n", IMGUI_VERSION); ImGui::CreateContext(); #ifdef DOCKING diff --git a/recipes/imgui/all/test_package/test_package.mm b/recipes/imgui/all/test_package/test_package.mm new file mode 100644 index 0000000000000..56feca5cbfd6c --- /dev/null +++ b/recipes/imgui/all/test_package/test_package.mm @@ -0,0 +1,33 @@ +#include + +#ifdef DOCKING + #include +#endif + +#ifdef IMGUI_IMPL_OSX + #include +#endif +#ifdef IMGUI_IMPL_METAL + #include +#endif + +#include + +void test_backends() { +#ifdef IMGUI_IMPL_OSX + ImGui_ImplOSX_Shutdown(); +#endif +#ifdef IMGUI_IMPL_METAL + ImGui_ImplMetal_Shutdown(); +#endif +} + +int main() { + printf("IMGUI VERSION: %s\n", IMGUI_VERSION); + ImGui::CreateContext(); +#ifdef DOCKING + printf(" with docking\n"); +#endif + ImGui::DestroyContext(); + return 0; +} diff --git a/recipes/imgui/config.yml b/recipes/imgui/config.yml index f13dd4816765d..069627111682a 100644 --- a/recipes/imgui/config.yml +++ b/recipes/imgui/config.yml @@ -47,4 +47,3 @@ versions: folder: all "1.85": folder: all -