Skip to content

Commit 7e7fc22

Browse files
committed
imgui: rebase CMakeLists patch
1 parent e7c7a0a commit 7e7fc22

File tree

2 files changed

+231
-12
lines changed

2 files changed

+231
-12
lines changed
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
From c5fe9a321d83fc70cf30ef999c24377869cedbd8 Mon Sep 17 00:00:00 2001
2+
From: SomeoneSerge <[email protected]>
3+
Date: Thu, 27 Jun 2024 11:15:38 +0000
4+
Subject: [PATCH] imgui: allow installing into split outputs
5+
6+
---
7+
ports/imgui/CMakeLists.txt | 74 +++++++++++++++++++++++---------------
8+
1 file changed, 45 insertions(+), 29 deletions(-)
9+
10+
diff --git a/ports/imgui/CMakeLists.txt b/ports/imgui/CMakeLists.txt
11+
index 1502a5aff2..be05d29f4f 100644
12+
--- a/ports/imgui/CMakeLists.txt
13+
+++ b/ports/imgui/CMakeLists.txt
14+
@@ -8,13 +8,15 @@ if(APPLE)
15+
enable_language(OBJCXX)
16+
endif()
17+
18+
+include(GNUInstallDirs) # Defines CMAKE_INSTALL_INCLUDEDIR if not set
19+
+
20+
add_library(${PROJECT_NAME} "")
21+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
22+
target_include_directories(
23+
${PROJECT_NAME}
24+
PUBLIC
25+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
26+
- $<INSTALL_INTERFACE:include>
27+
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
28+
)
29+
30+
target_sources(
31+
@@ -154,18 +156,32 @@ list(REMOVE_DUPLICATES BINDINGS_SOURCES)
32+
install(
33+
TARGETS ${PROJECT_NAME}
34+
EXPORT ${PROJECT_NAME}_target
35+
- ARCHIVE DESTINATION lib
36+
- LIBRARY DESTINATION lib
37+
- RUNTIME DESTINATION bin
38+
+ ARCHIVE
39+
+ COMPONENT Development
40+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
41+
+ LIBRARY
42+
+ COMPONENT Runtime
43+
+ NAMELINK_COMPONENT Development
44+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
45+
+ RUNTIME
46+
+ COMPONENT Runtime
47+
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
48+
)
49+
50+
foreach(BINDING_TARGET ${BINDING_TARGETS})
51+
install(
52+
TARGETS ${BINDING_TARGET}
53+
EXPORT ${PROJECT_NAME}_target
54+
- ARCHIVE DESTINATION lib
55+
- LIBRARY DESTINATION lib
56+
- RUNTIME DESTINATION bin
57+
+ ARCHIVE
58+
+ COMPONENT Development
59+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
60+
+ LIBRARY
61+
+ COMPONENT Runtime
62+
+ NAMELINK_COMPONENT Development
63+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
64+
+ RUNTIME
65+
+ COMPONENT Runtime
66+
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
67+
)
68+
endforeach()
69+
70+
@@ -178,47 +194,47 @@ if(NOT IMGUI_SKIP_HEADERS)
71+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_rectpack.h
72+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_truetype.h
73+
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
74+
- DESTINATION include
75+
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
76+
)
77+
78+
if(IMGUI_BUILD_ALLEGRO5_BINDING)
79+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION include)
80+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
81+
endif()
82+
83+
if (IMGUI_BUILD_ANDROID_BINDING)
84+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION include)
85+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
86+
endif()
87+
88+
if(IMGUI_BUILD_DX9_BINDING)
89+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION include)
90+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
91+
endif()
92+
93+
if(IMGUI_BUILD_DX10_BINDING)
94+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION include)
95+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
96+
endif()
97+
98+
if(IMGUI_BUILD_DX11_BINDING)
99+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION include)
100+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
101+
endif()
102+
103+
if(IMGUI_BUILD_DX12_BINDING)
104+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION include)
105+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
106+
endif()
107+
108+
if(IMGUI_BUILD_GLFW_BINDING)
109+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION include)
110+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
111+
endif()
112+
113+
if(IMGUI_BUILD_GLUT_BINDING)
114+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION include)
115+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
116+
endif()
117+
118+
if(IMGUI_BUILD_METAL_BINDING)
119+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION include)
120+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
121+
endif()
122+
123+
if(IMGUI_BUILD_OPENGL2_BINDING)
124+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION include)
125+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
126+
endif()
127+
128+
if(IMGUI_BUILD_OPENGL3_BINDING)
129+
@@ -227,16 +243,16 @@ if(NOT IMGUI_SKIP_HEADERS)
130+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.h
131+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3_loader.h
132+
DESTINATION
133+
- include
134+
+ ${CMAKE_INSTALL_INCLUDEDIR}
135+
)
136+
endif()
137+
138+
if(IMGUI_BUILD_OSX_BINDING)
139+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
140+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
141+
endif()
142+
143+
if(IMGUI_BUILD_SDL3_BINDING)
144+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
145+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
146+
endif()
147+
148+
if(IMGUI_BUILD_SDLGPU3_BINDING)
149+
@@ -245,24 +261,24 @@ if(NOT IMGUI_SKIP_HEADERS)
150+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.h
151+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3_shaders.h
152+
DESTINATION
153+
- include
154+
+ ${CMAKE_INSTALL_INCLUDEDIR}
155+
)
156+
endif()
157+
158+
if(IMGUI_BUILD_SDL3_RENDERER_BINDING)
159+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION include)
160+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
161+
endif()
162+
163+
if(IMGUI_BUILD_VULKAN_BINDING)
164+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION include)
165+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
166+
endif()
167+
168+
if(IMGUI_BUILD_WIN32_BINDING)
169+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION include)
170+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
171+
endif()
172+
173+
if(IMGUI_FREETYPE)
174+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
175+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
176+
endif()
177+
178+
if(IMGUI_TEST_ENGINE)
179+
@@ -285,13 +301,13 @@ if(NOT IMGUI_SKIP_HEADERS)
180+
endif()
181+
182+
include(CMakePackageConfigHelpers)
183+
-configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION share/imgui)
184+
+configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
185+
186+
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION share/imgui)
187+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
188+
189+
install(
190+
EXPORT ${PROJECT_NAME}_target
191+
NAMESPACE ${PROJECT_NAME}::
192+
FILE ${PROJECT_NAME}-targets.cmake
193+
- DESTINATION share/${PROJECT_NAME}
194+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
195+
)
196+
--
197+
2.47.2
198+

