VOM: mroutes
[vpp.git] / test / ext / Makefile
index a188427..de219b1 100644 (file)
@@ -1,31 +1,86 @@
-BINDIR = $(BR)/vapi_test/
-CBIN = $(addprefix $(BINDIR), vapi_c_test)
-CPPBIN = $(addprefix $(BINDIR), vapi_cpp_test)
+VAPI_BINDIR = $(TEST_DIR)/build/vapi_test/
+VAPI_CBIN = $(addprefix $(VAPI_BINDIR), vapi_c_test)
+VAPI_CPPBIN = $(addprefix $(VAPI_BINDIR), vapi_cpp_test)
+VOM_BINDIR = $(TEST_DIR)/build/vom_test/
+VOM_BIN = $(addprefix $(VOM_BINDIR), vom_test)
 
-LIBS = -L$(VPP_TEST_BUILD_DIR)/vpp/.libs/ -L$(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lsubunit -lrt -lm -lvapiclient
-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)
+ifeq ($(filter rhel centos,$(OS_ID)),$(OS_ID))
+VAPI_CPPBIN=
+endif
 
-all: $(CBIN) $(CPPBIN)
+VAPI_LIBS = \
+  -L$(VPP_INSTALL_PATH)/vpp/lib \
+  -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
 
-$(BINDIR):
-       mkdir -p $(BINDIR)
+ifneq ($(filter centos opensuse opensuse-tumbleweed opensuse-leap,$(OS_ID)),$(OS_ID))
+VAPI_LIBS += -lsubunit
+endif
+
+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) -I$(WS_ROOT)/extras/vom
+
+all: $(VAPI_CBIN) $(VAPI_CPPBIN) $(VOM_BIN)
+
+$(VAPI_BINDIR):
+       mkdir -p $(VAPI_BINDIR)
 
 CSRC = vapi_c_test.c
 
-fake.api.vapi.h: fake.api.json $(BINDIR) $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py
-       $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py --prefix $(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) $<
+
+$(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) $<
 
-fake.api.vapi.hpp: fake.api.json $(BINDIR) $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py
-       $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py --prefix $(BINDIR) $<
+$(VAPI_CBIN): $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
+       $(CC) -o $@ $(CFLAGS) $(CSRC) $(VAPI_LIBS)
+
+$(VAPI_CBIN).d: $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
+       $(CC) -o $@ $(CFLAGS) -MM -MT '$(VAPI_CBIN)' $(CSRC) > $@
 
-$(CBIN): $(CSRC) $(BINDIR) $(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 fake.api.vapi.h
-       $(CC) -o $@ $(CFLAGS) $(CSRC) $(LIBS)
 
 CPPSRC = vapi_cpp_test.cpp
 
-$(CPPBIN): $(CPPSRC) $(BINDIR) $(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 fake.api.vapi.hpp
-       $(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(LIBS)
+$(VAPI_CPPBIN): $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
+       $(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(VAPI_LIBS)
+
+$(VAPI_CPPBIN).d: $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
+       $(CXX) -o $@ $(CPPFLAGS) -MM -MT '$(VAPI_CPPBIN)' $(CPPSRC) > $@
+
+VOM_CPPSRC = 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) > $@
+
 
 clean:
-       rm -rf $(BINDIR)
+       rm -rf $(VAPI_BINDIR) $(VOM_BINDIR)
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(VAPI_CPPBIN).d
+-include $(VAPI_CBIN).d
+-include $(VOM_BIN).d
+endif
+