From 4f012352639c5e18f93b4d5c75f821ae3866f97a Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Sat, 1 Aug 2026 07:18:26 +0000 Subject: [PATCH] [build]: Reduce duplicate compilation in CI Reuse common cfgmgr and P4 orchagent objects through static archives. Build unit-test binaries only for check targets so Trixie package jobs can use DEB_BUILD_OPTIONS=nocheck without compiling redundant tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f289b446-dbae-48ba-8d0a-dc02083cdf07 Signed-off-by: Lawrence Lee --- .azure-pipelines/build-template.yml | 9 +++- azure-pipelines.yml | 3 ++ cfgmgr/Makefile.am | 65 +++++++++++++++-------------- configure.ac | 1 + orchagent/Makefile.am | 49 +++++----------------- orchagent/p4orch/shared_sources.mk | 38 +++++++++++++++++ orchagent/p4orch/tests/Makefile.am | 51 +++++----------------- tests/Makefile.am | 2 +- tests/mock_tests/Makefile.am | 2 +- 9 files changed, 108 insertions(+), 112 deletions(-) create mode 100644 orchagent/p4orch/shared_sources.mk diff --git a/.azure-pipelines/build-template.yml b/.azure-pipelines/build-template.yml index ddf4cd22680..6977827bae6 100644 --- a/.azure-pipelines/build-template.yml +++ b/.azure-pipelines/build-template.yml @@ -63,6 +63,10 @@ parameters: type: boolean default: false +- name: run_unit_tests + type: boolean + default: true + - name: common_lib_artifact_name type: string @@ -257,6 +261,9 @@ jobs: if [ '${{ parameters.asan }}' == True ]; then export ENABLE_ASAN=y fi + if [ '${{ parameters.run_unit_tests }}' != True ]; then + export DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS:+$DEB_BUILD_OPTIONS }nocheck" + fi ./autogen.sh RUSTFLAGS=-Dwarnings dpkg-buildpackage -us -uc -b -j$(nproc) && cp ../*.deb . displayName: "Compile sonic swss" @@ -267,7 +274,7 @@ jobs: inputs: testResultsFiles: '**/*_tr.xml' testRunTitle: gtest - condition: and(succeededOrFailed(), eq('${{ parameters.asan }}', false)) + condition: and(succeededOrFailed(), eq('${{ parameters.asan }}', false), eq('${{ parameters.run_unit_tests }}', true)) - publish: $(System.DefaultWorkingDirectory)/ artifact: ${{ parameters.artifact_name }} displayName: "Archive swss debian packages" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6275c62545a..1d517216bd0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -126,6 +126,7 @@ stages: debian_version: trixie vpp_artifact_name: vpp-trixie archive_gcov: false + run_unit_tests: false - template: .azure-pipelines/build-template.yml parameters: @@ -141,6 +142,7 @@ stages: debian_version: trixie vpp_artifact_name: vpp-trixie archive_gcov: false + run_unit_tests: false - template: .azure-pipelines/build-template.yml parameters: @@ -156,6 +158,7 @@ stages: debian_version: trixie vpp_artifact_name: vpp-trixie archive_gcov: false + run_unit_tests: false - stage: BuildDocker dependsOn: Build diff --git a/cfgmgr/Makefile.am b/cfgmgr/Makefile.am index 0f71ad7b0bb..c276cd86984 100644 --- a/cfgmgr/Makefile.am +++ b/cfgmgr/Makefile.am @@ -6,6 +6,7 @@ SAIMETA_LIBS = -lsaimeta -lsaimetadata -lzmq COMMON_LIBS = -lswsscommon -lpthread bin_PROGRAMS = vlanmgrd teammgrd portmgrd intfmgrd buffermgrd vrfmgrd nbrmgrd vxlanmgrd sflowmgrd natmgrd coppmgrd tunnelmgrd macsecmgrd fabricmgrd stpmgrd +noinst_LIBRARIES = libcfgmgrcommon.a cfgmgrdir = $(datadir)/swss @@ -31,81 +32,84 @@ COMMON_ORCH_SOURCE = $(top_srcdir)/orchagent/orch.cpp \ $(top_srcdir)/orchagent/response_publisher.cpp \ $(top_srcdir)/lib/recorder.cpp -vlanmgrd_SOURCES = vlanmgrd.cpp vlanmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +libcfgmgrcommon_a_SOURCES = $(COMMON_ORCH_SOURCE) +libcfgmgrcommon_a_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) + +vlanmgrd_SOURCES = vlanmgrd.cpp vlanmgr.cpp shellcmd.h vlanmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) vlanmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -vlanmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +vlanmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -teammgrd_SOURCES = teammgrd.cpp teammgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +teammgrd_SOURCES = teammgrd.cpp teammgr.cpp shellcmd.h teammgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) teammgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -teammgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +teammgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -portmgrd_SOURCES = portmgrd.cpp portmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +portmgrd_SOURCES = portmgrd.cpp portmgr.cpp shellcmd.h portmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) portmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -portmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +portmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -fabricmgrd_SOURCES = fabricmgrd.cpp fabricmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +fabricmgrd_SOURCES = fabricmgrd.cpp fabricmgr.cpp shellcmd.h fabricmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) fabricmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -fabricmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +fabricmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -intfmgrd_SOURCES = intfmgrd.cpp intfmgr.cpp $(top_srcdir)/lib/subintf.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +intfmgrd_SOURCES = intfmgrd.cpp intfmgr.cpp $(top_srcdir)/lib/subintf.cpp shellcmd.h intfmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) intfmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -intfmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +intfmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -buffermgrd_SOURCES = buffermgrd.cpp buffermgr.cpp buffermgrdyn.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +buffermgrd_SOURCES = buffermgrd.cpp buffermgr.cpp buffermgrdyn.cpp shellcmd.h buffermgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) buffermgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -buffermgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +buffermgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -vrfmgrd_SOURCES = vrfmgrd.cpp vrfmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +vrfmgrd_SOURCES = vrfmgrd.cpp vrfmgr.cpp shellcmd.h vrfmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) vrfmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -vrfmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +vrfmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -nbrmgrd_SOURCES = nbrmgrd.cpp nbrmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +nbrmgrd_SOURCES = nbrmgrd.cpp nbrmgr.cpp shellcmd.h nbrmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(LIBNL_CFLAGS) $(CFLAGS_ASAN) nbrmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(LIBNL_CPPFLAGS) $(CFLAGS_ASAN) -nbrmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) $(LIBNL_LIBS) +nbrmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) $(LIBNL_LIBS) -vxlanmgrd_SOURCES = vxlanmgrd.cpp vxlanmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +vxlanmgrd_SOURCES = vxlanmgrd.cpp vxlanmgr.cpp shellcmd.h vxlanmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) vxlanmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -vxlanmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +vxlanmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -sflowmgrd_SOURCES = sflowmgrd.cpp sflowmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +sflowmgrd_SOURCES = sflowmgrd.cpp sflowmgr.cpp shellcmd.h sflowmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) sflowmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -sflowmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +sflowmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -natmgrd_SOURCES = natmgrd.cpp natmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +natmgrd_SOURCES = natmgrd.cpp natmgr.cpp shellcmd.h natmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) natmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -natmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +natmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -coppmgrd_SOURCES = coppmgrd.cpp coppmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +coppmgrd_SOURCES = coppmgrd.cpp coppmgr.cpp shellcmd.h coppmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) coppmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -coppmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +coppmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -tunnelmgrd_SOURCES = tunnelmgrd.cpp tunnelmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +tunnelmgrd_SOURCES = tunnelmgrd.cpp tunnelmgr.cpp shellcmd.h tunnelmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) tunnelmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -tunnelmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +tunnelmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -macsecmgrd_SOURCES = macsecmgrd.cpp macsecmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h $(top_srcdir)/orchagent/macsecpost.cpp +macsecmgrd_SOURCES = macsecmgrd.cpp macsecmgr.cpp shellcmd.h $(top_srcdir)/orchagent/macsecpost.cpp macsecmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) macsecmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -macsecmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +macsecmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) -stpmgrd_SOURCES = stpmgrd.cpp stpmgr.cpp $(COMMON_ORCH_SOURCE) shellcmd.h +stpmgrd_SOURCES = stpmgrd.cpp stpmgr.cpp shellcmd.h stpmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) stpmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -stpmgrd_LDADD = $(LDFLAGS_ASAN) $(COMMON_LIBS) $(SAIMETA_LIBS) +stpmgrd_LDADD = $(LDFLAGS_ASAN) libcfgmgrcommon.a $(COMMON_LIBS) $(SAIMETA_LIBS) if GCOV_ENABLED vlanmgrd_SOURCES += ../gcovpreload/gcovpreload.cpp @@ -142,4 +146,3 @@ macsecmgrd_SOURCES += $(top_srcdir)/lib/asan.cpp fabricmgrd_SOURCES += $(top_srcdir)/lib/asan.cpp stpmgrd_SOURCES += $(top_srcdir)/lib/asan.cpp endif - diff --git a/configure.ac b/configure.ac index fe1e0a9e038..44e60d28304 100644 --- a/configure.ac +++ b/configure.ac @@ -7,6 +7,7 @@ AC_LANG_C AC_LANG([C++]) AC_PROG_CC AC_PROG_CXX +AM_PROG_AR AC_PROG_LIBTOOL AC_HEADER_STDC diff --git a/orchagent/Makefile.am b/orchagent/Makefile.am index f535971c547..34f29c96765 100644 --- a/orchagent/Makefile.am +++ b/orchagent/Makefile.am @@ -9,6 +9,14 @@ INCLUDES = -I $(top_srcdir)/lib \ -I nhg SUBDIRS = p4orch/tests +include $(top_srcdir)/orchagent/p4orch/shared_sources.mk + +EXTRA_DIST = p4orch/shared_sources.mk + +P4ORCH_SHARED_LIB = p4orch/tests/libp4orchshared.a + +$(P4ORCH_SHARED_LIB): $(P4ORCH_SHARED_SOURCES) + $(MAKE) -C p4orch/tests libp4orchshared.a CFLAGS_SAI = -I /usr/include/sai @@ -51,11 +59,8 @@ orchagent_SOURCES = \ main.cpp \ $(top_srcdir)/lib/gearboxutils.cpp \ $(top_srcdir)/lib/subintf.cpp \ - $(top_srcdir)/lib/recorder.cpp \ $(top_srcdir)/lib/orch_zmq_config.cpp \ orchdaemon.cpp \ - orch.cpp \ - notifications.cpp \ nhgorch.cpp \ nhgbase.cpp \ cbf/cbfnhgorch.cpp \ @@ -66,12 +71,9 @@ orchagent_SOURCES = \ intfsorch.cpp \ evpnmhorch.cpp \ l2nhgorch.cpp \ - port/port_capabilities.cpp \ - port/porthlpr.cpp \ portsorch.cpp \ fabricportsorch.cpp \ fgnhgorch.cpp \ - copporch.cpp \ tunneldecaporch.cpp \ qosorch.cpp \ buffer/bufferhelper.cpp \ @@ -87,18 +89,10 @@ orchagent_SOURCES = \ pbhorch.cpp \ saihelper.cpp \ saiattr.cpp \ - switch/switch_capabilities.cpp \ - switch/switch_helper.cpp \ - switch/trimming/capabilities.cpp \ - switch/trimming/helper.cpp \ - switchorch.cpp \ pfcwdorch.cpp \ pfcactionhandler.cpp \ crmorch.cpp \ - request_parser.cpp \ - vrforch.cpp \ countercheckorch.cpp \ - vxlanorch.cpp \ tunneltermhelper.cpp \ vnetorch.cpp \ dtelorch.cpp \ @@ -106,7 +100,6 @@ orchagent_SOURCES = \ watermarkorch.cpp \ notificationconsumerstatsorch.cpp \ policerorch.cpp \ - namelabelmapper.cpp \ sfloworch.cpp \ chassisorch.cpp \ debugcounterorch.cpp \ @@ -121,7 +114,6 @@ orchagent_SOURCES = \ srv6orch.cpp \ response_publisher.cpp \ nvgreorch.cpp \ - zmqorch.cpp \ dash/dashenifwdorch.cpp \ dash/dashenifwdinfo.cpp \ dash/dashcounter.cpp \ @@ -150,31 +142,13 @@ orchagent_SOURCES = \ shlorch.cpp -orchagent_SOURCES += flex_counter/flex_counter_manager.cpp flex_counter/flex_counter_stat_manager.cpp flex_counter/flow_counter_handler.cpp flex_counter/flowcounterrouteorch.cpp +orchagent_SOURCES += flex_counter/flex_counter_stat_manager.cpp flex_counter/flowcounterrouteorch.cpp orchagent_SOURCES += debug_counter/debug_counter.cpp debug_counter/drop_counter.cpp -orchagent_SOURCES += p4orch/p4orch.cpp \ - p4orch/p4orch_util.cpp \ - p4orch/p4oidmapper.cpp \ - p4orch/tables_definition_manager.cpp \ - p4orch/router_interface_manager.cpp \ - p4orch/gre_tunnel_manager.cpp \ - p4orch/neighbor_manager.cpp \ - p4orch/next_hop_manager.cpp \ - p4orch/route_manager.cpp \ - p4orch/acl_util.cpp \ - p4orch/acl_table_manager.cpp \ - p4orch/acl_rule_manager.cpp \ - p4orch/wcmp_manager.cpp \ - p4orch/mirror_session_manager.cpp \ - p4orch/tunnel_decap_group_manager.cpp \ - p4orch/l3_admit_manager.cpp \ - p4orch/l3_multicast_manager.cpp \ - p4orch/ip_multicast_manager.cpp \ - p4orch/ext_tables_manager.cpp orchagent_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) orchagent_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI) $(CFLAGS_ASAN) -orchagent_LDADD = $(LDFLAGS_ASAN) -lnl-3 -lnl-route-3 -lpthread -lsairedis -lsaimeta -lsaimetadata -lswsscommon -lzmq -lprotobuf -ldashapi -ljemalloc +orchagent_DEPENDENCIES = $(P4ORCH_SHARED_LIB) +orchagent_LDADD = $(P4ORCH_SHARED_LIB) $(LDFLAGS_ASAN) -lnl-3 -lnl-route-3 -lpthread -lsairedis -lsaimeta -lsaimetadata -lswsscommon -lzmq -lprotobuf -ldashapi -ljemalloc routeresync_SOURCES = routeresync.cpp \ $(top_srcdir)/lib/orch_zmq_config.cpp @@ -197,4 +171,3 @@ orchagent_SOURCES += $(top_srcdir)/lib/asan.cpp routeresync_SOURCES += $(top_srcdir)/lib/asan.cpp orchagent_restart_check_SOURCES += $(top_srcdir)/lib/asan.cpp endif - diff --git a/orchagent/p4orch/shared_sources.mk b/orchagent/p4orch/shared_sources.mk new file mode 100644 index 00000000000..9459e267b5f --- /dev/null +++ b/orchagent/p4orch/shared_sources.mk @@ -0,0 +1,38 @@ +P4ORCH_SHARED_SOURCES = \ + $(top_srcdir)/orchagent/orch.cpp \ + $(top_srcdir)/orchagent/vrforch.cpp \ + $(top_srcdir)/orchagent/vxlanorch.cpp \ + $(top_srcdir)/orchagent/copporch.cpp \ + $(top_srcdir)/orchagent/switch/switch_capabilities.cpp \ + $(top_srcdir)/orchagent/switch/switch_helper.cpp \ + $(top_srcdir)/orchagent/switch/trimming/capabilities.cpp \ + $(top_srcdir)/orchagent/switch/trimming/helper.cpp \ + $(top_srcdir)/orchagent/switchorch.cpp \ + $(top_srcdir)/orchagent/request_parser.cpp \ + $(top_srcdir)/lib/recorder.cpp \ + $(top_srcdir)/orchagent/zmqorch.cpp \ + $(top_srcdir)/orchagent/namelabelmapper.cpp \ + $(top_srcdir)/orchagent/flex_counter/flex_counter_manager.cpp \ + $(top_srcdir)/orchagent/flex_counter/flow_counter_handler.cpp \ + $(top_srcdir)/orchagent/port/port_capabilities.cpp \ + $(top_srcdir)/orchagent/port/porthlpr.cpp \ + $(top_srcdir)/orchagent/notifications.cpp \ + $(top_srcdir)/orchagent/p4orch/p4oidmapper.cpp \ + $(top_srcdir)/orchagent/p4orch/p4orch.cpp \ + $(top_srcdir)/orchagent/p4orch/p4orch_util.cpp \ + $(top_srcdir)/orchagent/p4orch/tables_definition_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/router_interface_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/gre_tunnel_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/neighbor_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/next_hop_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/route_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/acl_util.cpp \ + $(top_srcdir)/orchagent/p4orch/acl_table_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/acl_rule_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/wcmp_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/mirror_session_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/l3_admit_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/l3_multicast_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/tunnel_decap_group_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/ip_multicast_manager.cpp \ + $(top_srcdir)/orchagent/p4orch/ext_tables_manager.cpp diff --git a/orchagent/p4orch/tests/Makefile.am b/orchagent/p4orch/tests/Makefile.am index f7613fc24e8..f39c98cab69 100644 --- a/orchagent/p4orch/tests/Makefile.am +++ b/orchagent/p4orch/tests/Makefile.am @@ -1,12 +1,15 @@ ORCHAGENT_DIR = $(top_srcdir)/orchagent P4ORCH_DIR = $(ORCHAGENT_DIR)/p4orch +include $(top_srcdir)/orchagent/p4orch/shared_sources.mk + INCLUDES = -I $(top_srcdir) -I $(ORCHAGENT_DIR) -I $(P4ORCH_DIR) -I $(top_srcdir)/lib -I $(ORCHAGENT_DIR)/flex_counter CFLAGS_SAI = -I /usr/include/sai TESTS = p4orch_tests -noinst_PROGRAMS = p4orch_tests +check_PROGRAMS = p4orch_tests +noinst_LIBRARIES = libp4orchshared.a if DEBUG DBGFLAGS = -ggdb -DDEBUG @@ -17,44 +20,10 @@ endif CFLAGS_GTEST = LDADD_GTEST = -lgtest -lgtest_main -lgmock -lgmock_main -p4orch_tests_SOURCES = $(ORCHAGENT_DIR)/orch.cpp \ - $(ORCHAGENT_DIR)/vrforch.cpp \ - $(ORCHAGENT_DIR)/vxlanorch.cpp \ - $(ORCHAGENT_DIR)/copporch.cpp \ - $(ORCHAGENT_DIR)/switch/switch_capabilities.cpp \ - $(ORCHAGENT_DIR)/switch/switch_helper.cpp \ - $(ORCHAGENT_DIR)/switch/trimming/capabilities.cpp \ - $(ORCHAGENT_DIR)/switch/trimming/helper.cpp \ - $(ORCHAGENT_DIR)/switchorch.cpp \ - $(ORCHAGENT_DIR)/request_parser.cpp \ - $(top_srcdir)/lib/recorder.cpp \ - $(ORCHAGENT_DIR)/zmqorch.cpp \ - $(ORCHAGENT_DIR)/namelabelmapper.cpp \ - $(ORCHAGENT_DIR)/flex_counter/flex_counter_manager.cpp \ - $(ORCHAGENT_DIR)/flex_counter/flow_counter_handler.cpp \ - $(ORCHAGENT_DIR)/port/port_capabilities.cpp \ - $(ORCHAGENT_DIR)/port/porthlpr.cpp \ - $(ORCHAGENT_DIR)/notifications.cpp \ - $(P4ORCH_DIR)/p4oidmapper.cpp \ - $(P4ORCH_DIR)/p4orch.cpp \ - $(P4ORCH_DIR)/p4orch_util.cpp \ - $(P4ORCH_DIR)/tables_definition_manager.cpp \ - $(P4ORCH_DIR)/router_interface_manager.cpp \ - $(P4ORCH_DIR)/gre_tunnel_manager.cpp \ - $(P4ORCH_DIR)/neighbor_manager.cpp \ - $(P4ORCH_DIR)/next_hop_manager.cpp \ - $(P4ORCH_DIR)/route_manager.cpp \ - $(P4ORCH_DIR)/acl_util.cpp \ - $(P4ORCH_DIR)/acl_table_manager.cpp \ - $(P4ORCH_DIR)/acl_rule_manager.cpp \ - $(P4ORCH_DIR)/wcmp_manager.cpp \ - $(P4ORCH_DIR)/mirror_session_manager.cpp \ - $(P4ORCH_DIR)/l3_admit_manager.cpp \ - $(P4ORCH_DIR)/l3_multicast_manager.cpp \ - $(P4ORCH_DIR)/tunnel_decap_group_manager.cpp \ - $(P4ORCH_DIR)/ip_multicast_manager.cpp \ - $(P4ORCH_DIR)/ext_tables_manager.cpp \ - $(top_srcdir)/tests/mock_tests/fake_response_publisher.cpp \ +libp4orchshared_a_SOURCES = $(P4ORCH_SHARED_SOURCES) +libp4orchshared_a_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) $(CFLAGS_ASAN) + +p4orch_tests_SOURCES = $(top_srcdir)/tests/mock_tests/fake_response_publisher.cpp \ fake_portorch.cpp \ fake_crmorch.cpp \ fake_flexcounterorch.cpp \ @@ -108,6 +77,8 @@ p4orch_tests_SOURCES = $(ORCHAGENT_DIR)/orch.cpp \ p4orch_tests_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) $(CFLAGS_ASAN) p4orch_tests_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) $(CFLAGS_ASAN) -p4orch_tests_LDADD = $(LDADD_GTEST) $(LDFLAGS_ASAN) -lpthread -lsairedis -lswsscommon -lsaimeta -lsaimetadata -lzmq +p4orch_tests_LDADD = libp4orchshared.a $(LDADD_GTEST) $(LDFLAGS_ASAN) -lpthread -lsairedis -lswsscommon -lsaimeta -lsaimetadata -lzmq + +$(p4orch_tests_OBJECTS): CXXFLAGS := $(filter-out -O%,$(CXXFLAGS)) -O0 LOG_DRIVER = $(top_srcdir)/run-gtest-suite.py diff --git a/tests/Makefile.am b/tests/Makefile.am index 299ad802614..f6337314458 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,7 +8,7 @@ if !HAVE_SAI SUBDIRS = mock_tests endif -noinst_PROGRAMS = tests +check_PROGRAMS = tests if DEBUG DBGFLAGS = -ggdb -DDEBUG diff --git a/tests/mock_tests/Makefile.am b/tests/mock_tests/Makefile.am index 157416d96c6..0c126279b81 100644 --- a/tests/mock_tests/Makefile.am +++ b/tests/mock_tests/Makefile.am @@ -11,7 +11,7 @@ CFLAGS_SAI = -I /usr/include/sai TESTS = tests tests_intfmgrd tests_teammgrd tests_portsyncd tests_fpmsyncd tests_fdbsyncd tests_response_publisher tests_nbrmgrd tests_teamsyncd -noinst_PROGRAMS = tests tests_intfmgrd tests_teammgrd tests_portsyncd tests_fpmsyncd tests_fdbsyncd tests_response_publisher tests_nbrmgrd tests_teamsyncd +check_PROGRAMS = tests tests_intfmgrd tests_teammgrd tests_portsyncd tests_fpmsyncd tests_fdbsyncd tests_response_publisher tests_nbrmgrd tests_teamsyncd LDADD_SAI = -lsaivs -lsairedis -lsaimeta -lsaimetadata