pkgs/by-name/im/imgui/package.nix

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
glfw,
1010
libGL,
1111
SDL2,
12+
sdl3,
1213
vcpkg,
1314
vulkan-headers,
1415
vulkan-loader,
16+
imgui,
1517

1618
# NOTE: Not coming from vcpkg
1719
IMGUI_LINK_GLVND ?
@@ -31,27 +33,40 @@
3133
IMGUI_BUILD_METAL_BINDING ? stdenv.hostPlatform.isDarwin,
3234
IMGUI_BUILD_OPENGL2_BINDING ? false,
3335
IMGUI_BUILD_OPENGL3_BINDING ?
34-
IMGUI_BUILD_SDL2_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
36+
IMGUI_BUILD_SDL3_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
3537
IMGUI_BUILD_OSX_BINDING ? stdenv.hostPlatform.isDarwin,
36-
IMGUI_BUILD_SDL2_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
37-
IMGUI_BUILD_SDL2_RENDERER_BINDING ? IMGUI_BUILD_SDL2_BINDING,
38+
IMGUI_BUILD_SDL3_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
39+
IMGUI_BUILD_SDL3_RENDERER_BINDING ? IMGUI_BUILD_SDL3_BINDING,
40+
IMGUI_BUILD_SDL2_BINDING ? false,
41+
IMGUI_BUILD_SDL2_RENDERER_BINDING ? false,
42+
IMGUI_BUILD_SDLGPU3_BINDING ? IMGUI_BUILD_SDL3_BINDING && lib.versionAtLeast imgui.version "1.91.8",
3843
IMGUI_BUILD_VULKAN_BINDING ? false,
3944
IMGUI_BUILD_WIN32_BINDING ? false,
4045
IMGUI_FREETYPE ? false,
4146
IMGUI_FREETYPE_LUNASVG ? false,
4247
IMGUI_USE_WCHAR32 ? false,
4348
}@args:
44-
4549
let
50+
vcpkgRevs.postSdl3 = lib.versionAtLeast vcpkg.version "2025.03.19";
51+
vcpkgRevs.others = !vcpkgRevs.postSdl3;
4652
vcpkgSource = applyPatches {
4753
inherit (vcpkg) src;
48-
patches = [
49-
# Install imgui into split outputs:
50-
(fetchpatch {
51-
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
52-
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
53-
})
54-
];
54+
patches =
55+
lib.optionals vcpkgRevs.postSdl3 [
56+
# This patch was not accepted mainstream, as out-of-scope
57+
# and also to not encourage dependencies between Nixpkgs and Vcpkg.
58+
# Currently @SomeoneSerge is responsible for rebasing it when necessary.
59+
# Consider vendoring instead?
60+
./0001-imgui-allow-installing-into-split-outputs.patch
61+
]
62+
++ lib.optionals vcpkgRevs.others [
63+
# Original version of the split-outputs patch
64+
fetchpatch
65+
{
66+
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
67+
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
68+
}
69+
];
5570
};
5671
in
5772

