-BINDIR = $(BR)/vapi_test/
-CBIN = $(addprefix $(BINDIR), vapi_c_test)
-CPPBIN = $(addprefix $(BINDIR), vapi_cpp_test)
+TEST_EXT_DIR=$(TEST_DIR)/ext
+VAPI_BINDIR = $(TEST_BR)/vapi_test
+VAPI_CBIN = $(addprefix $(VAPI_BINDIR), /vapi_c_test)
+VAPI_CPPBIN = $(addprefix $(VAPI_BINDIR), /vapi_cpp_test)
-ifeq ($(filter centos,$(OS_ID)),$(OS_ID))
-CPPBIN=
-endif
+VAPI_LIBS = \
+ -L$(VPP_INSTALL_PATH)/vpp/lib \
+ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
-LIBS = -L$(VPP_TEST_BUILD_DIR)/vpp/.libs/ -L$(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
-ifneq ($(filter opensuse,$(OS_ID)),$(OS_ID))
-LIBS += -lsubunit
+ifneq ($(filter centos,$(OS_ID)),$(OS_ID))
+VAPI_LIBS += -lsubunit
endif
-CFLAGS = -std=gnu99 -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_INSTALL_PATH)/vpp/include -I$(BINDIR)
-CPPFLAGS = -std=c++11 -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_INSTALL_PATH)/vpp/include -I$(BINDIR)
-all: $(CBIN) $(CPPBIN)
+FLAGS = -g -Wall -lstdc++ -pthread -I$(WS_ROOT)/src -I$(VPP_INSTALL_PATH)/vpp/include -I$(VAPI_BINDIR)
+CFLAGS = -std=gnu99 $(FLAGS)
+CPPFLAGS = -std=c++11 $(FLAGS)
+
+$(VAPI_BINDIR):
+ @mkdir -p $(VAPI_BINDIR)
+
+CSRC = $(TEST_EXT_DIR)/vapi_c_test.c
-$(BINDIR):
- mkdir -p $(BINDIR)
+$(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) $<
-CSRC = vapi_c_test.c
+$(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) $<
-$(BINDIR)/fake.api.vapi.h: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py | $(BINDIR)
- $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py --prefix $(BINDIR) $<
+$(VAPI_CBIN): $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h | $(VAPI_BINDIR)
+ $(CC) -o $@ $(CFLAGS) $(CSRC) $(VAPI_LIBS)
-$(BINDIR)/fake.api.vapi.hpp: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py | $(BINDIR)
- $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py --prefix $(BINDIR) $<
+$(VAPI_CBIN).d: $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
+ $(CC) -o $@ $(CFLAGS) -MM -MT '$(VAPI_CBIN)' $(CSRC) > $@
-$(CBIN): $(CSRC) $(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/libvapiclient.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libvppinfra.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libvlibmemoryclient.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libsvm.so $(BINDIR)/fake.api.vapi.h
- $(CC) -o $@ $(CFLAGS) $(CSRC) $(LIBS)
-CPPSRC = vapi_cpp_test.cpp
+ifeq ($(filter rhel centos,$(OS_ID)),$(OS_ID) AND $(OS_VERSION_ID),7)
+VAPI_CPPBIN=
+else
+CPPSRC = $(TEST_EXT_DIR)/vapi_cpp_test.cpp
-$(CPPBIN): $(CPPSRC) $(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/libvapiclient.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libvppinfra.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libvlibmemoryclient.so $(VPP_TEST_BUILD_DIR)/vpp/.libs/libsvm.so $(BINDIR)/fake.api.vapi.hpp
- $(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(LIBS)
+$(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
+.PHONY: test-apps
+test-apps: $(VAPI_CBIN) $(VAPI_CPPBIN)
+
+.PHONY: clean
clean:
- rm -rf $(BINDIR)
+ @rm -rf $(VAPI_BINDIR)
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(VAPI_CBIN).d
+ifneq ($(VAPI_CPPBIN),)
+-include $(VAPI_CPPBIN).d
+endif
+endif