build: fix make test with distributed src
[vpp.git] / test / ext / Makefile
1 TEST_EXT_DIR=$(TEST_DIR)/ext
2 VAPI_BINDIR = $(TEST_BR)/vapi_test
3 VAPI_CBIN = $(addprefix $(VAPI_BINDIR), /vapi_c_test)
4 VAPI_CPPBIN = $(addprefix $(VAPI_BINDIR), /vapi_cpp_test)
5 VOM_BINDIR = $(TEST_BR)/vom_test
6
7 VAPI_LIBS = \
8   -L$(VPP_INSTALL_PATH)/vpp/lib \
9   -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
10
11 ifneq ($(filter centos opensuse opensuse-tumbleweed opensuse-leap,$(OS_ID)),$(OS_ID))
12 VAPI_LIBS += -lsubunit
13 endif
14
15 FLAGS = -g -Wall -lstdc++ -pthread -I$(WS_ROOT)/src -I$(VPP_INSTALL_PATH)/vpp/include -I$(VAPI_BINDIR)
16 CFLAGS = -std=gnu99 $(FLAGS)
17 CPPFLAGS = -std=c++11 $(FLAGS) -I$(WS_ROOT)/extras/vom
18
19 $(VAPI_BINDIR):
20         @mkdir -p $(VAPI_BINDIR)
21
22 CSRC = $(TEST_EXT_DIR)/vapi_c_test.c
23
24 $(VAPI_BINDIR)/fake.api.vapi.h: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py | $(VAPI_BINDIR)
25         $(WS_ROOT)/src/vpp-api/vapi/vapi_c_gen.py --prefix $(VAPI_BINDIR) $<
26
27 $(VAPI_BINDIR)/fake.api.vapi.hpp: fake.api.json $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py | $(VAPI_BINDIR)
28         $(WS_ROOT)/src/vpp-api/vapi/vapi_cpp_gen.py --prefix $(VAPI_BINDIR) $<
29
30 $(VAPI_CBIN): $(VAPI_BINDIR) $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
31         $(CC) -o $@ $(CFLAGS) $(CSRC) $(VAPI_LIBS)
32
33 $(VAPI_CBIN).d: $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
34         $(CC) -o $@ $(CFLAGS) -MM -MT '$(VAPI_CBIN)' $(CSRC) > $@
35
36
37 ifeq ($(filter rhel centos,$(OS_ID)),$(OS_ID))
38 VAPI_CPPBIN=
39 else
40 CPPSRC = $(TEST_EXT_DIR)/vapi_cpp_test.cpp
41
42 $(VAPI_CPPBIN): $(VAPI_BINDIR) $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
43         $(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(VAPI_LIBS)
44
45 $(VAPI_CPPBIN).d: $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
46         $(CXX) -o $@ $(CPPFLAGS) -MM -MT '$(VAPI_CPPBIN)' $(CPPSRC) > $@
47 endif
48
49 ifeq ($(filter yes,$(EXTENDED_TESTS)),$(EXTENDED_TESTS))
50 VOM_BIN = $(addprefix $(VOM_BINDIR), /vom_test)
51 VOM_CPPSRC = $(TEST_EXT_DIR)/vom_test.cpp
52
53 $(VOM_BINDIR):
54         @mkdir -p $(VOM_BINDIR)
55
56 LIB_VOM = -lvom
57 VOM_LIBS = \
58         -L$(VPP_INSTALL_PATH)/vom/lib \
59         -lvom                                           \
60         -lboost_thread                                  \
61         -lboost_system                                  \
62         -lboost_filesystem                              \
63         -lboost_unit_test_framework                     \
64         $(VAPI_LIBS)
65
66 VOM_CPPFLAGS = \
67         -I $(WS_ROOT)/src/vpp-api/ \
68         -DBOOST_LOG_DYN_LINK \
69         $(CPPFLAGS)
70
71 $(VOM_BIN): $(VOM_CPPSRC) $(VOM_BINDIR)
72         $(CXX) -o $@ $(VOM_CPPFLAGS) -O0 -g $(VOM_CPPSRC) $(VOM_LIBS) -Wl,-rpath,$(VPP_INSTALL_PATH)/vom/lib
73
74 $(VOM_BIN).d: $(VOM_CPPSRC) $(VOM_BINDIR)
75         $(CXX) -o $@ $(VOM_CPPFLAGS) -MM -MT '$(VOM_BIN)' $(VOM_CPPSRC) > $@
76 endif
77
78 .PHONY: test-apps
79 test-apps: $(VAPI_CBIN) $(VAPI_CPPBIN) $(VOM_BIN)
80
81 .PHONY: clean
82 clean:
83         @rm -rf $(VAPI_BINDIR) $(VOM_BINDIR)
84
85 ifneq ($(MAKECMDGOALS),clean)
86 -include $(VAPI_CBIN).d
87 ifneq ($(VAPI_CPPBIN),)
88 -include $(VAPI_CPPBIN).d
89 endif
90 ifneq ($(VOM_BIN),)
91 -include $(VOM_BIN).d
92 endif
93 endif