@@ -82,6 +97,7 @@ stdenv.mkDerivation rec {
8297
propagatedBuildInputs =
8398
lib.optionals IMGUI_LINK_GLVND [ libGL ]
8499
++ lib.optionals IMGUI_BUILD_GLFW_BINDING [ glfw ]
100+
++ lib.optionals IMGUI_BUILD_SDL3_BINDING [ sdl3 ]
85101
++ lib.optionals IMGUI_BUILD_SDL2_BINDING [ SDL2 ]
86102
++ lib.optionals IMGUI_BUILD_VULKAN_BINDING [
87103
vulkan-headers
@@ -103,7 +119,10 @@ stdenv.mkDerivation rec {
103119
(lib.cmakeBool "IMGUI_BUILD_OPENGL3_BINDING" IMGUI_BUILD_OPENGL3_BINDING)
104120
(lib.cmakeBool "IMGUI_BUILD_OSX_BINDING" IMGUI_BUILD_OSX_BINDING)
105121
(lib.cmakeBool "IMGUI_BUILD_SDL2_BINDING" IMGUI_BUILD_SDL2_BINDING)
122+
(lib.cmakeBool "IMGUI_BUILD_SDL3_BINDING" IMGUI_BUILD_SDL3_BINDING)
106123
(lib.cmakeBool "IMGUI_BUILD_SDL2_RENDERER_BINDING" IMGUI_BUILD_SDL2_RENDERER_BINDING)
124+
(lib.cmakeBool "IMGUI_BUILD_SDL3_RENDERER_BINDING" IMGUI_BUILD_SDL3_RENDERER_BINDING)
125+
(lib.cmakeBool "IMGUI_BUILD_SDLGPU3_BINDING" IMGUI_BUILD_SDLGPU3_BINDING)
107126
(lib.cmakeBool "IMGUI_BUILD_VULKAN_BINDING" IMGUI_BUILD_VULKAN_BINDING)
108127
(lib.cmakeBool "IMGUI_BUILD_WIN32_BINDING" IMGUI_BUILD_WIN32_BINDING)
109128
(lib.cmakeBool "IMGUI_FREETYPE" IMGUI_FREETYPE)
@@ -120,7 +139,9 @@ stdenv.mkDerivation rec {
120139
meta = {
121140
# These flags haven't been tested:
122141
broken =
123-
IMGUI_FREETYPE
142+
IMGUI_BUILD_SDL2_BINDING # Option removed from Vcpkg' CMakeLists
143+
|| IMGUI_BUILD_SDL2_RENDERER_BINDING
144+
|| IMGUI_FREETYPE
124145
|| IMGUI_FREETYPE_LUNASVG
125146
|| IMGUI_BUILD_DX9_BINDING
126147
|| IMGUI_BUILD_DX10_BINDING

0 commit comments

Comments
 (0)