1212set (MODULE GPUTrackingDisplay)
1313
1414if (ALIGPU_BUILD_TYPE STREQUAL "O2" )
15- find_package (GLEW )
16- set_package_properties (GLEW PROPERTIES TYPE OPTIONAL )
1715 find_package (X11 )
1816 set_package_properties (X11 PROPERTIES TYPE OPTIONAL )
1917 find_package (GLUT )
@@ -28,6 +26,7 @@ if(ALIGPU_BUILD_TYPE STREQUAL "O2")
2826 set_package_properties (O2GPUWayland PROPERTIES TYPE OPTIONAL )
2927 find_package (Qt6 COMPONENTS Widgets )
3028 set_package_properties (Qt6 PROPERTIES TYPE OPTIONAL )
29+ set (GPUCA_CONFIG_GL3W 1)
3130endif ()
3231
3332# glslc compiles the shaders to SPIR-V for both backends
@@ -37,12 +36,16 @@ else()
3736 find_program (GPUCA_GLSLC glslc )
3837endif ()
3938
40- # OpenGL backend: OpenGL 4.6 headers (bundled gl3w, or GLEW) for SPIR-V shaders, and glslc
41- if (GPUCA_GLSLC)
39+ # OpenGL backend: OpenGL library, OpenGL 4.6 headers (gl3w: from DebugGUI in O2, bundled in standalone; or GLEW) for SPIR-V shaders, and glslc
40+ if (GPUCA_GLSLC AND TARGET OpenGL::GL )
4241 include (CheckSymbolExists )
43- if (ALIGPU_BUILD_TYPE STREQUAL "O2" OR GPUCA_CONFIG_GL3W)
44- set (CMAKE_REQUIRED_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR } /3rdparty)
45- check_symbol_exists (GL_VERSION_4_6 "GL/glcorearb.h" GPUCA_GL3W_HAS_GL_4_6 ) # Bundled header
42+ if (GPUCA_CONFIG_GL3W)
43+ if (ALIGPU_BUILD_TYPE STREQUAL "O2" )
44+ get_target_property (CMAKE_REQUIRED_INCLUDES AliceO2::DebugGUI INTERFACE_INCLUDE_DIRECTORIES )
45+ else ()
46+ set (CMAKE_REQUIRED_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR } /3rdparty)
47+ endif ()
48+ check_symbol_exists (GL_VERSION_4_6 "GL/glcorearb.h" GPUCA_GL3W_HAS_GL_4_6 )
4649 if (GPUCA_GL3W_HAS_GL_4_6)
4750 set (GPUCA_EVENT_DISPLAY_OPENGL ON )
4851 endif ()
@@ -57,9 +60,13 @@ if(GPUCA_GLSLC)
5760endif ()
5861if (NOT GPUCA_EVENT_DISPLAY_OPENGL)
5962 if (ALIGPU_BUILD_TYPE STREQUAL "Standalone" )
60- message (FATAL_ERROR "OpenGL event display needs OpenGL 4.6 headers and glslc" )
63+ message (FATAL_ERROR "OpenGL event display needs OpenGL, OpenGL 4.6 headers and glslc" )
6164 endif ()
62- message (STATUS "OpenGL event display backend disabled: needs OpenGL 4.6 headers and glslc" )
65+ message (STATUS "OpenGL event display backend disabled: needs OpenGL, OpenGL 4.6 headers and glslc" )
66+ set (GLUT_FOUND 0)
67+ set (OPENGL_GLU_FOUND 0)
68+ set (GLEW_FOUND 0)
69+ set (X11_FOUND 0)
6370endif ()
6471
6572if (Vulkan_FOUND)
@@ -86,18 +93,15 @@ set(SRCS ../utils/qsem.cxx
8693 GPUDisplay.cxx
8794 helpers/GPUDisplayMagneticField.cxx
8895 frontend/GPUDisplayFrontend.cxx
89- frontend/GPUDisplayFrontendGlfw.cxx
9096 frontend/GPUDisplayFrontendNone.cxx
9197 backend/GPUDisplayBackend.cxx
92- backend/GPUDisplayBackendNone.cxx
93- backend/GPUDisplayBackendOpenGL.cxx)
98+ backend/GPUDisplayBackendNone.cxx)
9499
95100set (SRCS_NO_H helpers/GPUDisplayLoader.cxx
96101 render/GPUDisplayDraw.cxx
97102 render/GPUDisplayImportEvent.cxx
98103 helpers/GPUDisplayHelpers.cxx
99104 helpers/GPUDisplayAnimation.cxx
100- helpers/GPUDisplayBackendOpenGLMagneticField.cxx
101105 helpers/GPUDisplayQuaternion.cxx
102106 helpers/GPUDisplayInterpolation.cxx
103107 helpers/GPUDisplayROOT.cxx
@@ -107,35 +111,41 @@ set(HDRS_INSTALL helpers/GPUDisplayMagneticFieldConstants.h)
107111
108112if (GPUCA_EVENT_DISPLAY_VULKAN)
109113 set (SRCS ${SRCS} backend/GPUDisplayBackendVulkan.cxx)
110- if (GPUCA_EVENT_DISPLAY_WAYLAND)
111- set (WAYLAND_PROTOCOL_HEADERS)
112- set (WAYLAND_PROTOCOL_SOURCES)
113- foreach (xml ${O2GPUWayland_PROTOCOLS} ) # List and existence check in dependencies/FindO2GPUWayland.cmake
114- get_filename_component (name ${xml} NAME_WE )
115- string (REGEX REPLACE "(-unstable)?-v[0-9]+$" "" name ${name} )
116- set (header ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/${name} -client-protocol.h)
117- set (source ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/${name} -protocol.c)
118- add_custom_command (
119- OUTPUT ${header}
120- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/
121- COMMAND ${O2GPUWayland_SCANNER} client-header ${O2GPUWayland_PROTOCOLS_DIR} /${xml} ${header}
122- MAIN_DEPENDENCY ${O2GPUWayland_PROTOCOLS_DIR} /${xml}
123- COMMENT "Preparing Wayland ${name} -client-protocol.h" )
124- add_custom_command (
125- OUTPUT ${source}
126- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/
127- COMMAND ${O2GPUWayland_SCANNER} private -code ${O2GPUWayland_PROTOCOLS_DIR} /${xml} ${source}
128- MAIN_DEPENDENCY ${O2GPUWayland_PROTOCOLS_DIR} /${xml}
129- COMMENT "Preparing Wayland ${name} -protocol.c" )
130- list (APPEND WAYLAND_PROTOCOL_HEADERS ${header} )
131- list (APPEND WAYLAND_PROTOCOL_SOURCES ${source} )
132- endforeach ()
133-
134- set_property (SOURCE frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES} APPEND PROPERTY OBJECT_DEPENDS ${WAYLAND_PROTOCOL_HEADERS} )
135- set_property (SOURCE frontend/GPUDisplayFrontendWayland.cxx APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/)
136-
137- set (SRCS_NO_H ${SRCS_NO_H} frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES} )
138- endif ()
114+ endif ()
115+
116+ if (GPUCA_EVENT_DISPLAY_OPENGL)
117+ set (SRCS ${SRCS} backend/GPUDisplayBackendOpenGL.cxx)
118+ set (SRCS_NO_H ${SRCS_NO_H} helpers/GPUDisplayBackendOpenGLMagneticField.cxx)
119+ endif ()
120+
121+ if (GPUCA_EVENT_DISPLAY_WAYLAND)
122+ set (WAYLAND_PROTOCOL_HEADERS)
123+ set (WAYLAND_PROTOCOL_SOURCES)
124+ foreach (xml ${O2GPUWayland_PROTOCOLS} ) # List and existence check in dependencies/FindO2GPUWayland.cmake
125+ get_filename_component (name ${xml} NAME_WE )
126+ string (REGEX REPLACE "(-unstable)?-v[0-9]+$" "" name ${name} )
127+ set (header ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/${name} -client-protocol.h)
128+ set (source ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/${name} -protocol.c)
129+ add_custom_command (
130+ OUTPUT ${header}
131+ COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/
132+ COMMAND ${O2GPUWayland_SCANNER} client-header ${O2GPUWayland_PROTOCOLS_DIR} /${xml} ${header}
133+ MAIN_DEPENDENCY ${O2GPUWayland_PROTOCOLS_DIR} /${xml}
134+ COMMENT "Preparing Wayland ${name} -client-protocol.h" )
135+ add_custom_command (
136+ OUTPUT ${source}
137+ COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/
138+ COMMAND ${O2GPUWayland_SCANNER} private -code ${O2GPUWayland_PROTOCOLS_DIR} /${xml} ${source}
139+ MAIN_DEPENDENCY ${O2GPUWayland_PROTOCOLS_DIR} /${xml}
140+ COMMENT "Preparing Wayland ${name} -protocol.c" )
141+ list (APPEND WAYLAND_PROTOCOL_HEADERS ${header} )
142+ list (APPEND WAYLAND_PROTOCOL_SOURCES ${source} )
143+ endforeach ()
144+
145+ set_property (SOURCE frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES} APPEND PROPERTY OBJECT_DEPENDS ${WAYLAND_PROTOCOL_HEADERS} )
146+ set_property (SOURCE frontend/GPUDisplayFrontendWayland.cxx APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR } /xdg-gen/)
147+
148+ set (SRCS_NO_H ${SRCS_NO_H} frontend/GPUDisplayFrontendWayland.cxx ${WAYLAND_PROTOCOL_SOURCES} )
139149endif ()
140150
141151if (X11_FOUND)
@@ -146,6 +156,10 @@ if(GLUT_FOUND)
146156 set (SRCS ${SRCS} frontend/GPUDisplayFrontendGlut.cxx)
147157endif ()
148158
159+ if (GLFW_FOUND)
160+ set (SRCS ${SRCS} frontend/GPUDisplayFrontendGlfw.cxx)
161+ endif ()
162+
149163if (GPUCA_EVENT_DISPLAY_QT)
150164 set (CMAKE_AUTOMOC ON )
151165 set (CMAKE_AUTORCC ON )
@@ -160,12 +174,10 @@ string(REPLACE ".cxx" ".h" HDRS "${SRCS}")
160174if (ALIGPU_BUILD_TYPE STREQUAL "O2" )
161175 o2_add_library (${MODULE}
162176 TARGETVARNAME targetName
163- PUBLIC_LINK_LIBRARIES O2::GPUTracking AliceO2::DebugGUI
177+ PUBLIC_LINK_LIBRARIES O2::GPUTracking
164178 PUBLIC_INCLUDE_DIRECTORIES .
165179 SOURCES ${SRCS} ${SRCS_NO_H} )
166180
167- target_compile_definitions (${targetName} PRIVATE GPUCA_BUILD_EVENT_DISPLAY_GLFW GPUCA_DISPLAY_GL3W GPUCA_DISPLAY_OPENGL_CORE )
168-
169181 o2_add_executable (field-uniform-exporter
170182 TARGETVARNAME exporterName
171183 COMPONENT_NAME gpu
@@ -192,7 +204,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/setinclude.sh PERMISSIONS OWNER_READ O
192204target_compile_definitions (${targetName} PRIVATE $<TARGET_PROPERTY :O2 ::GPUTracking ,COMPILE_DEFINITIONS >)
193205
194206message (STATUS "Building GPU Event Display (OpenGL ${GPUCA_EVENT_DISPLAY_OPENGL} , Vulkan ${GPUCA_EVENT_DISPLAY_VULKAN} ${Vulkan_VERSION} , Wayland ${GPUCA_EVENT_DISPLAY_WAYLAND} , Freetype ${GPUCA_EVENT_DISPLAY_FREETYPE} , Fontconfig ${Fontconfig_FOUND} , Qt ${GPUCA_EVENT_DISPLAY_QT} )" )
195- target_link_libraries (${targetName} PUBLIC ${GLFW_LIBRARIES} OpenGL::GL )
196207target_include_directories (${targetName} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } )
197208
198209if (X11_FOUND)
@@ -205,13 +216,23 @@ if(GLUT_FOUND)
205216 target_compile_definitions (${targetName} PRIVATE GPUCA_BUILD_EVENT_DISPLAY_GLUT )
206217endif ()
207218
208- if (ALIGPU_BUILD_TYPE STREQUAL "Standalone" )
209- if (GLFW_FOUND)
210- target_link_libraries (${targetName} PRIVATE glfw )
211- target_compile_definitions (${targetName} PRIVATE GPUCA_BUILD_EVENT_DISPLAY_GLFW )
212- endif ()
219+ if (GLFW_FOUND)
220+ target_link_libraries (${targetName} PRIVATE ${GLFW_LIBRARIES} glfw )
221+ target_compile_definitions (${targetName} PRIVATE GPUCA_BUILD_EVENT_DISPLAY_GLFW )
222+ endif ()
223+
224+ if (OPENGL_GLU_FOUND)
225+ target_link_libraries (${targetName} PRIVATE OpenGL::GLU )
226+ endif ()
227+
228+ if (GPUCA_CONFIG_GL3W)
229+ target_compile_definitions (${targetName} PRIVATE GPUCA_DISPLAY_GL3W GPUCA_DISPLAY_OPENGL_CORE )
230+ endif ()
231+
232+ if (ALIGPU_BUILD_TYPE STREQUAL "O2" )
233+ target_link_libraries (${targetName} PRIVATE AliceO2::DebugGUI )
234+ elseif (ALIGPU_BUILD_TYPE STREQUAL "Standalone" )
213235 if (GPUCA_CONFIG_GL3W)
214- target_compile_definitions (${targetName} PRIVATE GPUCA_DISPLAY_GL3W )
215236 target_sources (${targetName} PRIVATE ${GPUTRACKING_DIR} /display/3rdparty/gl3w.c )
216237 else ()
217238 target_link_libraries (${targetName} PRIVATE ${GLEW_LIBRARIES} )
@@ -220,12 +241,9 @@ if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
220241 target_include_directories (${targetName} SYSTEM PUBLIC ${GPUTRACKING_DIR} /display/3rdparty )
221242endif ()
222243
223- if (OPENGL_GLU_FOUND)
224- target_link_libraries (${targetName} PRIVATE OpenGL::GLU )
225- endif ()
226-
227244if (GPUCA_EVENT_DISPLAY_OPENGL)
228245 target_compile_definitions (${targetName} PRIVATE GPUCA_BUILD_EVENT_DISPLAY_OPENGL )
246+ target_link_libraries (${targetName} PRIVATE OpenGL::GL )
229247endif ()
230248
231249if (GPUCA_EVENT_DISPLAY_VULKAN OR GPUCA_EVENT_DISPLAY_OPENGL)
0 commit comments