@@ -70,6 +70,7 @@ find_package(RDMA)
7070find_package (Occ)
7171find_package (BookkeepingApiCpp)
7272find_package (ZMQ)
73+ find_package (MySQL)
7374
7475# extract include directories from targets
7576get_target_property (InfoLogger_INCLUDE_DIRS AliceO2::InfoLogger INTERFACE_INCLUDE_DIRECTORIES )
@@ -128,8 +129,17 @@ else ()
128129 message (STATUS "ZMQ not found, corresponding features will be disabled." )
129130endif ()
130131
132+ # check MySQL
133+ if (${MYSQL_FOUND} )
134+ message (
135+ STATUS
136+ "MySQL found: ${MYSQL_INCLUDE_DIRS} ${MYSQL_LIBRARIES} " )
137+ else ()
138+ message (STATUS "MySQL not found, corresponding features will be disabled." )
139+ endif ()
140+
131141# add flags to enable optional features in Readout, based on available dependencies
132- add_compile_definitions ($<$<BOOL :${Numa_FOUND} >:WITH_NUMA> $<$<BOOL :${RDMA_FOUND} >:WITH_RDMA> $<$<BOOL :${Configuration_FOUND} >:WITH_CONFIG> $<$<BOOL :${FairMQ_FOUND} >:WITH_FAIRMQ> $<$<BOOL :${Occ_FOUND} >:WITH_OCC> $<$<BOOL :${BookkeepingApiCpp_FOUND} >:WITH_LOGBOOK> $<$<BOOL :${ZMQ_FOUND} >:WITH_ZMQ> $<$<BOOL :${ReadoutCard_FOUND} >:WITH_READOUTCARD> )
142+ add_compile_definitions ($<$<BOOL :${Numa_FOUND} >:WITH_NUMA> $<$<BOOL :${RDMA_FOUND} >:WITH_RDMA> $<$<BOOL :${Configuration_FOUND} >:WITH_CONFIG> $<$<BOOL :${FairMQ_FOUND} >:WITH_FAIRMQ> $<$<BOOL :${Occ_FOUND} >:WITH_OCC> $<$<BOOL :${BookkeepingApiCpp_FOUND} >:WITH_LOGBOOK> $<$<BOOL :${ZMQ_FOUND} >:WITH_ZMQ> $<$<BOOL :${MYSQL_FOUND} >:WITH_DB> $<$< BOOL : ${ ReadoutCard_FOUND} >:WITH_READOUTCARD> )
133143
134144# define include directories
135145set (READOUT_INCLUDE_DIRS
@@ -165,6 +175,10 @@ if(ZMQ_FOUND)
165175 list (APPEND READOUT_INCLUDE_DIRS ${ZMQ_INCLUDE_DIRS} )
166176 list (APPEND READOUT_LINK_LIBRARIES ${ZMQ_LIBRARIES} )
167177endif ()
178+ if (MYSQL_FOUND)
179+ list (APPEND READOUT_INCLUDE_DIRS ${MYSQL_INCLUDE_DIRS} )
180+ list (APPEND READOUT_LINK_LIBRARIES ${MYSQL_LIBRARIES} )
181+ endif ()
168182
169183# some systems don't need an explicit library to have dlopen()
170184if (CMAKE_DL_LIBS )
@@ -225,6 +239,15 @@ add_library(
225239)
226240target_include_directories (objReadoutUtils PRIVATE ${READOUT_INCLUDE_DIRS} )
227241
242+ # internal readout database
243+ if (MYSQL_FOUND)
244+ add_library (
245+ objReadoutDatabase OBJECT
246+ ${SOURCE_DIR} /ReadoutDatabase.cxx
247+ )
248+ target_include_directories (objReadoutDatabase PRIVATE ${READOUT_INCLUDE_DIRS} ${MYSQL_INCLUDE_DIRS} )
249+ endif ()
250+
228251# consumers
229252add_library (
230253 objReadoutConsumers OBJECT
@@ -304,6 +327,7 @@ add_executable(
304327 $<TARGET_OBJECTS:objReadoutAggregator>
305328 $<TARGET_OBJECTS:objReadoutConsumers>
306329 $<TARGET_OBJECTS:objReadoutUtils>
330+ $<$<BOOL :${MYSQL_FOUND} >:$<TARGET_OBJECTS:objReadoutDatabase>>
307331)
308332
309333# a test FMQ device receiver
@@ -398,6 +422,16 @@ add_executable(
398422target_include_directories (o2-readout-monitor PRIVATE ${READOUT_INCLUDE_DIRS} )
399423target_link_libraries (o2-readout-monitor PRIVATE AliceO2::InfoLogger AliceO2::Common ${ZMQ_LIBRARIES} )
400424
425+ # a process to admin readout database
426+ if (MYSQL_FOUND)
427+ add_executable (
428+ o2-readout-admin-db
429+ ${SOURCE_DIR} /readoutAdminDB.cxx
430+ $<TARGET_OBJECTS:objReadoutDatabase>
431+ )
432+ target_include_directories (o2-readout-admin-db PRIVATE ${READOUT_INCLUDE_DIRS} )
433+ endif ()
434+
401435endif ()
402436
403437# a minimal test program to check Monitoring library
@@ -438,6 +472,9 @@ endif()
438472if (BookkeepingApiCpp_FOUND)
439473 list (APPEND executables o2-readout-test -lib-bookkeeping)
440474endif ()
475+ if (MYSQL_FOUND)
476+ list (APPEND executables o2-readout-admin-db)
477+ endif ()
441478foreach (exe ${executables} )
442479 target_include_directories (${exe} PRIVATE ${READOUT_INCLUDE_DIRS} )
443480 target_link_libraries (${exe} PRIVATE ${READOUT_LINK_LIBRARIES} )
0 commit comments