aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/hello-imgui/portfile.cmake
blob: 073f3ea70db68653582407c265d666fcd21269c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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 b44741e27278974f6a545a3143abd18027d98503cc912085e08528c467197fb208d2d4876e483f74e518f3dfc14d12c3579e379b9939dc364a1fff4ee98bb8f5
    HEAD_REF master
    PATCHES
        cmake-config.diff
        imgui-test-engine.diff
        # PR has been merged into https://github.com/pthom/hello_imgui/pull/142. This patch should not be needed in the next release.
        support-imgui-1_91_9.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")