push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -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

View File

@@ -0,0 +1,11 @@
project(ImguiDemo LANGUAGES CXX)
cmake_minimum_required(VERSION 3.20)
add_executable(demo ./main.cpp)
find_package(imgui REQUIRED)
find_package(glfw3 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(demo PRIVATE imgui glfw OpenGL::GL)
install(TARGETS demo RUNTIME DESTINATION bin)

View File

@@ -0,0 +1,29 @@
{
lib,
stdenv,
cmake,
imgui,
}:
stdenv.mkDerivation {
pname = "${imgui.pname}-demo";
inherit (imgui) version;
src = "${imgui.src}/examples/example_glfw_opengl3";
postPatch = ''
rm Makefile*
cp ${./CMakeLists.txt} CMakeLists.txt
'';
nativeBuildInputs = [ cmake ];
buildInputs = [ (imgui.override { IMGUI_BUILD_GLFW_BINDING = true; }) ];
meta = with lib; {
description = "Standalone ImPlot Demos";
homepage = "https://github.com/ocornut/imgui/tree/master/examples/example_glfw_opengl3";
license = licenses.mit;
maintainers = with maintainers; [ SomeoneSerge ];
mainProgram = "demo";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,161 @@
{
stdenv,
lib,
applyPatches,
callPackage,
cmake,
fetchFromGitHub,
fetchpatch,
glfw,
libGL,
SDL2,
sdl3,
vcpkg,
vulkan-headers,
vulkan-loader,
imgui,
# NOTE: Not coming from vcpkg
IMGUI_LINK_GLVND ?
!stdenv.hostPlatform.isWindows && (IMGUI_BUILD_OPENGL2_BINDING || IMGUI_BUILD_OPENGL3_BINDING),
# The intent is to mirror vcpkg's flags[^1],
# but we only actually support Linux and glfw3 until someone contributes the rest
# [^1]: https://github.com/microsoft/vcpkg/blob/095ee06e7f60dceef7d713e3f8b1c2eb10d650d7/ports/imgui/CMakeLists.txt#L33-L108
IMGUI_BUILD_ALLEGRO5_BINDING ? false,
IMGUI_BUILD_ANDROID_BINDING ? stdenv.hostPlatform.isAndroid,
IMGUI_BUILD_DX9_BINDING ? false,
IMGUI_BUILD_DX10_BINDING ? false,
IMGUI_BUILD_DX11_BINDING ? false,
IMGUI_BUILD_DX12_BINDING ? false,
IMGUI_BUILD_GLFW_BINDING ? !stdenv.hostPlatform.isDarwin,
IMGUI_BUILD_GLUT_BINDING ? false,
IMGUI_BUILD_METAL_BINDING ? stdenv.hostPlatform.isDarwin,
IMGUI_BUILD_OPENGL2_BINDING ? false,
IMGUI_BUILD_OPENGL3_BINDING ?
IMGUI_BUILD_SDL3_BINDING || IMGUI_BUILD_GLFW_BINDING || IMGUI_BUILD_GLUT_BINDING,
IMGUI_BUILD_OSX_BINDING ? stdenv.hostPlatform.isDarwin,
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,
}:
let
vcpkgRevs.postSdl3 = lib.versionAtLeast vcpkg.version "2025.03.19";
vcpkgRevs.others = !vcpkgRevs.postSdl3;
vcpkgSource = applyPatches {
inherit (vcpkg) src;
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
stdenv.mkDerivation rec {
pname = "imgui";
version = "1.91.4";
outputs = [
# Note: no "dev" because vcpkg installs include/ and imgui-config.cmake
# into different prefixes but expects the merged layout at import time
"out"
"lib"
];
src = fetchFromGitHub {
owner = "ocornut";
repo = "imgui";
tag = "v${version}";
hash = "sha256-6j4keBOAzbBDsV0+R4zTNlsltxz2dJDGI43UIrHXDNM=";
};
cmakeRules = "${vcpkgSource}/ports/imgui";
postPatch = ''
cp "$cmakeRules"/{CMakeLists.txt,*.cmake.in} ./
'';
nativeBuildInputs = [ cmake ];
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
vulkan-loader
];
cmakeFlags = [
(lib.cmakeBool "IMGUI_BUILD_GLFW_BINDING" IMGUI_BUILD_GLFW_BINDING)
(lib.cmakeBool "IMGUI_BUILD_ALLEGRO5_BINDING" IMGUI_BUILD_ALLEGRO5_BINDING)
(lib.cmakeBool "IMGUI_BUILD_ANDROID_BINDING" IMGUI_BUILD_ANDROID_BINDING)
(lib.cmakeBool "IMGUI_BUILD_DX9_BINDING" IMGUI_BUILD_DX9_BINDING)
(lib.cmakeBool "IMGUI_BUILD_DX10_BINDING" IMGUI_BUILD_DX10_BINDING)
(lib.cmakeBool "IMGUI_BUILD_DX11_BINDING" IMGUI_BUILD_DX11_BINDING)
(lib.cmakeBool "IMGUI_BUILD_DX12_BINDING" IMGUI_BUILD_DX12_BINDING)
(lib.cmakeBool "IMGUI_BUILD_GLFW_BINDING" IMGUI_BUILD_GLFW_BINDING)
(lib.cmakeBool "IMGUI_BUILD_GLUT_BINDING" IMGUI_BUILD_GLUT_BINDING)
(lib.cmakeBool "IMGUI_BUILD_METAL_BINDING" IMGUI_BUILD_METAL_BINDING)
(lib.cmakeBool "IMGUI_BUILD_OPENGL2_BINDING" IMGUI_BUILD_OPENGL2_BINDING)
(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)
(lib.cmakeBool "IMGUI_FREETYPE_LUNASVG" IMGUI_FREETYPE_LUNASVG)
(lib.cmakeBool "IMGUI_USE_WCHAR32" IMGUI_USE_WCHAR32)
];
passthru = {
tests = {
demo = callPackage ./demo { };
};
};
meta = {
# These flags haven't been tested:
broken =
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
|| IMGUI_BUILD_DX11_BINDING
|| IMGUI_BUILD_DX12_BINDING
|| IMGUI_BUILD_WIN32_BINDING
|| IMGUI_BUILD_ALLEGRO5_BINDING
|| IMGUI_BUILD_ANDROID_BINDING;
description = "Bloat-free Graphical User interface for C++ with minimal dependencies";
homepage = "https://github.com/ocornut/imgui";
license = lib.licenses.mit; # vcpkg licensed as MIT too
maintainers = with lib.maintainers; [
SomeoneSerge
];
platforms = lib.platforms.all;
};
}