# # $Id$ # $HeadURL$ # $Author$ # # Uncomment if necessary #ADD_SUBDIRECTORY(UnitTests) #ADD_SUBDIRECTORY(ModuleTests) # Make ${Qt6_WebSockets} optional if(QT6_GUI_AVAILABLE AND TARGET Qt6::WebSockets) set(Qt6_WebSockets ${Qt6_WebSockets}) else() set(Qt6_WebSockets "") endif() INCLUDE(MacroRTIDDSGen) INCLUDE(MacroCodeGenIdl) SET(xml_FILE taboc_service.xml) # # --- Library svcTabocCommon -------------------------------------------------------------------------------- # SET(SRCS_common logger.cpp logger.h taboc_export.h ) # Generate taboc_enums.idl / taboc.idl CODEGEN_IDL_SVC(SRCS_common ${xml_FILE}) # Generate *.cpp/*.hpp from idl RTIDDSGEN(SRCS_common taboc_enums.idl) RTIDDSGEN(SRCS_common taboc.idl) # Generate taboc_dt[s,c]_types.h, taboc_ft[s,c]_types.h CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE}) # generate taboc_[d|f]tc.h CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE}) NGL_ADD_LIBRARY2(AAR SV WS svcTabocCommon SHARED ${SRCS_common}) NGL_TARGET_INCLUDE_DIRECTORIES(svcTabocCommon PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) IF(BUILD_RTI) NGL_TARGET_LINK_LIBRARIES(svcTabocCommon PRIVATE RTI::nddscpp2 PUBLIC Qt6::Core ddscore NGLLogger LtsUtilsCoreHeaderOnly svcPdmCommon ) ENDIF(BUILD_RTI) NGL_INSTALL_TARGET(svcTabocCommon) # # --- Library svcTabocClient -------------------------------------------------------------------------------- # SET(SRCS_client taboc_export.h ) # generate taboc_[d|f]tc_impl.[cpp|h] CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE}) NGL_ADD_LIBRARY2(AAR SV WS svcTabocClient SHARED ${SRCS_client}) # NGL_ADD_LIBRARY2 (unlike NGL_ADD_LIBRARY) does not define the # MAKE__LIB compile guard, but the generated taboc_[d|f]tc_impl.h # headers require MAKE_SVCTABOCCLIENT_LIB — same situation as # svcTabClient/svcCoreClient, which define their guards explicitly. TARGET_COMPILE_DEFINITIONS(svcTabocClient PRIVATE MAKE_SVCTABOCCLIENT_LIB) NGL_TARGET_INCLUDE_DIRECTORIES(svcTabocClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) IF(BUILD_RTI) NGL_TARGET_LINK_LIBRARIES(svcTabocClient PRIVATE RTI::nddscpp2 ddsconnector PUBLIC svcTabocCommon ddsftc ) ENDIF(BUILD_RTI) NGL_INSTALL_TARGET(svcTabocClient) # # --- Library svcTabocServer -------------------------------------------------------------------------------- # SET(SRCS_server taboc_export.h ) # generate taboc_[d|f]ts.h, taboc_[d|f]ts_impl.[cpp|h] CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE}) # Generate taboc_db_impl.cpp/.h, taboc_db.h #CODEGEN_DATABASE(SRCS_server ${xml_FILE}) NGL_ADD_LIBRARY2(AAR SV svcTabocServer SHARED ${SRCS_server}) # Generated taboc_[d|f]ts_impl.h require MAKE_SVCTABOCSERVER_LIB (see svcTabocClient above). TARGET_COMPILE_DEFINITIONS(svcTabocServer PRIVATE MAKE_SVCTABOCSERVER_LIB) NGL_TARGET_INCLUDE_DIRECTORIES(svcTabocServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) IF(BUILD_RTI) NGL_TARGET_LINK_LIBRARIES(svcTabocServer PRIVATE RTI::nddscpp2 ddsconnector PUBLIC svcTabocCommon ngldb ddsfts ) ENDIF(BUILD_RTI) NGL_INSTALL_TARGET(svcTabocServer) # # --- Topic Type Plugin -------------------------------------------------------------- # IF(BUILD_SV) CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE}) ENDIF() # # --- Executable svcTrainingAreaBaseOC (sTABOC) ------------------------------------------------- # SET(SRCS_exe dds_handler.cpp dds_handler.h main.cpp main_handler.cpp main_handler.h connection_handler.cpp connection_handler.h connection_handler_tcp.cpp connection_handler_tcp.h connection_handler_serial.cpp connection_handler_serial.h connection_handler_tcp_ttci.cpp connection_handler_tcp_ttci.h websocket_handler.cpp websocket_handler.h canag_handler.cpp canag_handler.h handler_aes_data.cpp handler_aes_data.h recv_from_dds_fts.cpp recv_from_dds_fts.h recv_from_tab.h send_to_dds.cpp send_to_dds.h send_to_tab.h settings.cpp settings.h taboc_export.h oc_telegrams.h taboc.dat ttci_channel.cpp ttci_channel.h ttci_device.cpp ttci_device.h log4cxx_taboc.props ${xml_FILE} ) # Generate taboc.sql, taboc.xml #CODEGEN_SQL(SRCS_exe ${xml_FILE}) NGL_ADD_SVC_ICON(SRCS_exe) NGL_ADD_EXECUTABLE(AAR SV svcTrainingAreaBaseOC ${SRCS_exe}) NGL_TARGET_LINK_LIBRARIES(svcTrainingAreaBaseOC Qt6::Core Qt6::Network Qt6::SerialPort ${Qt6_WebSockets} LtsCoordTrans LtsSerialPortQuerry LtsCommandLineParser LtsPluginLoader LtsUtilsCore svcCoreClient svcTabocCommon svcTabocClient svcTabocServer svcTabServer svcAesClient svcPdmClient $,ddsconnector,> nglsettings ProjectConfig NGLLogger nglcoreapplication ngltools tabTelegrams ) NGL_INSTALL_TARGET(svcTrainingAreaBaseOC) NGL_INSTALL(AAR SV FILES log4cxx_taboc.props DESTINATION bin) NGL_INSTALL(AAR SV FILES taboc.dat DESTINATION bin) NGL_ADD_TARGET_LINK(svcTrainingAreaBaseOC sTABOC) # --- Executable serialtest ------------------------------------------------- IF(BUILD_TESTING) SET(TEST_SRC connection_handler.cpp connection_handler.h connection_handler_serial.cpp connection_handler_serial.h connection_handler_tcp_ttci.cpp connection_handler_tcp_ttci.h connection_handler_tcp.cpp connection_handler_tcp.h settings.cpp settings.h testmain.cpp ttci_channel.cpp ttci_channel.h ttci_device.cpp ttci_device.h) NGL_ADD_EXECUTABLE(AAR SV serialtest ${TEST_SRC}) NGL_TARGET_LINK_LIBRARIES(serialtest Qt6::Core Qt6::SerialPort Qt6::Network LtsSerialPortQuerry svcTabocCommon LtsUtilsCore nglcoreapplication nglsettings ngltools NGLLogger) add_test(NAME taboc_serialtest COMMAND $) IF(NOT BUILD_RPM) NGL_INSTALL(AAR SV TARGETS serialtest DESTINATION bin) ENDIF() ENDIF()