aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/nextpnr-imgui.patch
blob: 0d9d316d15a78e14984cd71cf114352bcd9e0880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Uptream-status: https://github.com/YosysHQ/nextpnr/pull/1480

diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt
index ff5d9208..c554cc96 100644
--- a/gui/CMakeLists.txt
+++ b/gui/CMakeLists.txt
@@ -46,12 +46,42 @@ target_include_directories(nextpnr-${target}-gui PUBLIC
     ${CMAKE_CURRENT_SOURCE_DIR}
 )
 
+# Detect whether imgui/qtimgui packages are available from the system.
+find_path(IMGUI_INCLUDE_DIR NAMES imgui.h PATH_SUFFIXES imgui)
+find_path(QTIMGUI_INCLUDE_DIR NAMES QtImGui.h PATH_SUFFIXES qtimgui)
+find_library(IMGUI_LIB NAMES imgui)
+find_library(QTIMGUI_LIB NAMES qt_imgui_widgets)
+if (IMGUI_INCLUDE_DIR AND IMGUI_LIB)
+    message("Using system imgui library:
+    IMGUI_INCLUDE_DIR=${IMGUI_INCLUDE_DIR}
+    IMGUI_LIB=${IMGUI_LIB}")
+else()
+    message("Using bundled imgui library")
+    set(IMGUI_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/3rdparty/imgui)
+    set(IMGUI_SOURCES
+        ../3rdparty/imgui/imgui_widgets.cpp
+        ../3rdparty/imgui/imgui_draw.cpp
+        ../3rdparty/imgui/imgui.cpp
+        ../3rdparty/imgui/imgui_demo.cpp)
+endif()
+if (QTIMGUI_INCLUDE_DIR AND QTIMGUI_LIB)
+    message("Using system qtimgui library:
+    QTIMGUI_INCLUDE_DIR=${QTIMGUI_INCLUDE_DIR}
+    QTIMGUI_LIB=${QTIMGUI_LIB}")
+else()
+    message("Using bundled qtimgui library")
+    set(QTIMGUI_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/3rdparty/qtimgui)
+    set(QTIMGUI_SOURCES
+        ../3rdparty/qtimgui/ImGuiRenderer.cpp
+        ../3rdparty/qtimgui/QtImGui.cpp)
+endif()
+
 target_include_directories(nextpnr-${target}-gui PRIVATE
     ${CMAKE_SOURCE_DIR}/frontend
     ${CMAKE_SOURCE_DIR}/json
     ${CMAKE_SOURCE_DIR}/3rdparty/QtPropertyBrowser/src
-    ${CMAKE_SOURCE_DIR}/3rdparty/imgui
-    ${CMAKE_SOURCE_DIR}/3rdparty/qtimgui
+    ${IMGUI_INCLUDE_DIR}
+    ${QTIMGUI_INCLUDE_DIR}
 )
 
 target_link_libraries(nextpnr-${target}-gui PUBLIC
@@ -77,14 +107,17 @@ if (BUILD_PYTHON)
         ../3rdparty/python-console/ParseMessage.cpp
         ../3rdparty/python-console/modified/pyredirector.cc
         ../3rdparty/python-console/modified/pyinterpreter.cc
-        ../3rdparty/imgui/imgui_widgets.cpp
-        ../3rdparty/imgui/imgui_draw.cpp
-        ../3rdparty/imgui/imgui.cpp
-        ../3rdparty/imgui/imgui_demo.cpp
-        ../3rdparty/qtimgui/ImGuiRenderer.cpp
-        ../3rdparty/qtimgui/QtImGui.cpp
+        ${IMGUI_SOURCES}
+        ${QTIMGUI_SOURCES}
     )
 
+    if (IMGUI_LIB)
+        target_link_libraries(nextpnr-${target}-gui PRIVATE ${IMGUI_LIB})
+    endif()
+    if (QTIMGUI_LIB)
+        target_link_libraries(nextpnr-${target}-gui PRIVATE ${QTIMGUI_LIB})
+    endif()
+
     target_include_directories(nextpnr-${target}-gui PRIVATE
         ../3rdparty/python-console
         ../3rdparty/python-console/modified