# # $Id$ # $HeadURL$ # $Author$ # # Make ${Qt6_Gui} optional if(QT6_GUI_AVAILABLE AND TARGET Qt6::Gui) set(Qt6_Gui Qt6::Gui) else() set(Qt6_Gui "") endif() INCLUDE(MacroRTIDDSGen) INCLUDE(MacroCodeGenIdl) SET(xml_FILE ism_service.xml) # # --- Library svcIsmCommon -------------------------------------------------------------------------------- # SET(SRCS_common ism_export.h ism_db_impl_custom.cpp ism_db_impl_custom.h logger.cpp logger.h ) # Generate ism_enums.idl / ism.idl IF(BUILD_RTI) CODEGEN_IDL_SVC(SRCS_common ${xml_FILE}) # The enums stub copy below would overwrite the rtiddsgen-generated # _enums.hpp (RTIDDSGEN on _enums.idl writes the same build-dir # path) on every cmake re-configure. Only keep it for BUILD_RTI=OFF. IF(NOT BUILD_RTI) # Stub file for compilation (fallback when no IDL exists) CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/include/InfrastructureManagement/ism_enums.hpp.stub ${CMAKE_BINARY_DIR}/Lts/Services/InfrastructureManagement/ism_enums.hpp COPYONLY ) ENDIF() ENDIF() # Generate ism_db_impl.cpp/.h, ism_db.h IF(BUILD_RTI) CODEGEN_DATABASE(SRCS_common ${xml_FILE}) ENDIF() # The enums stub copy below would overwrite the rtiddsgen-generated # _enums.hpp (RTIDDSGEN on _enums.idl writes the same build-dir # path) on every cmake re-configure. Only keep it for BUILD_RTI=OFF. IF(NOT BUILD_RTI) # Copy ism_enums.hpp.stub to build directory for compilation CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/include/InfrastructureManagement/ism_enums.hpp.stub ${CMAKE_BINARY_DIR}/Lts/Services/InfrastructureManagement/ism_enums.hpp COPYONLY ) ENDIF() # Generate *.cpp/*.hpp from idl IF(BUILD_RTI) RTIDDSGEN(SRCS_common ism_enums.idl) RTIDDSGEN(SRCS_common ism.idl) ENDIF() # The enums stub copy below would overwrite the rtiddsgen-generated # _enums.hpp (RTIDDSGEN on _enums.idl writes the same build-dir # path) on every cmake re-configure. Only keep it for BUILD_RTI=OFF. IF(NOT BUILD_RTI) # Copy ism_enums.hpp.stub to build directory for compilation CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/include/InfrastructureManagement/ism_enums.hpp.stub ${CMAKE_BINARY_DIR}/Lts/Services/InfrastructureManagement/ism_enums.hpp COPYONLY ) ENDIF() # Generate ism_dt[s,c]_types.h, ism_ft[s,c]_types.h IF(BUILD_RTI) CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE}) ENDIF() # Generate ism_[d|f]tc.h # The former BUILD_GRANTLEE=OFF fallback copied handwritten ism_dtc.h / # ism_ftc.h onto the CODEGEN_CLIENT_TOPICS_IFC output paths; those fake # generated files were removed (the qt5 legacy has no such source files). IF(BUILD_GRANTLEE) CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE}) ENDIF() NGL_ADD_LIBRARY(AAR SV WS HLA svcIsmCommon SHARED ${SRCS_common}) set_target_properties(svcIsmCommon PROPERTIES AUTOMOC ON) NGL_TARGET_INCLUDE_DIRECTORIES(svcIsmCommon PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) NGL_TARGET_LINK_LIBRARIES(svcIsmCommon PRIVATE RTI::nddscpp2 PUBLIC Qt6::Core $,ddscore,> LtsUtilsCore ngldb NGLLogger ) NGL_INSTALL_TARGET(svcIsmCommon) # # --- Library svcIsmClient -------------------------------------------------------------------------------- # SET(SRCS_client ism_export.h ism_dtc_impl_custom.cpp ism_dtc_impl_custom.h parse_building_xml.cpp parse_building_xml.h ) # generate ism_[d|f]tc_impl.[cpp|h] # ism_dtc_impl_custom.cpp/.h are real service sources (as in the qt5 legacy); # the BUILD_GRANTLEE=OFF copy of them onto codegen output paths was removed. IF(BUILD_GRANTLEE) CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE}) ENDIF() NGL_ADD_LIBRARY(AAR SV WS HLA svcIsmClient SHARED ${SRCS_client}) set_target_properties(svcIsmClient PROPERTIES AUTOMOC ON) NGL_TARGET_INCLUDE_DIRECTORIES(svcIsmClient PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) if(QT6_GUI_AVAILABLE) NGL_TARGET_LINK_LIBRARIES(svcIsmClient PRIVATE RTI::nddscpp2 $,ddsconnector,> Qt6::Xml PUBLIC svcIsmCommon ddsftc LtsCoordTrans ${Qt6_Gui} ) endif() NGL_INSTALL_TARGET(svcIsmClient) # # --- Library svcIsmServer -------------------------------------------------------------------------------- # SET(SRCS_server ism_export.h ism_db_impl_custom.cpp ism_db_impl_custom.h convert_db_to_dds.h ) # generate ism_[d|f]ts.h, ism_[d|f]ts_impl.[cpp|h] IF(BUILD_RTI) CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE}) ENDIF() NGL_ADD_LIBRARY(WS AAR SV svcIsmServer SHARED ${SRCS_server}) NGL_TARGET_INCLUDE_DIRECTORIES(svcIsmServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ ) NGL_TARGET_LINK_LIBRARIES(svcIsmServer PRIVATE RTI::nddscpp2 $,ddsconnector,> ddsfts PUBLIC svcIsmCommon ngldb LtsUtilsCore LtsWebSocketServer ) NGL_INSTALL_TARGET(svcIsmServer) # # --- Topic Type Plugin -------------------------------------------------------------- # IF(BUILD_RTI) CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE}) ENDIF() # # --- Executable svcInfrastructureManagement (sISM) ------------------------------------------------- # SET(SRCS_exe base.cpp base.h dds_handler.cpp dds_handler.h handler_effect_area.cpp handler_effect_area.h handler_instrumentation_asset.cpp handler_instrumentation_asset.h handler_main_schedule.cpp handler_main_schedule.h handler_main_structure_element.cpp handler_main_structure_element.h handler_mounting_point_asset.cpp handler_mounting_point_asset.h handler_special_area.cpp handler_special_area.h main.cpp main_handler.cpp main_handler.h object_effect_area.cpp object_effect_area.h object_instrumentation_asset.cpp object_instrumentation_asset.h object_main_schedule.cpp object_main_schedule.h object_main_structure_element.cpp object_main_structure_element.h object_mounting_point_asset.cpp object_mounting_point_asset.h object_special_area.cpp object_special_area.h object_structure_element.cpp object_structure_element.h settings.cpp settings.h WebSocketInterface/data_manager.cpp WebSocketInterface/data_manager.h WebSocketInterface/json_keys.h WebSocketInterface/websocket_interface_handler.cpp WebSocketInterface/websocket_interface_handler.h WebSocketInterface/Messages/client_message.cpp WebSocketInterface/Messages/client_message.h WebSocketInterface/Messages/reply_message.cpp WebSocketInterface/Messages/reply_message.h log4cxx_ism.props ${xml_FILE} ) # Generate ism.sql, ism.xml IF(BUILD_RTI) CODEGEN_SQL(SRCS_exe ${xml_FILE}) ENDIF() NGL_ADD_SVC_ICON(SRCS_exe) NGL_ADD_EXECUTABLE(AAR SV svcInfrastructureManagement ${SRCS_exe}) if(QT6_GUI_AVAILABLE) NGL_TARGET_LINK_LIBRARIES(svcInfrastructureManagement Qt6::Core Qt6::Xml ${Qt6_Gui} svcCoreClient svcIsmCommon svcIsmServer $,ddsconnector,> nglsettings ProjectConfig LtsCommandLineParser NGLLogger nglcoreapplication LtsCoordTrans LtsWebSocketServer svcAsmClient svcExmClient ngltools ) endif() NGL_INSTALL_TARGET(svcInfrastructureManagement) NGL_INSTALL(AAR SV FILES log4cxx_ism.props DESTINATION bin) NGL_ADD_TARGET_LINK(svcInfrastructureManagement sISM) # Uncomment if necessary #ADD_SUBDIRECTORY(UnitTests) ADD_SUBDIRECTORY(ModuleTests) ADD_SUBDIRECTORY(ImportBuildings)