find_package(SYSTEMD REQUIRED) include_directories(include) set(MRZCPD_SERVICE_SOURCE_FILES src/core.c src/devmgr.c src/mrb.c src/hwinfo.c src/vdev.c src/vdata.c src/app.c src/monit.c src/node.c src/sc_metrics.c src/sc_node_common.c src/node_shmdev.c src/node_phydev.c src/node_lb.c src/node_classifier.c src/node_etherfabric.c src/node_tera.c src/node_eth_ingress.c src/node_eth_egress.c src/node_bfd.c src/node_vwire.c src/node_health_check.c src/node_forwarder.c src/node_bridge.c src/pdump.c src/olp.c src/olp_6500.c src/http_serv.c src/classifier_rule_parser.c src/mpack.c src/dp_trace.c src/node_link_aware_injector.c) add_executable(mrzcpd src/main.c ${MRZCPD_SERVICE_SOURCE_FILES}) set_target_properties(mrzcpd PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE) target_link_libraries(mrzcpd MESA_prof_load_static libdpdk ${SYSTEMD_LIBRARIES}) target_link_libraries(mrzcpd rt pthread dl infra z elf) target_include_directories(mrzcpd INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include/") target_include_directories(mrzcpd INTERFACE ${SYSTEMD_INCLUDE_DIRS}) install(TARGETS mrzcpd RUNTIME DESTINATION ${MR_INSTALL_BINDIR} COMPONENT Program) ########################################### UNITTESTS ########################################### add_executable(test_olp test/test_olp.c src/olp_6500.c) target_include_directories(test_olp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/) target_link_libraries(test_olp MESA_prof_load_static libcmocka rt pthread dl infra z elf ${SYSTEMD_LIBRARIES} libdpdk) add_test(NAME test_olp COMMAND test_olp) add_executable(test_node_vwire test/test_node_mocks.c test/test_node_vwire.c ${MRZCPD_SERVICE_SOURCE_FILES}) target_compile_options(test_node_vwire PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_link_libraries(test_node_vwire MESA_prof_load_static ${SYSTEMD_LIBRARIES} libdpdk) target_link_libraries(test_node_vwire libcmocka rt pthread dl infra z elf) target_link_options(test_node_vwire PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_include_directories(test_node_vwire PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/") target_link_libraries(test_node_vwire -Wl,--wrap=mr_dev_desc_lookup) target_link_libraries(test_node_vwire -Wl,--wrap=forwarder_table_insert) target_link_libraries(test_node_vwire -Wl,--wrap=classifier_node_process) target_link_libraries(test_node_vwire -Wl,--wrap=pkt_drop_trap_process) target_link_libraries(test_node_vwire -Wl,--wrap=rte_eal_init) target_link_libraries(test_node_vwire -Wl,--wrap=rte_exit) add_test(NAME test_node_vwire COMMAND test_node_vwire) add_executable(test_trace_service test/test_trace_service.c ${MRZCPD_SERVICE_SOURCE_FILES}) target_include_directories(test_node_vwire PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/) target_link_libraries(test_trace_service MESA_prof_load_static libcmocka rt pthread dl infra z elf ${SYSTEMD_LIBRARIES} libdpdk) target_link_options(test_trace_service PRIVATE -Wl,--wrap=rte_mp_reply,--wrap=app_event_handler_register,--wrap=app_lookup_by_symbol) target_link_options(test_trace_service PRIVATE -Wl,--wrap=sc_main_get) add_test(NAME test_trace_service COMMAND test_trace_service) add_executable(test_node_bfd test/test_node_mocks.c test/test_node_bfd.c test/test_common.c ${MRZCPD_SERVICE_SOURCE_FILES}) target_compile_options(test_node_bfd PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_link_libraries(test_node_bfd MESA_prof_load_static ${SYSTEMD_LIBRARIES} libdpdk) target_link_libraries(test_node_bfd libcmocka rt pthread dl infra z elf) target_link_options(test_node_bfd PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_include_directories(test_node_bfd PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/") add_test(NAME test_node_bfd COMMAND test_node_bfd) add_executable(test_sc_metrics test/test_node_mocks.c test/test_sc_metrics.c ${MRZCPD_SERVICE_SOURCE_FILES}) target_compile_options(test_sc_metrics PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_link_libraries(test_sc_metrics MESA_prof_load_static ${SYSTEMD_LIBRARIES} libdpdk) target_link_libraries(test_sc_metrics libcmocka rt pthread dl infra z elf) target_link_options(test_sc_metrics PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_include_directories(test_sc_metrics PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/") add_test(NAME test_sc_metrics COMMAND test_sc_metrics) add_executable(test_node_ef test/test_node_mocks.c test/test_node_ef.c test/test_common.c ${MRZCPD_SERVICE_SOURCE_FILES}) target_compile_options(test_node_ef PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_link_libraries(test_node_ef MESA_prof_load_static ${SYSTEMD_LIBRARIES} libdpdk) target_link_libraries(test_node_ef libcmocka rt pthread dl infra z elf) target_link_options(test_node_ef PRIVATE --coverage -fprofile-arcs -ftest-coverage) target_include_directories(test_node_ef PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/") target_link_libraries(test_node_ef -Wl,--wrap=mr_dev_desc_lookup) target_link_libraries(test_node_ef -Wl,--wrap=port_adapter_mapping_insert) add_test(NAME test_node_ef COMMAND test_node_ef)