imgui: rebase CMakeLists patch
This commit is contained in:
parent
e7c7a0ac5a
commit
7e7fc22d1a
@ -0,0 +1,198 @@
|
||||
From c5fe9a321d83fc70cf30ef999c24377869cedbd8 Mon Sep 17 00:00:00 2001
|
||||
From: SomeoneSerge <else@someonex.net>
|
||||
Date: Thu, 27 Jun 2024 11:15:38 +0000
|
||||
Subject: [PATCH] imgui: allow installing into split outputs
|
||||
|
||||
---
|
||||
ports/imgui/CMakeLists.txt | 74 +++++++++++++++++++++++---------------
|
||||
1 file changed, 45 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/ports/imgui/CMakeLists.txt b/ports/imgui/CMakeLists.txt
|
||||
index 1502a5aff2..be05d29f4f 100644
|
||||
--- a/ports/imgui/CMakeLists.txt
|
||||
+++ b/ports/imgui/CMakeLists.txt
|
||||
@@ -8,13 +8,15 @@ if(APPLE)
|
||||
enable_language(OBJCXX)
|
||||
endif()
|
||||
|
||||
+include(GNUInstallDirs) # Defines CMAKE_INSTALL_INCLUDEDIR if not set
|
||||
+
|
||||
add_library(${PROJECT_NAME} "")
|
||||
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||
target_include_directories(
|
||||
${PROJECT_NAME}
|
||||
PUBLIC
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
|
||||
- $<INSTALL_INTERFACE:include>
|
||||
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
target_sources(
|
||||
@@ -154,18 +156,32 @@ list(REMOVE_DUPLICATES BINDINGS_SOURCES)
|
||||
install(
|
||||
TARGETS ${PROJECT_NAME}
|
||||
EXPORT ${PROJECT_NAME}_target
|
||||
- ARCHIVE DESTINATION lib
|
||||
- LIBRARY DESTINATION lib
|
||||
- RUNTIME DESTINATION bin
|
||||
+ ARCHIVE
|
||||
+ COMPONENT Development
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ LIBRARY
|
||||
+ COMPONENT Runtime
|
||||
+ NAMELINK_COMPONENT Development
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ RUNTIME
|
||||
+ COMPONENT Runtime
|
||||
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
foreach(BINDING_TARGET ${BINDING_TARGETS})
|
||||
install(
|
||||
TARGETS ${BINDING_TARGET}
|
||||
EXPORT ${PROJECT_NAME}_target
|
||||
- ARCHIVE DESTINATION lib
|
||||
- LIBRARY DESTINATION lib
|
||||
- RUNTIME DESTINATION bin
|
||||
+ ARCHIVE
|
||||
+ COMPONENT Development
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ LIBRARY
|
||||
+ COMPONENT Runtime
|
||||
+ NAMELINK_COMPONENT Development
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ RUNTIME
|
||||
+ COMPONENT Runtime
|
||||
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
@@ -178,47 +194,47 @@ if(NOT IMGUI_SKIP_HEADERS)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/imstb_rectpack.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/imstb_truetype.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
|
||||
- DESTINATION include
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
if(IMGUI_BUILD_ALLEGRO5_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if (IMGUI_BUILD_ANDROID_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_DX9_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_DX10_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_DX11_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_DX12_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_GLFW_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_GLUT_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_METAL_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_OPENGL2_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_OPENGL3_BINDING)
|
||||
@@ -227,16 +243,16 @@ if(NOT IMGUI_SKIP_HEADERS)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3_loader.h
|
||||
DESTINATION
|
||||
- include
|
||||
+ ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_OSX_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_SDL3_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_SDLGPU3_BINDING)
|
||||
@@ -245,24 +261,24 @@ if(NOT IMGUI_SKIP_HEADERS)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3_shaders.h
|
||||
DESTINATION
|
||||
- include
|
||||
+ ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_SDL3_RENDERER_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_VULKAN_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_BUILD_WIN32_BINDING)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_FREETYPE)
|
||||
- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
|
||||
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
if(IMGUI_TEST_ENGINE)
|
||||
@@ -285,13 +301,13 @@ if(NOT IMGUI_SKIP_HEADERS)
|
||||
endif()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
-configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION share/imgui)
|
||||
+configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
|
||||
|
||||
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION share/imgui)
|
||||
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/imgui)
|
||||
|
||||
install(
|
||||
EXPORT ${PROJECT_NAME}_target
|
||||
NAMESPACE ${PROJECT_NAME}::
|
||||
FILE ${PROJECT_NAME}-targets.cmake
|
||||
- DESTINATION share/${PROJECT_NAME}
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||
)
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@ -9,9 +9,11 @@
|
||||
glfw,
|
||||
libGL,
|
||||
SDL2,
|
||||
sdl3,
|
||||
vcpkg,
|
||||
vulkan-headers,
|
||||
vulkan-loader,
|
||||
imgui,
|
||||
|
||||
# NOTE: Not coming from vcpkg
|
||||
IMGUI_LINK_GLVND ?
|
||||
@ -31,27 +33,40 @@
|
||||
IMGUI_BUILD_METAL_BINDING ? stdenv.hostPlatform.isDarwin,
|
||||
IMGUI_BUILD_OPENGL2_BINDING ? false,
|
||||
IMGUI_BUILD_OPENGL3_BINDING ?
|
||||
IMGUI_BUILD_SDL2_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
|
||||
IMGUI_BUILD_SDL3_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
|
||||
IMGUI_BUILD_OSX_BINDING ? stdenv.hostPlatform.isDarwin,
|
||||
IMGUI_BUILD_SDL2_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
|
||||
IMGUI_BUILD_SDL2_RENDERER_BINDING ? IMGUI_BUILD_SDL2_BINDING,
|
||||
IMGUI_BUILD_SDL3_BINDING ? !IMGUI_BUILD_GLFW_BINDING && !stdenv.hostPlatform.isDarwin,
|
||||
IMGUI_BUILD_SDL3_RENDERER_BINDING ? IMGUI_BUILD_SDL3_BINDING,
|
||||
IMGUI_BUILD_SDL2_BINDING ? false,
|
||||
IMGUI_BUILD_SDL2_RENDERER_BINDING ? false,
|
||||
IMGUI_BUILD_SDLGPU3_BINDING ? IMGUI_BUILD_SDL3_BINDING && lib.versionAtLeast imgui.version "1.91.8",
|
||||
IMGUI_BUILD_VULKAN_BINDING ? false,
|
||||
IMGUI_BUILD_WIN32_BINDING ? false,
|
||||
IMGUI_FREETYPE ? false,
|
||||
IMGUI_FREETYPE_LUNASVG ? false,
|
||||
IMGUI_USE_WCHAR32 ? false,
|
||||
}@args:
|
||||
|
||||
let
|
||||
vcpkgRevs.postSdl3 = lib.versionAtLeast vcpkg.version "2025.03.19";
|
||||
vcpkgRevs.others = !vcpkgRevs.postSdl3;
|
||||
vcpkgSource = applyPatches {
|
||||
inherit (vcpkg) src;
|
||||
patches = [
|
||||
# Install imgui into split outputs:
|
||||
(fetchpatch {
|
||||
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
|
||||
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
|
||||
})
|
||||
];
|
||||
patches =
|
||||
lib.optionals vcpkgRevs.postSdl3 [
|
||||
# This patch was not accepted mainstream, as out-of-scope
|
||||
# and also to not encourage dependencies between Nixpkgs and Vcpkg.
|
||||
# Currently @SomeoneSerge is responsible for rebasing it when necessary.
|
||||
# Consider vendoring instead?
|
||||
./0001-imgui-allow-installing-into-split-outputs.patch
|
||||
]
|
||||
++ lib.optionals vcpkgRevs.others [
|
||||
# Original version of the split-outputs patch
|
||||
fetchpatch
|
||||
{
|
||||
url = "https://github.com/microsoft/vcpkg/commit/4108dd75ce9731a4fdcf50fd05034405156eaddf.patch";
|
||||
hash = "sha256-jXbR0NfyuO8EESmva5A+H3WmBfCG83OiA8ZCcWsRhQA=";
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
|
||||
@ -82,6 +97,7 @@ stdenv.mkDerivation rec {
|
||||
propagatedBuildInputs =
|
||||
lib.optionals IMGUI_LINK_GLVND [ libGL ]
|
||||
++ lib.optionals IMGUI_BUILD_GLFW_BINDING [ glfw ]
|
||||
++ lib.optionals IMGUI_BUILD_SDL3_BINDING [ sdl3 ]
|
||||
++ lib.optionals IMGUI_BUILD_SDL2_BINDING [ SDL2 ]
|
||||
++ lib.optionals IMGUI_BUILD_VULKAN_BINDING [
|
||||
vulkan-headers
|
||||
@ -103,7 +119,10 @@ stdenv.mkDerivation rec {
|
||||
(lib.cmakeBool "IMGUI_BUILD_OPENGL3_BINDING" IMGUI_BUILD_OPENGL3_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_OSX_BINDING" IMGUI_BUILD_OSX_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_SDL2_BINDING" IMGUI_BUILD_SDL2_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_SDL3_BINDING" IMGUI_BUILD_SDL3_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_SDL2_RENDERER_BINDING" IMGUI_BUILD_SDL2_RENDERER_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_SDL3_RENDERER_BINDING" IMGUI_BUILD_SDL3_RENDERER_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_SDLGPU3_BINDING" IMGUI_BUILD_SDLGPU3_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_VULKAN_BINDING" IMGUI_BUILD_VULKAN_BINDING)
|
||||
(lib.cmakeBool "IMGUI_BUILD_WIN32_BINDING" IMGUI_BUILD_WIN32_BINDING)
|
||||
(lib.cmakeBool "IMGUI_FREETYPE" IMGUI_FREETYPE)
|
||||
@ -120,7 +139,9 @@ stdenv.mkDerivation rec {
|
||||
meta = {
|
||||
# These flags haven't been tested:
|
||||
broken =
|
||||
IMGUI_FREETYPE
|
||||
IMGUI_BUILD_SDL2_BINDING # Option removed from Vcpkg' CMakeLists
|
||||
|| IMGUI_BUILD_SDL2_RENDERER_BINDING
|
||||
|| IMGUI_FREETYPE
|
||||
|| IMGUI_FREETYPE_LUNASVG
|
||||
|| IMGUI_BUILD_DX9_BINDING
|
||||
|| IMGUI_BUILD_DX10_BINDING
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user