+CSRC = $(TEST_EXT_DIR)/vapi_c_test.c
+
+$(VAPI_BINDIR)/fake.api.vapi.h: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py | $(VAPI_BINDIR)
+ $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py --prefix $(VAPI_BINDIR) $<
+
+$(VAPI_BINDIR)/fake.api.vapi.hpp: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py | $(VAPI_BINDIR)
+ $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py --prefix $(VAPI_BINDIR) $<
+
+$(VAPI_CBIN): $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h | $(VAPI_BINDIR)
+ $(CC) -o $@ $(CFLAGS) $(CSRC) $(VAPI_LIBS)
+
+$(VAPI_CBIN).d: $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
+ $(CC) -o $@ $(CFLAGS) -MM -MT '$(VAPI_CBIN)' $(CSRC) > $@
+
+
+ifeq ($(filter rhel centos,$(OS_ID)),$(OS_ID))
+VAPI_CPPBIN=
+else
+CPPSRC = $(TEST_EXT_DIR)/vapi_cpp_test.cpp
+
+$(VAPI_CPPBIN): $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp | $(VAPI_BINDIR)
+ $(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(VAPI_LIBS)
+
+$(VAPI_CPPBIN).d: $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
+ $(CXX) -o $@ $(CPPFLAGS) -MM -MT '$(VAPI_CPPBIN)' $(CPPSRC) > $@
+endif
+
+ifneq ($(EXTENDED_TESTS),)
+ifeq ($(filter yes y 1,$(EXTENDED_TESTS)),$(EXTENDED_TESTS))
+VOM_BIN = $(addprefix $(VOM_BINDIR), /vom_test)
+VOM_CPPSRC = $(TEST_EXT_DIR)/vom_test.cpp
+
+$(VOM_BINDIR):
+ @mkdir -p $(VOM_BINDIR)
+
+LIB_VOM = -lvom
+VOM_LIBS = \
+ -L$(VPP_INSTALL_PATH)/vom/lib \
+ -lvom \
+ -lboost_thread \
+ -lboost_system \
+ -lboost_filesystem \
+ -lboost_unit_test_framework \
+ $(VAPI_LIBS)
+
+VOM_CPPFLAGS = \
+ -I $(WS_ROOT)/src/vpp-api/ \
+ -DBOOST_LOG_DYN_LINK \
+ $(CPPFLAGS)
+
+$(VOM_BIN): $(VOM_CPPSRC) $(VOM_BINDIR)
+ $(CXX) -o $@ $(VOM_CPPFLAGS) -O0 -g $(VOM_CPPSRC) $(VOM_LIBS) -Wl,-rpath,$(VPP_INSTALL_PATH)/vom/lib
+
+$(VOM_BIN).d: $(VOM_CPPSRC) $(VOM_BINDIR)
+ $(CXX) -o $@ $(VOM_CPPFLAGS) -MM -MT '$(VOM_BIN)' $(VOM_CPPSRC) > $@
+endif
+endif
+
+.PHONY: test-apps
+test-apps: $(VAPI_CBIN) $(VAPI_CPPBIN) $(VOM_BIN)
+
+.PHONY: clean