* 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.
		
	
			
		
			
				
	
	
		
			170 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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}
 |