tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
imgui: rebase CMakeLists patch
SomeoneSerge
8 months ago
7e7fc22d
e7c7a0ac
+231
-12
2 changed files
expand all
collapse all
unified
split
pkgs
by-name
im
imgui
0001-imgui-allow-installing-into-split-outputs.patch
package.nix
+198
pkgs/by-name/im/imgui/0001-imgui-allow-installing-into-split-outputs.patch
···
1
1
+
From c5fe9a321d83fc70cf30ef999c24377869cedbd8 Mon Sep 17 00:00:00 2001
2
2
+
From: SomeoneSerge <else@someonex.net>
3
3
+
Date: Thu, 27 Jun 2024 11:15:38 +0000
4
4
+
Subject: [PATCH] imgui: allow installing into split outputs
5
5
+
6
6
+
---
7
7
+
ports/imgui/CMakeLists.txt | 74 +++++++++++++++++++++++---------------
8
8
+
1 file changed, 45 insertions(+), 29 deletions(-)
9
9
+
10
10
+
diff --git a/ports/imgui/CMakeLists.txt b/ports/imgui/CMakeLists.txt
11
11
+
index 1502a5aff2..be05d29f4f 100644
12
12
+
--- a/ports/imgui/CMakeLists.txt
13
13
+
+++ b/ports/imgui/CMakeLists.txt
14
14
+
@@ -8,13 +8,15 @@ if(APPLE)
15
15
+
enable_language(OBJCXX)
16
16
+
endif()
17
17
+
18
18
+
+include(GNUInstallDirs) # Defines CMAKE_INSTALL_INCLUDEDIR if not set
19
19
+
+
20
20
+
add_library(${PROJECT_NAME} "")
21
21
+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
22
22
+
target_include_directories(
23
23
+
${PROJECT_NAME}
24
24
+
PUBLIC
25
25
+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
26
26
+
- $<INSTALL_INTERFACE:include>
27
27
+
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
28
28
+
)
29
29
+
30
30
+
target_sources(
31
31
+
@@ -154,18 +156,32 @@ list(REMOVE_DUPLICATES BINDINGS_SOURCES)
32
32
+
install(
33
33
+
TARGETS ${PROJECT_NAME}
34
34
+
EXPORT ${PROJECT_NAME}_target
35
35
+
- ARCHIVE DESTINATION lib
36
36
+
- LIBRARY DESTINATION lib
37
37
+
- RUNTIME DESTINATION bin
38
38
+
+ ARCHIVE
39
39
+
+ COMPONENT Development
40
40
+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
41
41
+
+ LIBRARY
42
42
+
+ COMPONENT Runtime
43
43
+
+ NAMELINK_COMPONENT Development
44
44
+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
45
45
+
+ RUNTIME
46
46
+
+ COMPONENT Runtime
47
47
+
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
48
48
+
)
49
49
+
50
50
+
foreach(BINDING_TARGET ${BINDING_TARGETS})
51
51
+
install(
52
52
+
TARGETS ${BINDING_TARGET}
53
53
+
EXPORT ${PROJECT_NAME}_target
54
54
+
- ARCHIVE DESTINATION lib
55
55
+
- LIBRARY DESTINATION lib
56
56
+
- RUNTIME DESTINATION bin
57
57
+
+ ARCHIVE
58
58
+
+ COMPONENT Development
59
59
+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
60
60
+
+ LIBRARY
61
61
+
+ COMPONENT Runtime
62
62
+
+ NAMELINK_COMPONENT Development
63
63
+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
64
64
+
+ RUNTIME
65
65
+
+ COMPONENT Runtime
66
66
+
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
67
67
+
)
68
68
+
endforeach()
69
69
+
70
70
+
@@ -178,47 +194,47 @@ if(NOT IMGUI_SKIP_HEADERS)
71
71
+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_rectpack.h
72
72
+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_truetype.h
73
73
+
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
74
74
+
- DESTINATION include
75
75
+
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
76
76
+
)
77
77
+
78
78
+
if(IMGUI_BUILD_ALLEGRO5_BINDING)
79
79
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION include)
80
80
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
81
81
+
endif()
82
82
+
83
83
+
if (IMGUI_BUILD_ANDROID_BINDING)
84
84
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION include)
85
85
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
86
86
+
endif()
87
87
+
88
88
+
if(IMGUI_BUILD_DX9_BINDING)
89
89
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION include)
90
90
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
91
91
+
endif()
92
92
+
93
93
+
if(IMGUI_BUILD_DX10_BINDING)
94
94
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION include)
95
95
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
96
96
+
endif()
97
97
+
98
98
+
if(IMGUI_BUILD_DX11_BINDING)
99
99
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION include)
100
100
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
101
101
+
endif()
102
102
+
103
103
+
if(IMGUI_BUILD_DX12_BINDING)
104
104
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION include)
105
105
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
106
106
+
endif()
107
107
+
108
108
+
if(IMGUI_BUILD_GLFW_BINDING)
109
109
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION include)
110
110
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
111
111
+
endif()
112
112
+
113
113
+
if(IMGUI_BUILD_GLUT_BINDING)
114
114
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION include)
115
115
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
116
116
+
endif()
117
117
+
118
118
+
if(IMGUI_BUILD_METAL_BINDING)
119
119
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION include)
120
120
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
121
121
+
endif()
122
122
+
123
123
+
if(IMGUI_BUILD_OPENGL2_BINDING)
124
124
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION include)
125
125
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
126
126
+
endif()
127
127
+
128
128
+
if(IMGUI_BUILD_OPENGL3_BINDING)
129
129
+
@@ -227,16 +243,16 @@ if(NOT IMGUI_SKIP_HEADERS)
130
130
+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.h
131
131
+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3_loader.h
132
132
+
DESTINATION
133
133
+
- include
134
134
+
+ ${CMAKE_INSTALL_INCLUDEDIR}
135
135
+
)
136
136
+
endif()
137
137
+
138
138
+
if(IMGUI_BUILD_OSX_BINDING)
139
139
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
140
140
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
141
141
+
endif()
142
142
+
143
143
+
if(IMGUI_BUILD_SDL3_BINDING)
144
144
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
145
145
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
146
146
+
endif()
147
147
+
148
148
+
if(IMGUI_BUILD_SDLGPU3_BINDING)
149
149
+
@@ -245,24 +261,24 @@ if(NOT IMGUI_SKIP_HEADERS)
150
150
+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.h
151
151
+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3_shaders.h
152
152
+
DESTINATION
153
153
+
- include
154
154
+
+ ${CMAKE_INSTALL_INCLUDEDIR}
155
155
+
)
156
156
+
endif()
157
157
+
158
158
+
if(IMGUI_BUILD_SDL3_RENDERER_BINDING)
159
159
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION include)
160
160
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
161
161
+
endif()
162
162
+
163
163
+
if(IMGUI_BUILD_VULKAN_BINDING)
164
164
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION include)
165
165
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
166
166
+
endif()
167
167
+
168
168
+
if(IMGUI_BUILD_WIN32_BINDING)
169
169
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION include)
170
170
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
171
171
+
endif()
172
172
+
173
173
+
if(IMGUI_FREETYPE)
174
174
+
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
175
175
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
176
176
+
endif()
177
177
+
178
178
+
if(IMGUI_TEST_ENGINE)
179
179
+
@@ -285,13 +301,13 @@ if(NOT IMGUI_SKIP_HEADERS)
180
180
+
endif()
181
181
+
182
182
+
include(CMakePackageConfigHelpers)
183
183
+
-configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION share/imgui)
184
184
+
+configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
185
185
+
186
186
+
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION share/imgui)
187
187
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
188
188
+
189
189
+
install(
190
190
+
EXPORT ${PROJECT_NAME}_target
191
191
+
NAMESPACE ${PROJECT_NAME}::
192
192
+
FILE ${PROJECT_NAME}-targets.cmake
193
193
+
- DESTINATION share/${PROJECT_NAME}
194
194
+
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
195
195
+
)
196
196
+
--
197
197
+
2.47.2
198
198
+
+33
-12
pkgs/by-name/im/imgui/package.nix
···
9
9
glfw,
10
10
libGL,
11
11
SDL2,
12
12
+
sdl3,
12
13
vcpkg,
13
14
vulkan-headers,
14
15
vulkan-loader,
16
16
+
imgui,
15
17
16
18
# NOTE: Not coming from vcpkg
17
19
IMGUI_LINK_GLVND ?
···
31
33
IMGUI_BUILD_METAL_BINDING ? stdenv.hostPlatform.isDarwin,
32
34
IMGUI_BUILD_OPENGL2_BINDING ? false,
33
35
IMGUI_BUILD_OPENGL3_BINDING ?
34
34
-
IMGUI_BUILD_SDL2_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
36
36
+
IMGUI_BUILD_SDL3_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
35
37
IMGUI_BUILD_OSX_BINDING ? stdenv.hostPlatform.isDarwin,
36
36
-
IMGUI_BUILD_SDL2_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
37
37
-
IMGUI_BUILD_SDL2_RENDERER_BINDING ? IMGUI_BUILD_SDL2_BINDING,
38
38
+
IMGUI_BUILD_SDL3_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
39
39
+
IMGUI_BUILD_SDL3_RENDERER_BINDING ? IMGUI_BUILD_SDL3_BINDING,
40
40
+
IMGUI_BUILD_SDL2_BINDING ? false,
41
41
+
IMGUI_BUILD_SDL2_RENDERER_BINDING ? false,
42
42
+
IMGUI_BUILD_SDLGPU3_BINDING ? IMGUI_BUILD_SDL3_BINDING && lib.versionAtLeast imgui.version "1.91.8",
38
43
IMGUI_BUILD_VULKAN_BINDING ? false,
39
44
IMGUI_BUILD_WIN32_BINDING ? false,
40
45
IMGUI_FREETYPE ? false,
41
46
IMGUI_FREETYPE_LUNASVG ? false,
42
47
IMGUI_USE_WCHAR32 ? false,
43
48
}@args:
44
44
-
45
49
let
50
50
+
vcpkgRevs.postSdl3 = lib.versionAtLeast vcpkg.version "2025.03.19";
51
51
+
vcpkgRevs.others = !vcpkgRevs.postSdl3;
46
52
vcpkgSource = applyPatches {
47
53
inherit (vcpkg) src;
48
48
-
patches = [
49
49
-
# Install imgui into split outputs:
50
50
-
(fetchpatch {
51
51
-
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
52
52
-
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
53
53
-
})
54
54
-
];
54
54
+
patches =
55
55
+
lib.optionals vcpkgRevs.postSdl3 [
56
56
+
# This patch was not accepted mainstream, as out-of-scope
57
57
+
# and also to not encourage dependencies between Nixpkgs and Vcpkg.
58
58
+
# Currently @SomeoneSerge is responsible for rebasing it when necessary.
59
59
+
# Consider vendoring instead?
60
60
+
./0001-imgui-allow-installing-into-split-outputs.patch
61
61
+
]
62
62
+
++ lib.optionals vcpkgRevs.others [
63
63
+
# Original version of the split-outputs patch
64
64
+
fetchpatch
65
65
+
{
66
66
+
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
67
67
+
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
68
68
+
}
69
69
+
];
55
70
};
56
71
in
57
72
···
82
97
propagatedBuildInputs =
83
98
lib.optionals IMGUI_LINK_GLVND [ libGL ]
84
99
++ lib.optionals IMGUI_BUILD_GLFW_BINDING [ glfw ]
100
100
+
++ lib.optionals IMGUI_BUILD_SDL3_BINDING [ sdl3 ]
85
101
++ lib.optionals IMGUI_BUILD_SDL2_BINDING [ SDL2 ]
86
102
++ lib.optionals IMGUI_BUILD_VULKAN_BINDING [
87
103
vulkan-headers
···
103
119
(lib.cmakeBool "IMGUI_BUILD_OPENGL3_BINDING" IMGUI_BUILD_OPENGL3_BINDING)
104
120
(lib.cmakeBool "IMGUI_BUILD_OSX_BINDING" IMGUI_BUILD_OSX_BINDING)
105
121
(lib.cmakeBool "IMGUI_BUILD_SDL2_BINDING" IMGUI_BUILD_SDL2_BINDING)
122
122
+
(lib.cmakeBool "IMGUI_BUILD_SDL3_BINDING" IMGUI_BUILD_SDL3_BINDING)
106
123
(lib.cmakeBool "IMGUI_BUILD_SDL2_RENDERER_BINDING" IMGUI_BUILD_SDL2_RENDERER_BINDING)
124
124
+
(lib.cmakeBool "IMGUI_BUILD_SDL3_RENDERER_BINDING" IMGUI_BUILD_SDL3_RENDERER_BINDING)
125
125
+
(lib.cmakeBool "IMGUI_BUILD_SDLGPU3_BINDING" IMGUI_BUILD_SDLGPU3_BINDING)
107
126
(lib.cmakeBool "IMGUI_BUILD_VULKAN_BINDING" IMGUI_BUILD_VULKAN_BINDING)
108
127
(lib.cmakeBool "IMGUI_BUILD_WIN32_BINDING" IMGUI_BUILD_WIN32_BINDING)
109
128
(lib.cmakeBool "IMGUI_FREETYPE" IMGUI_FREETYPE)
···
120
139
meta = {
121
140
# These flags haven't been tested:
122
141
broken =
123
123
-
IMGUI_FREETYPE
142
142
+
IMGUI_BUILD_SDL2_BINDING # Option removed from Vcpkg' CMakeLists
143
143
+
|| IMGUI_BUILD_SDL2_RENDERER_BINDING
144
144
+
|| IMGUI_FREETYPE
124
145
|| IMGUI_FREETYPE_LUNASVG
125
146
|| IMGUI_BUILD_DX9_BINDING
126
147
|| IMGUI_BUILD_DX10_BINDING