libexpand = $(subst $(subst ,, ),:,$(foreach lib,$(1),$(BR)/install-$(2)-native/vpp/$(lib)/$(3)))
define test
- $(if $(filter-out $(3),retest),make -C $(BR) PLATFORM=$(1) TAG=$(2) vpp-install,)
+ $(if $(filter-out $(3),retest),make -C $(BR) PLATFORM=$(1) TAG=$(2) vpp-install vom-install,)
$(eval libs:=lib lib64)
make -C test \
TEST_DIR=$(WS_ROOT)/test \
@make -C build-root PLATFORM=vpp TAG=vpp sample-plugin-install
$(call banner,"Building libmemif")
@make -C build-root PLATFORM=vpp TAG=vpp libmemif-install
+ $(call banner,"Building VOM")
+ @make -C build-root PLATFORM=vpp TAG=vpp vom-install
$(call banner,"Building $(PKG) packages")
@make pkg-$(PKG)
ifeq ($(OS_ID)-$(OS_VERSION_ID),ubuntu-16.04)
--- /dev/null
+vom_configure_depend = vpp-install
+vom_source = extras
+vom_configure_subdir = vom
+vom_CPPFLAGS = $(call installed_includes_fn, vpp)
+vom_LDFLAGS = $(call installed_libs_fn, vpp)
+
# Uncoment to enable building unit tests
# vpp_enable_tests = yes
-vpp_root_packages = vpp
+vpp_root_packages = vpp vom
# DPDK configuration parameters
# vpp_uses_dpdk_mlx5_pmd = yes
vpp_configure_args_vpp += --disable-lb-plugin
endif
-# To disable the VPP object model build - and save about half the build time -
-# uncomment the following...
-# vpp_configure_args_vpp += --disable-vom
-
vpp_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 \
-fstack-protector-all -fPIC -Werror
vpp_debug_TAG_CXXFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 \
--- /dev/null
+
+
+AUTOMAKE_OPTIONS = foreign subdir-objects
+
+SUBDIRS = vom
--- /dev/null
+AC_INIT(vom, 18.07)
+LT_INIT
+AM_INIT_AUTOMAKE
+AM_SILENT_RULES([yes])
+AC_PREFIX_DEFAULT([/usr])
+
+PKG_CHECK_MODULES([CHECK], [check], [HAVE_CHECK=1], [HAVE_CHECK=0])
+AM_CONDITIONAL([USE_CHECK],[test "$HAVE_CHECK" -eq 1])
+
+AC_PROG_CC
+AC_PROG_CXX
+
+AM_CONDITIONAL(ENABLE_ACL_PLUGIN, test "yes" = "yes")
+AM_CONDITIONAL(ENABLE_NAT_PLUGIN, test "yes" = "yes")
+AM_CONDITIONAL(ENABLE_L2E_PLUGIN, test "yes" = "yes")
+AM_CONDITIONAL(ENABLE_GBP_PLUGIN, test "yes" = "yes")
+
+AC_OUTPUT([Makefile vom/Makefile])
+
+AC_CONFIG_MACRO_DIR([m4])
ACLOCAL_AMFLAGS = -I m4
AM_LIBTOOLFLAGS = --quiet
-AM_CXXFLAGS = -Wall -Werror -std=gnu++11 -I${top_srcdir} -I${top_builddir}/vpp-api/vapi/ -I$(top_srcdir)/vpp-api/ -I${libdir}/../include
+AM_CXXFLAGS = -Wall -Werror -std=gnu++11 -I${top_srcdir}
bin_PROGRAMS =
noinst_LTLIBRARIES =
libvom_la_DEPENDENCIES =
libvom_la_LIBADD = \
- $(top_builddir)/vpp-api/vapi/libvapiclient.la \
+ -lvapiclient \
-lpthread \
-lboost_thread \
$(BOOST_SYSTEM_LIB) \
SUBDIRS += vpp-api/java
endif
-if ENABLE_VOM
-SUBDIRS += vpp-api/vom
-endif
-
###############################################################################
# API
###############################################################################
AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE([subdir-objects])
AM_SILENT_RULES([yes])
-AC_CONFIG_FILES([Makefile plugins/Makefile vpp-api/python/Makefile vpp-api/java/Makefile vpp-api/vapi/Makefile vpp-api/vom/Makefile])
+AC_CONFIG_FILES([Makefile plugins/Makefile vpp-api/python/Makefile vpp-api/java/Makefile vpp-api/vapi/Makefile])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_CC
-AC_PROG_CXX
AC_PROG_CPP
AM_PROG_AS
AM_PROG_LIBTOOL
-AC_PROG_YACC
AM_PATH_PYTHON
AM_CONDITIONAL([CROSSCOMPILE], [test "$cross_compiling" == "yes"])
DISABLE_ARG(svm, [Disable svm and dependant libs and binaries])
DISABLE_ARG(papi, [Disable Python API bindings])
DISABLE_ARG(japi, [Disable Java API bindings])
-DISABLE_ARG(vom, [Disable VPP object model bindings])
# --with-X
VAPI_CPPBIN=
endif
-VAPI_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
+VAPI_LIBS = \
+ -L$(VPP_TEST_INSTALL_PATH)/vpp/lib64 \
+ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
+
ifneq ($(filter centos opensuse,$(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$(VAPI_BINDIR)
-CPPFLAGS = -std=c++11 -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_INSTALL_PATH)/vpp/include -I$(VAPI_BINDIR)
-all: $(VAPI_CBIN) $(VAPI_CPPBIN) $(VOM_BINDIR) $(VOM_BIN)
+FLAGS = -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_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)
$(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) $(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 $(VAPI_BINDIR)/fake.api.vapi.h
+$(VAPI_CBIN): $(CSRC) $(VAPI_BINDIR)/fake.api.vapi.h
$(CC) -o $@ $(CFLAGS) $(CSRC) $(VAPI_LIBS)
+$(VAPI_CBIN).d: $(CSRC) $(VAPI_BINDIR)
+ $(CC) -o $@ $(CFLAGS) -MM -MT '$(VAPI_CBIN)' $(CSRC) > $@
+
+
CPPSRC = vapi_cpp_test.cpp
-$(VAPI_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 $(VAPI_BINDIR)/fake.api.vapi.hpp
+$(VAPI_CPPBIN): $(CPPSRC) $(VAPI_BINDIR)/fake.api.vapi.hpp
$(CXX) -o $@ $(CPPFLAGS) $(CPPSRC) $(VAPI_LIBS)
+$(VAPI_CPPBIN).d: $(CPPSRC) $(VAPI_BINDIR)
+ $(CXX) -o $@ $(CPPFLAGS) -MM -MT '$(VAPI_CPPBIN)' $(CPPSRC) > $@
+
VOM_CPPSRC = vom_test.cpp
$(VOM_BINDIR):
mkdir -p $(VOM_BINDIR)
-LIB_VOM = $(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vom/.libs/libvom.so
-VOM_LIBS = $(LIB_VOM) \
+LIB_VOM = -lvom
+VOM_LIBS = \
+ -L$(VPP_TEST_INSTALL_PATH)/vom/lib64 \
+ -lvom \
-lboost_thread \
-lboost_system \
-lboost_filesystem \
VOM_CPPFLAGS = \
-I $(WS_ROOT)/src/vpp-api/ \
+ -DBOOST_LOG_DYN_LINK \
$(CPPFLAGS)
-$(VOM_BIN): $(VOM_CPPSRC) $(VOM_BINDIR) $(LIB_VOM) $(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/libvapiclient.so
- $(CXX) -o $@ $(VOM_CPPFLAGS) -DBOOST_LOG_DYN_LINK -O0 -g $(VOM_CPPSRC) $(VOM_LIBS)
+$(VOM_BIN): $(VOM_CPPSRC) $(VOM_BINDIR)
+ $(CXX) -o $@ $(VOM_CPPFLAGS) -O0 -g $(VOM_CPPSRC) $(VOM_LIBS) -Wl,-rpath,$(VPP_TEST_INSTALL_PATH)/vom/lib64
+
+$(VOM_BIN).d: $(VOM_CPPSRC) $(VOM_BINDIR)
+ $(CXX) -o $@ $(VOM_CPPFLAGS) -MM -MT '$(VOM_BIN)' $(VOM_CPPSRC) > $@
+
clean:
rm -rf $(VAPI_BINDIR) $(VOM_BINDIR)
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(VAPI_CPPBIN).d
+-include $(VAPI_CBIN).d
+-include $(VOM_BIN).d
+endif
+