gnu: openboardview: Unbundle imgui.
* gnu/packages/patches/openboardview-use-system-imgui.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/electronics.scm (openboardview)[source]: Delete "imgui" subdirectory from snippet and apply patch. [inputs]{imgui}: New input.master
parent
7f981c53df
commit
ad85ca0977
|
@ -1557,6 +1557,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/onnx-use-system-googletest.patch \
|
%D%/packages/patches/onnx-use-system-googletest.patch \
|
||||||
%D%/packages/patches/onnx-shared-libraries.patch \
|
%D%/packages/patches/onnx-shared-libraries.patch \
|
||||||
%D%/packages/patches/onnx-skip-model-downloads.patch \
|
%D%/packages/patches/onnx-skip-model-downloads.patch \
|
||||||
|
%D%/packages/patches/openboardview-use-system-imgui.patch \
|
||||||
%D%/packages/patches/openboardview-use-system-utf8.patch \
|
%D%/packages/patches/openboardview-use-system-utf8.patch \
|
||||||
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
|
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
|
||||||
%D%/packages/patches/openfoam-4.1-cleanup.patch \
|
%D%/packages/patches/openfoam-4.1-cleanup.patch \
|
||||||
|
|
|
@ -56,7 +56,8 @@
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages qt)
|
||||||
#:use-module (gnu packages sdl)
|
#:use-module (gnu packages sdl)
|
||||||
#:use-module (gnu packages sqlite)
|
#:use-module (gnu packages sqlite)
|
||||||
#:use-module (gnu packages stb))
|
#:use-module (gnu packages stb)
|
||||||
|
#:use-module (gnu packages toolkits))
|
||||||
|
|
||||||
(define-public libserialport
|
(define-public libserialport
|
||||||
(package
|
(package
|
||||||
|
@ -264,14 +265,14 @@ supported devices, as well as input/output file format support.")
|
||||||
(guix build utils)))
|
(guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
'(with-directory-excursion "src"
|
'(with-directory-excursion "src"
|
||||||
;; TODO: Unbundle ImGui.
|
(define keep (list "." ".." "openboardview"))
|
||||||
(define keep (list "." ".." "imgui" "openboardview"))
|
|
||||||
(for-each (lambda (f)
|
(for-each (lambda (f)
|
||||||
(when (eq? 'directory (stat:type (lstat f)))
|
(when (eq? 'directory (stat:type (lstat f)))
|
||||||
(delete-file-recursively f)))
|
(delete-file-recursively f)))
|
||||||
(scandir "." (negate (cut member <> keep))))))
|
(scandir "." (negate (cut member <> keep))))))
|
||||||
(patches
|
(patches
|
||||||
(search-patches "openboardview-use-system-utf8.patch"))
|
(search-patches "openboardview-use-system-imgui.patch"
|
||||||
|
"openboardview-use-system-utf8.patch"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1n2yfi8wpky0y231kq2zdgwn7f7kff8m53m904hxi5ppmwhx1d6q"))))
|
"1n2yfi8wpky0y231kq2zdgwn7f7kff8m53m904hxi5ppmwhx1d6q"))))
|
||||||
|
@ -327,6 +328,7 @@ supported devices, as well as input/output file format support.")
|
||||||
(inputs
|
(inputs
|
||||||
(list fontconfig
|
(list fontconfig
|
||||||
gtk+
|
gtk+
|
||||||
|
imgui
|
||||||
sdl2
|
sdl2
|
||||||
sqlite
|
sqlite
|
||||||
zlib))
|
zlib))
|
||||||
|
|
|
@ -0,0 +1,170 @@
|
||||||
|
Patch submitted upstream: https://github.com/OpenBoardView/OpenBoardView/pull/233
|
||||||
|
|
||||||
|
diff --git a/CMakeModules/FindImGui.cmake b/CMakeModules/FindImGui.cmake
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..4d1fa42
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/CMakeModules/FindImGui.cmake
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+# Copyright (C) 2018, 2022 Maxim Cournoyer
|
||||||
|
+# Redistribution and use of this file is allowed according to the terms of the MIT license.
|
||||||
|
+# For details see the LICENSE file distributed with OpenBoardView.
|
||||||
|
+# Note:
|
||||||
|
+# Searching headers and libraries is very simple and is NOT as powerful as scripts
|
||||||
|
+# distributed with CMake, because LuaDist defines directories to search for.
|
||||||
|
+# Everyone is encouraged to contact the author with improvements. Maybe this file
|
||||||
|
+# becomes part of CMake distribution sometimes.
|
||||||
|
+
|
||||||
|
+# - Find ImGui
|
||||||
|
+# Find the native imgui headers and libraries.
|
||||||
|
+#
|
||||||
|
+# IMGUI_INCLUDE_DIRS - where to find imgui/imgui.h, etc.
|
||||||
|
+# IMGUI_LIBRARIES - List of libraries when using imgui.
|
||||||
|
+# IMGUI_FOUND - True if imgui is found.
|
||||||
|
+
|
||||||
|
+# Look for the header file.
|
||||||
|
+FIND_PATH(IMGUI_INCLUDE_DIR NAMES imgui.h PATH_SUFFIXES imgui)
|
||||||
|
+
|
||||||
|
+# Look for the library.
|
||||||
|
+FIND_LIBRARY(IMGUI_LIBRARY NAMES ImGui imgui)
|
||||||
|
+
|
||||||
|
+# Handle the QUIETLY and REQUIRED arguments and set IMGUI_FOUND to TRUE if all listed variables are TRUE.
|
||||||
|
+INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ImGui DEFAULT_MSG IMGUI_LIBRARY IMGUI_INCLUDE_DIR)
|
||||||
|
+
|
||||||
|
+# Copy the results to the output variables.
|
||||||
|
+IF(IMGUI_FOUND)
|
||||||
|
+ SET(IMGUI_LIBRARIES ${IMGUI_LIBRARY})
|
||||||
|
+ SET(IMGUI_INCLUDE_DIRS ${IMGUI_INCLUDE_DIR})
|
||||||
|
+ELSE()
|
||||||
|
+ SET(IMGUI_LIBRARIES)
|
||||||
|
+ SET(IMGUI_INCLUDE_DIRS)
|
||||||
|
+ENDIF()
|
||||||
|
+
|
||||||
|
+MARK_AS_ADVANCED(IMGUI_INCLUDE_DIRS IMGUI_LIBRARIES)
|
||||||
|
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||||
|
index 301f933..24bf263 100644
|
||||||
|
--- a/src/CMakeLists.txt
|
||||||
|
+++ b/src/CMakeLists.txt
|
||||||
|
@@ -76,28 +76,30 @@ endif()
|
||||||
|
# note: in the future there may be integrated CMake support into imgui
|
||||||
|
# see: https://github.com/ocornut/imgui/pull/1713
|
||||||
|
# for now do it manually, after glad and SDL2 because we use the includes for the sdl_opengl examples
|
||||||
|
-execute_process(
|
||||||
|
+find_package(ImGui) # search ImGui from system
|
||||||
|
+if(NOT IMGUI_FOUND) # else fallback to bundled copy
|
||||||
|
+ execute_process(
|
||||||
|
COMMAND git submodule update --init src/imgui
|
||||||
|
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
|
-)
|
||||||
|
-add_definitions("-DImDrawIdx=unsigned int") # short is not enough for us
|
||||||
|
-add_definitions("-DIMGUI_IMPL_OPENGL_LOADER_GLAD") # We use glad
|
||||||
|
-# Configure GL3 renderer to be GLES2 compatible if GLES2 is enabled
|
||||||
|
-if(ENABLE_GLES2)
|
||||||
|
- add_definitions("-DIMGUI_IMPL_OPENGL_ES2")
|
||||||
|
-endif()
|
||||||
|
-
|
||||||
|
-# workaround for OpenGL include for OpenGL2, need to be glad rather than gl itself
|
||||||
|
-file(READ "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" input)
|
||||||
|
-string(REPLACE "OpenGL/gl.h" "glad/glad.h" input "${input}")
|
||||||
|
-string(REPLACE "GL/gl.h" "glad/glad.h" input "${input}")
|
||||||
|
-file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" "${input}")
|
||||||
|
-
|
||||||
|
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/imgui
|
||||||
|
- ${GLAD_INCLUDE_DIRS}
|
||||||
|
-)
|
||||||
|
-
|
||||||
|
-set(SOURCES
|
||||||
|
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||||
|
+ add_definitions("-DImDrawIdx=unsigned int") # short is not enough for us
|
||||||
|
+ add_definitions("-DIMGUI_IMPL_OPENGL_LOADER_GLAD") # We use glad
|
||||||
|
+ # Configure GL3 renderer to be GLES2 compatible if GLES2 is enabled
|
||||||
|
+ if(ENABLE_GLES2)
|
||||||
|
+ add_definitions("-DIMGUI_IMPL_OPENGL_ES2")
|
||||||
|
+ endif()
|
||||||
|
+
|
||||||
|
+ # workaround for OpenGL include for OpenGL2, need to be glad rather than gl itself
|
||||||
|
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" input)
|
||||||
|
+ string(REPLACE "OpenGL/gl.h" "glad/glad.h" input "${input}")
|
||||||
|
+ string(REPLACE "GL/gl.h" "glad/glad.h" input "${input}")
|
||||||
|
+ file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/imgui/backends/imgui_impl_opengl2.cpp" "${input}")
|
||||||
|
+
|
||||||
|
+ set(IMGUI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/imgui
|
||||||
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/imgui/examples)
|
||||||
|
+
|
||||||
|
+ set(IMGUI_LIBRARIES imgui)
|
||||||
|
+
|
||||||
|
+ set(SOURCES
|
||||||
|
imgui/imgui.cpp
|
||||||
|
imgui/imgui_draw.cpp
|
||||||
|
imgui/imgui_tables.cpp
|
||||||
|
@@ -106,33 +108,35 @@ set(SOURCES
|
||||||
|
imgui/backends/imgui_impl_sdl.cpp)
|
||||||
|
|
||||||
|
|
||||||
|
-if(ENABLE_GL1)
|
||||||
|
+ if(ENABLE_GL1)
|
||||||
|
LIST(APPEND SOURCES
|
||||||
|
- imgui/backends/imgui_impl_opengl2.cpp
|
||||||
|
- )
|
||||||
|
-endif()
|
||||||
|
-if(ENABLE_GL3)
|
||||||
|
+ imgui/backends/imgui_impl_opengl2.cpp
|
||||||
|
+ )
|
||||||
|
+ endif()
|
||||||
|
+ if(ENABLE_GL3)
|
||||||
|
LIST(APPEND SOURCES
|
||||||
|
- imgui/backends/imgui_impl_opengl3.cpp
|
||||||
|
- )
|
||||||
|
-endif()
|
||||||
|
+ imgui/backends/imgui_impl_opengl3.cpp
|
||||||
|
+ )
|
||||||
|
+ endif()
|
||||||
|
|
||||||
|
-add_library(imgui STATIC ${SOURCES})
|
||||||
|
-target_link_libraries(imgui
|
||||||
|
+ add_library(imgui STATIC ${SOURCES})
|
||||||
|
+ target_link_libraries(imgui
|
||||||
|
${GLAD_LIBRARIES}
|
||||||
|
-)
|
||||||
|
-if(MINGW)
|
||||||
|
-target_link_libraries(imgui
|
||||||
|
- SDL2::SDL2-static
|
||||||
|
-)
|
||||||
|
-else()
|
||||||
|
-target_link_libraries(imgui
|
||||||
|
- SDL2::SDL2
|
||||||
|
-)
|
||||||
|
+ )
|
||||||
|
+ if(MINGW)
|
||||||
|
+ target_link_libraries(imgui
|
||||||
|
+ SDL2::SDL2-static
|
||||||
|
+ )
|
||||||
|
+ else()
|
||||||
|
+ target_link_libraries(imgui
|
||||||
|
+ SDL2::SDL2
|
||||||
|
+ )
|
||||||
|
+ endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-set(IMGUI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/imgui ${CMAKE_CURRENT_SOURCE_DIR}/imgui/examples)
|
||||||
|
-
|
||||||
|
+include_directories(
|
||||||
|
+ ${IMGUI_INCLUDE_DIRS}
|
||||||
|
+ ${GLAD_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
#install(TARGETS imgui DESTINATION ${INSTALL_ARCHIVE_DIR}) # No need to install a static lib
|
||||||
|
|
||||||
|
diff --git a/src/openboardview/CMakeLists.txt b/src/openboardview/CMakeLists.txt
|
||||||
|
index d049ef9..bb56f70 100644
|
||||||
|
--- a/src/openboardview/CMakeLists.txt
|
||||||
|
+++ b/src/openboardview/CMakeLists.txt
|
||||||
|
@@ -129,7 +129,7 @@ elseif(APPLE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME_LOWER}
|
||||||
|
- imgui
|
||||||
|
+ ${IMGUI_LIBRARIES}
|
||||||
|
SQLite::SQLite3
|
||||||
|
${GLAD_LIBRARIES}
|
||||||
|
${COCOA_LIBRARY}
|
Reference in New Issue