vcpkg/ports/hello-imgui/portfile.cmake

113 lines
4.4 KiB
CMake

vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # this mirrors ImGui's portfile behavior
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO pthom/hello_imgui
REF "v${VERSION}"
SHA512 a81faf70a564147cf9c4587de54e46965b744ce93afadf7c9ce8a4868a9a584eea0c8f8df0c7f701e0404b4984f95ecfa3f5aa36a94ef2a84eaadbcc1e80c9b7
HEAD_REF master
PATCHES
cmake-config.diff
imgui-test-engine.diff
disable-sdl-android.patch
fix-vulkan-binding.patch
)
file(REMOVE_RECURSE
"${SOURCE_PATH}/external/imgui"
"${SOURCE_PATH}/external/nlohmann_json"
"${SOURCE_PATH}/external/OpenGL_Loaders"
"${SOURCE_PATH}/external/stb_hello_imgui/stb_image.h"
"${SOURCE_PATH}/external/stb_hello_imgui/stb_image_write.h"
)
vcpkg_check_features(OUT_FEATURE_OPTIONS options
FEATURES
# "target platforms"
opengl3-binding HELLOIMGUI_HAS_OPENGL3
metal-binding HELLOIMGUI_HAS_METAL
experimental-vulkan-binding HELLOIMGUI_HAS_VULKAN
experimental-dx11-binding HELLOIMGUI_HAS_DIRECTX11
experimental-dx12-binding HELLOIMGUI_HAS_DIRECTX12
# "platform backends"
glfw-binding HELLOIMGUI_USE_GLFW3
# sdl2-binding HELLOIMGUI_USE_SDL2 # removed with imgui[sdl2-binding]
# other
test-engine HELLOIMGUI_WITH_TEST_ENGINE
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${options}
-DHELLO_IMGUI_IMGUI_SHARED=OFF
-DHELLOIMGUI_BUILD_DEMOS=OFF
-DHELLOIMGUI_BUILD_IMGUI=OFF
-DHELLOIMGUI_FETCH_FORBIDDEN=ON
-DHELLOIMGUI_FREETYPE_STATIC=OFF
-DHELLOIMGUI_MACOS_NO_BUNDLE=OFF
-DHELLOIMGUI_USE_IMGUI_CMAKE_PACKAGE=ON
-DHELLOIMGUI_WIN32_NO_CONSOLE=ON
-DHELLOIMGUI_WIN32_AUTO_WINMAIN=ON
-DCMAKE_REQUIRE_FIND_PACKAGE_glad=ON
-DCMAKE_REQUIRE_FIND_PACKAGE_nlohmann_json=ON
MAYBE_UNUSED_VARIABLES
CMAKE_REQUIRE_FIND_PACKAGE_glad
HELLOIMGUI_WIN32_NO_CONSOLE
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/hello_imgui" PACKAGE_NAME "hello-imgui")
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
"${CURRENT_PACKAGES_DIR}/share/hello-imgui/hello_imgui_cmake/ios-cmake"
)
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
if (NOT HELLOIMGUI_HAS_OPENGL3
AND NOT HELLOIMGUI_HAS_METAL
AND NOT HELLOIMGUI_HAS_VULKAN
AND NOT HELLOIMGUI_HAS_DIRECTX11
AND NOT HELLOIMGUI_HAS_DIRECTX12)
set(no_rendering_backend TRUE)
endif()
if (NOT HELLOIMGUI_USE_GLFW3
AND NOT HELLOIMGUI_USE_SDL2)
set(no_platform_backend TRUE)
endif()
if (no_rendering_backend OR no_platform_backend)
file(APPEND "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" "
########################################################################
!!!! WARNING !!!!!
!!!! Installed hello-imgui without a viable backend !!!!!
########################################################################
When installing hello-imgui, you should specify:
- At least one (or more) rendering backend (OpenGL3, Metal, Vulkan, DirectX11, DirectX12)
Make your choice according to your needs and your target platforms, between:
opengl3-binding # This is the recommended choice, especially for beginners
metal-binding # Apple only, advanced users only
experimental-vulkan-binding # Advanced users only
experimental-dx11-binding # Windows only, still experimental
experimental-dx12-binding # Windows only, advanced users only, still experimental
- At least one (or more) platform backend (Glfw3*):
Make your choice according to your needs and your target platforms, between:
glfw-binding
*) This port currently doesn't offer an SDL platform backend.
For example, you could use:
vcpkg install \"hello-imgui[opengl3-binding,glfw-binding]\"
########################################################################
!!!! WARNING !!!!!
!!!! Installed hello-imgui without a viable backend !!!!!
########################################################################
")
endif()
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")