aboutsummaryrefslogtreecommitdiffstats
path: root/vpp/build-data
diff options
context:
space:
mode:
Diffstat (limited to 'vpp/build-data')
-rw-r--r--vpp/build-data/packages/cavium-dpdk.mk55
-rw-r--r--vpp/build-data/packages/dpdk.mk44
-rw-r--r--vpp/build-data/packages/g2.mk5
-rw-r--r--vpp/build-data/packages/gmod.mk9
-rw-r--r--vpp/build-data/packages/perftool.mk5
-rw-r--r--vpp/build-data/packages/plugins.mk45
-rw-r--r--vpp/build-data/packages/svm.mk5
-rw-r--r--vpp/build-data/packages/vlib-api-cavium-dpdk.mk6
-rw-r--r--vpp/build-data/packages/vlib-api.mk4
-rw-r--r--vpp/build-data/packages/vlib-cavium-dpdk.mk7
-rw-r--r--vpp/build-data/packages/vlib.mk16
-rw-r--r--vpp/build-data/packages/vnet-cavium-dpdk.mk29
-rw-r--r--vpp/build-data/packages/vnet.mk44
-rw-r--r--vpp/build-data/packages/vpp-api-test-cavium-dpdk.mk32
-rw-r--r--vpp/build-data/packages/vpp-api-test.mk39
-rw-r--r--vpp/build-data/packages/vpp-api.mk23
-rw-r--r--vpp/build-data/packages/vpp-cavium-dpdk.mk30
-rw-r--r--vpp/build-data/packages/vpp-platform-scripts.mk1
-rw-r--r--vpp/build-data/packages/vpp.mk51
-rw-r--r--vpp/build-data/packages/vppinfra.mk5
-rw-r--r--vpp/build-data/platforms.mk105
-rw-r--r--vpp/build-data/platforms/arm32.mk45
-rw-r--r--vpp/build-data/platforms/dpaa2.mk66
-rw-r--r--vpp/build-data/platforms/qppc.mk34
-rw-r--r--vpp/build-data/platforms/thunder.mk36
-rw-r--r--vpp/build-data/platforms/vpp.mk68
-rw-r--r--vpp/build-data/platforms/vpp_lite.mk51
-rw-r--r--vpp/build-data/suffix-rules.mk27
28 files changed, 887 insertions, 0 deletions
diff --git a/vpp/build-data/packages/cavium-dpdk.mk b/vpp/build-data/packages/cavium-dpdk.mk
new file mode 100644
index 00000000..ce8ee228
--- /dev/null
+++ b/vpp/build-data/packages/cavium-dpdk.mk
@@ -0,0 +1,55 @@
+# Temporary until Cavium upstreams their work
+
+cavium-dpdk_configure = \
+ src_dir=$(call find_source_fn,$(PACKAGE_SOURCE)) ; \
+ dst_dir=$(PACKAGE_BUILD_DIR) ; \
+ tar -C $${src_dir} -cf - . | tar -C $${dst_dir} -xf - ; \
+ cd $${dst_dir} ; \
+ : colossal hemorrhoid to configure headroom ; \
+ if [ x$($(PACKAGE)_configure_args_$(PLATFORM)) = "x" ] ; then \
+ HR=256 ; \
+ else \
+ dpdk_configure_args=$($(PACKAGE)_configure_args_$(PLATFORM)) ; \
+ if [ $$dpdk_configure_args = "--with-headroom=256" ] ; then \
+ HR=256 ; \
+ elif [ $$dpdk_configure_args = "--with-headroom=384" ] ; then \
+ HR=384 ; \
+ else \
+ HR=256 ; \
+ fi ; \
+ fi ; \
+ env HR=$$HR \
+ spp -o \
+ $(PACKAGE_BUILD_DIR)/config/common_linuxapp \
+ $(PACKAGE_BUILD_DIR)/config/common_linuxapp.spp \
+ ; \
+ env $(CONFIGURE_ENV) \
+ make config T=arm64-thunderx-linuxapp-gcc RTE_ARCH=arm64 \
+ CC=aarch64-thunderx-linux-gnu-gcc V=0 \
+ RTE_SDK=$(PACKAGE_BUILD_DIR) \
+ RTE_TARGET=arm-default-linuxapp-gcc
+
+# Note: add e.g. "-O0" to EXTRA_CFLAGS if desired: EXTRA_CFLAGS='-g -O0'
+
+cavium-dpdk_make_args = install T=arm64-thunderx-linuxapp-gcc RTE_ARCH=arm64 \
+ CC=aarch64-thunderx-linux-gnu-gcc V=0 \
+ RTE_SDK=$(PACKAGE_BUILD_DIR) \
+ RTE_TARGET=arm-default-linuxapp-gcc
+
+cavium-dpdk_install = \
+ src_dir=$(PACKAGE_BUILD_DIR) ; \
+ dst_dir=$(PACKAGE_INSTALL_DIR) ; \
+ tar -h -C $${src_dir}/arm64-thunderx-linuxapp-gcc -cf - . \
+ | tar -C $${dst_dir} -xf -
+
+# dpdk libraries end up in .../lib not .../lib64. Fix it.
+cavium-dpdk_post_install = \
+ if [ "$(arch_lib_dir)" != "lib" ] ; then \
+ mkdir -p $(PACKAGE_INSTALL_DIR)/$(arch_lib_dir) ; \
+ cd $(PACKAGE_INSTALL_DIR)/lib ; \
+ tar cf - . | ( cd $(PACKAGE_INSTALL_DIR)/$(arch_lib_dir); tar xf - ) ; \
+ fi
+
+# nothing to install, all static libraries
+cavium-dpdk_image_include = echo
+
diff --git a/vpp/build-data/packages/dpdk.mk b/vpp/build-data/packages/dpdk.mk
new file mode 100644
index 00000000..a529e365
--- /dev/null
+++ b/vpp/build-data/packages/dpdk.mk
@@ -0,0 +1,44 @@
+
+DPDK_MARCH = $(strip $($(PLATFORM)_dpdk_arch))
+ifeq ($(DPDK_MARCH),)
+ DPDK_MARCH="native"
+endif
+
+DPDK_TUNE = $(strip $($(PLATFORM)_mtune))
+ifeq ($(DPDK_TUNE),)
+ DPDK_TUNE="generic"
+endif
+
+ifneq (,$(findstring debug,$(TAG)))
+ DPDK_DEBUG=y
+else
+ DPDK_DEBUG=n
+endif
+
+DPDK_MAKE_ARGS = -C $(call find_source_fn,$(PACKAGE_SOURCE)) \
+ DPDK_BUILD_DIR=$(PACKAGE_BUILD_DIR) \
+ DPDK_INSTALL_DIR=$(PACKAGE_INSTALL_DIR) \
+ DPDK_MARCH=$(DPDK_MARCH) \
+ DPDK_TUNE=$(DPDK_TUNE) \
+ DPDK_DEBUG=$(DPDK_DEBUG)
+
+DPDK_CRYPTO_PMD=$(strip $($(PLATFORM)_uses_dpdk_cryptodev))
+ifneq ($(DPDK_CRYPTO_PMD),)
+DPDK_MAKE_ARGS += DPDK_CRYPTO_PMD=y
+endif
+
+DPDK_PLATFORM_TARGET=$(strip $($(PLATFORM)_dpdk_target))
+ifneq ($(DPDK_PLATFORM_TARGET),)
+DPDK_MAKE_ARGS += DPDK_TARGET=$(DPDK_PLATFORM_TARGET)
+endif
+
+DPDK_MAKE_EXTRA_ARGS = $(strip $($(PLATFORM)_dpdk_make_extra_args))
+ifneq ($(DPDK_MAKE_EXTRA_ARGS),)
+DPDK_MAKE_ARGS += DPDK_MAKE_EXTRA_ARGS="$(DPDK_MAKE_EXTRA_ARGS)"
+endif
+
+dpdk_configure = echo
+
+dpdk_make_args = $(DPDK_MAKE_ARGS) config
+
+dpdk_install = make $(DPDK_MAKE_ARGS) build
diff --git a/vpp/build-data/packages/g2.mk b/vpp/build-data/packages/g2.mk
new file mode 100644
index 00000000..258eff1d
--- /dev/null
+++ b/vpp/build-data/packages/g2.mk
@@ -0,0 +1,5 @@
+g2_configure_depend = vppinfra-install
+
+g2_CPPFLAGS = $(call installed_includes_fn, vppinfra)
+
+g2_LDFLAGS = $(call installed_libs_fn, vppinfra)
diff --git a/vpp/build-data/packages/gmod.mk b/vpp/build-data/packages/gmod.mk
new file mode 100644
index 00000000..a6ba42d0
--- /dev/null
+++ b/vpp/build-data/packages/gmod.mk
@@ -0,0 +1,9 @@
+gmod_configure_depend = vppinfra-install svm-install
+
+gmod_configure_args = --libdir=$(PACKAGE_INSTALL_DIR)/$(arch_lib_dir)/ganglia
+
+gmod_CPPFLAGS = $(call installed_includes_fn, vppinfra svm)
+gmod_CPPFLAGS += -I/usr/include/apr-1.0 -I/usr/include/apr-1 -I/usr/include
+gmod_LDFLAGS = $(call installed_libs_fn, vppinfra svm)
+
+gmod_image_include = echo $(arch_lib_dir)/ganglia/libgmodvpp.so etc
diff --git a/vpp/build-data/packages/perftool.mk b/vpp/build-data/packages/perftool.mk
new file mode 100644
index 00000000..300f902b
--- /dev/null
+++ b/vpp/build-data/packages/perftool.mk
@@ -0,0 +1,5 @@
+perftool_configure_depend = vppinfra-install
+
+perftool_CPPFLAGS = $(call installed_includes_fn, vppinfra)
+
+perftool_LDFLAGS = $(call installed_libs_fn, vppinfra)
diff --git a/vpp/build-data/packages/plugins.mk b/vpp/build-data/packages/plugins.mk
new file mode 100644
index 00000000..44a8e2bd
--- /dev/null
+++ b/vpp/build-data/packages/plugins.mk
@@ -0,0 +1,45 @@
+plugins_configure_depend = \
+ vppinfra-install \
+ vlib-api-install \
+ vpp-api-test-install \
+ vnet-install \
+ vlib-install \
+ vpp-api-install
+
+plugins_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ vlib \
+ vnet \
+ svm \
+ vpp-api-test \
+ vlib-api \
+ vpp-api)
+
+plugins_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ vlib \
+ vlib-api)
+
+ifeq ($($(PLATFORM)_enable_tests),yes)
+plugins_configure_args += --enable-tests
+endif
+
+# Platform dependent configure flags
+plugins_configure_args += $(plugins_configure_args_$(PLATFORM))
+
+# include & link with openssl only if needed
+ifneq ($($(PLATFORM)_uses_openssl),no)
+plugins_CPPFLAGS += $(call installed_includes_fn, openssl)
+plugins_LDFLAGS += $(call installed_libs_fn, openssl)
+endif
+
+ifneq ($($(PLATFORM)_uses_dpdk),no)
+ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
+plugins_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
+plugins_LDFLAGS += -L$($(PLATFORM)_dpdk_lib_dir)
+else
+plugins_configure_depend += dpdk-install
+plugins_CPPFLAGS += $(call installed_includes_fn, dpdk)
+plugins_LDFLAGS += $(call installed_libs_fn, dpdk)
+endif
+endif
diff --git a/vpp/build-data/packages/svm.mk b/vpp/build-data/packages/svm.mk
new file mode 100644
index 00000000..3971fe82
--- /dev/null
+++ b/vpp/build-data/packages/svm.mk
@@ -0,0 +1,5 @@
+svm_top_srcdir = $(call find_source_fn,svm)
+svm_configure_depend = vppinfra-install
+
+svm_CPPFLAGS = $(call installed_includes_fn, vppinfra)
+svm_LDFLAGS = $(call installed_libs_fn, vppinfra)
diff --git a/vpp/build-data/packages/vlib-api-cavium-dpdk.mk b/vpp/build-data/packages/vlib-api-cavium-dpdk.mk
new file mode 100644
index 00000000..7a4fe2cd
--- /dev/null
+++ b/vpp/build-data/packages/vlib-api-cavium-dpdk.mk
@@ -0,0 +1,6 @@
+vlib-api-cavium-dpdk_source = vlib-api
+
+vlib-api-cavium-dpdk_configure_depend = vppinfra-install svm-install vlib-cavium-dpdk-install
+
+vlib-api-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, vppinfra svm vlib-cavium-dpdk)
+vlib-api-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, vppinfra svm vlib-cavium-dpdk)
diff --git a/vpp/build-data/packages/vlib-api.mk b/vpp/build-data/packages/vlib-api.mk
new file mode 100644
index 00000000..29b0d17d
--- /dev/null
+++ b/vpp/build-data/packages/vlib-api.mk
@@ -0,0 +1,4 @@
+vlib-api_configure_depend = vppinfra-install svm-install vlib-install
+
+vlib-api_CPPFLAGS = $(call installed_includes_fn, vppinfra svm vlib)
+vlib-api_LDFLAGS = $(call installed_libs_fn, vppinfra svm vlib)
diff --git a/vpp/build-data/packages/vlib-cavium-dpdk.mk b/vpp/build-data/packages/vlib-cavium-dpdk.mk
new file mode 100644
index 00000000..0f2f132d
--- /dev/null
+++ b/vpp/build-data/packages/vlib-cavium-dpdk.mk
@@ -0,0 +1,7 @@
+vlib-cavium-dpdk_source = vlib
+vlib-cavium-dpdk_configure_depend = vppinfra-install cavium-dpdk-install
+
+vlib-cavium-dpdk_configure_args += --with-dpdk
+
+vlib-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, vppinfra cavium-dpdk)
+vlib-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, vppinfra cavium-dpdk)
diff --git a/vpp/build-data/packages/vlib.mk b/vpp/build-data/packages/vlib.mk
new file mode 100644
index 00000000..2172708d
--- /dev/null
+++ b/vpp/build-data/packages/vlib.mk
@@ -0,0 +1,16 @@
+vlib_configure_depend = vppinfra-install
+
+vlib_CPPFLAGS = $(call installed_includes_fn, vppinfra)
+vlib_LDFLAGS = $(call installed_libs_fn, vppinfra)
+
+ifneq ($($(PLATFORM)_uses_dpdk),no)
+vlib_configure_args += --with-dpdk
+ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
+vlib_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
+vlib_LDFLAGS += -L$($(PLATFORM)_dpdk_lib_dir)
+else
+vlib_configure_depend += dpdk-install
+vlib_CPPFLAGS += $(call installed_includes_fn, dpdk)
+vlib_LDFLAGS += $(call installed_libs_fn, dpdk)
+endif
+endif
diff --git a/vpp/build-data/packages/vnet-cavium-dpdk.mk b/vpp/build-data/packages/vnet-cavium-dpdk.mk
new file mode 100644
index 00000000..4c35b04d
--- /dev/null
+++ b/vpp/build-data/packages/vnet-cavium-dpdk.mk
@@ -0,0 +1,29 @@
+vnet-cavium-dpdk_source = vnet
+
+vnet-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install
+
+
+vnet-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk)
+
+vnet-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk)
+
+# Platform dependent configure flags
+vnet-cavium-dpdk_configure_args += $(vnet-cavium-dpdk_configure_args_$(PLATFORM))
+
diff --git a/vpp/build-data/packages/vnet.mk b/vpp/build-data/packages/vnet.mk
new file mode 100644
index 00000000..399ca1b4
--- /dev/null
+++ b/vpp/build-data/packages/vnet.mk
@@ -0,0 +1,44 @@
+vnet_configure_depend = \
+ vppinfra-install \
+ svm-install \
+ vlib-api-install \
+ vlib-install
+
+vnet_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api)
+
+vnet_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api)
+
+ifeq ($($(PLATFORM)_enable_tests),yes)
+vnet_configure_args += --enable-tests
+endif
+
+# Platform dependent configure flags
+vnet_configure_args += $(vnet_configure_args_$(PLATFORM))
+
+# include & link with openssl only if needed
+ifneq ($($(PLATFORM)_uses_openssl),no)
+vnet_CPPFLAGS += $(call installed_includes_fn, openssl)
+vnet_LDFLAGS += $(call installed_libs_fn, openssl)
+endif
+
+ifneq ($($(PLATFORM)_uses_dpdk),no)
+ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
+vnet_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
+vnet_LDFLAGS += -L$($(PLATFORM)_dpdk_lib_dir)
+else
+vnet_configure_depend += dpdk-install
+vnet_CPPFLAGS += $(call installed_includes_fn, dpdk)
+vnet_LDFLAGS += $(call installed_libs_fn, dpdk)
+endif
+ifeq ($($(PLATFORM)_uses_dpdk_cryptodev),yes)
+vnet_configure_args += --with-dpdk-crypto
+endif
+endif
diff --git a/vpp/build-data/packages/vpp-api-test-cavium-dpdk.mk b/vpp/build-data/packages/vpp-api-test-cavium-dpdk.mk
new file mode 100644
index 00000000..e352317f
--- /dev/null
+++ b/vpp/build-data/packages/vpp-api-test-cavium-dpdk.mk
@@ -0,0 +1,32 @@
+vpp-api-test-cavium-dpdk_source = vpp-api-test
+
+vpp-api-test-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install \
+ vnet-cavium-dpdk-install \
+ vpp-cavium-dpdk-install
+
+#
+vpp-api-test-cavium-dpdk_configure_args = --with-dpdk
+
+vpp-api-test-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk \
+ vpp-cavium-dpdk)
+
+vpp-api-test-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk \
+ vpp-cavium-dpdk)
+
diff --git a/vpp/build-data/packages/vpp-api-test.mk b/vpp/build-data/packages/vpp-api-test.mk
new file mode 100644
index 00000000..c9eae367
--- /dev/null
+++ b/vpp/build-data/packages/vpp-api-test.mk
@@ -0,0 +1,39 @@
+vpp-api-test_configure_depend = \
+ vppinfra-install \
+ svm-install \
+ vlib-api-install \
+ vlib-install \
+ vnet-install \
+ vpp-install
+
+vpp-api-test_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api \
+ vnet \
+ vpp)
+
+vpp-api-test_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api \
+ vnet \
+ vpp)
+
+ifneq ($($(PLATFORM)_uses_dpdk),no)
+vpp-api-test_configure_args = --with-dpdk
+ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
+vpp-api-test_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
+vpp-api-test_LDFLAGS += -L$($(PLATFORM)_dpdk_lib_dir)
+else
+vpp-api-test_configure_depend += dpdk-install
+vpp-api-test_CPPFLAGS += $(call installed_includes_fn, dpdk)
+vpp-api-test_LDFLAGS += $(call installed_libs_fn, dpdk)
+endif
+endif
+ifeq ($($(PLATFORM)_uses_dpdk_cryptodev),yes)
+vpp-api-test_configure_args += --with-dpdk-crypto
+endif
+
diff --git a/vpp/build-data/packages/vpp-api.mk b/vpp/build-data/packages/vpp-api.mk
new file mode 100644
index 00000000..4937023a
--- /dev/null
+++ b/vpp/build-data/packages/vpp-api.mk
@@ -0,0 +1,23 @@
+vpp-api_configure_depend = \
+ vppinfra-install \
+ svm-install \
+ vlib-api-install \
+ vlib-install \
+ vnet-install \
+ vpp-install
+
+vpp-api_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api \
+ vnet \
+ vpp)
+
+vpp-api_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api)
+
+vpp-api_CPPFLAGS += -I/usr/lib/jvm/java-8-openjdk-amd64/include
diff --git a/vpp/build-data/packages/vpp-cavium-dpdk.mk b/vpp/build-data/packages/vpp-cavium-dpdk.mk
new file mode 100644
index 00000000..704e3a95
--- /dev/null
+++ b/vpp/build-data/packages/vpp-cavium-dpdk.mk
@@ -0,0 +1,30 @@
+vpp-cavium-dpdk_source = vpp
+
+vpp-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install \
+ vnet-cavium-dpdk-install
+
+# Platform dependent configure flags
+vpp-cavium-dpdk_configure_args += $(vpp-cavium-dpdk_configure_args_$(PLATFORM))
+
+vpp-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk)
+
+vpp-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk)
diff --git a/vpp/build-data/packages/vpp-platform-scripts.mk b/vpp/build-data/packages/vpp-platform-scripts.mk
new file mode 100644
index 00000000..792d6005
--- /dev/null
+++ b/vpp/build-data/packages/vpp-platform-scripts.mk
@@ -0,0 +1 @@
+#
diff --git a/vpp/build-data/packages/vpp.mk b/vpp/build-data/packages/vpp.mk
new file mode 100644
index 00000000..6831c6b8
--- /dev/null
+++ b/vpp/build-data/packages/vpp.mk
@@ -0,0 +1,51 @@
+vpp_configure_depend = \
+ vppinfra-install \
+ svm-install \
+ vlib-api-install \
+ vlib-install \
+ vnet-install \
+
+#
+ifeq ($($(PLATFORM)_dpdk_shared_lib),yes)
+vpp_configure_args = --enable-dpdk-shared
+else
+vpp_configure_args =
+endif
+
+# Platform dependent configure flags
+vpp_configure_args += $(vpp_configure_args_$(PLATFORM))
+
+
+vpp_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api \
+ vnet)
+
+vpp_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ svm \
+ vlib \
+ vlib-api \
+ vnet)
+
+# include & link with openssl only if needed
+ifneq ($($(PLATFORM)_uses_openssl),no)
+vpp_CPPFLAGS += $(call installed_includes_fn, openssl)
+vpp_LDFLAGS += $(call installed_libs_fn, openssl)
+endif
+
+ifneq ($($(PLATFORM)_uses_dpdk),no)
+ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
+vpp_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
+vpp_LDFLAGS += -L$($(PLATFORM)_dpdk_lib_dir)
+else
+vpp_configure_depend += dpdk-install
+vpp_CPPFLAGS += $(call installed_includes_fn, dpdk)
+vpp_LDFLAGS += $(call installed_libs_fn, dpdk)
+endif
+ifeq ($($(PLATFORM)_uses_dpdk_cryptodev),yes)
+vpp_configure_args += --with-dpdk-crypto
+endif
+endif
diff --git a/vpp/build-data/packages/vppinfra.mk b/vpp/build-data/packages/vppinfra.mk
new file mode 100644
index 00000000..6ca6eb24
--- /dev/null
+++ b/vpp/build-data/packages/vppinfra.mk
@@ -0,0 +1,5 @@
+
+ifeq ($($(PLATFORM)_enable_tests),yes)
+vppinfra_configure_args += --enable-tests
+endif
+
diff --git a/vpp/build-data/platforms.mk b/vpp/build-data/platforms.mk
new file mode 100644
index 00000000..a568c7a0
--- /dev/null
+++ b/vpp/build-data/platforms.mk
@@ -0,0 +1,105 @@
+# Copyright (c) 2015 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Pick up per-platform makefile fragments
+$(foreach d,$(SOURCE_PATH_BUILD_DATA_DIRS), \
+ $(eval -include $(d)/platforms/*.mk))
+
+.PHONY: install-deb
+install-deb: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
+ @$(BUILD_ENV) ; \
+ set -eu$(BUILD_DEBUG) ; \
+ $(MAKE) -C $(MU_BUILD_ROOT_DIR) \
+ $(patsubst %,%-install, \
+ $(ROOT_PACKAGES)) || exit 1; \
+ \
+ : generate file manifests ; \
+ find $(INSTALL_PREFIX)$(ARCH)/*/bin -type f -print \
+ | sed -e 's:.*:../& /usr/bin:' \
+ > deb/debian/vpp.install ; \
+ \
+ : core api definitions ; \
+ ./scripts/find-api-core-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp.install ; \
+ \
+ : need symbolic links in the lib pkg ; \
+ find $(INSTALL_PREFIX)$(ARCH)/*/lib* \( -type f -o -type l \) \
+ -print | egrep -e '*\.so\.*\.*\.*' \
+ | grep -v plugins\/ \
+ | sed -e 's:.*:../& /usr/lib/x86_64-linux-gnu:' \
+ > deb/debian/vpp-lib.install ; \
+ \
+ : vnet api definitions ; \
+ ./scripts/find-api-lib-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp-lib.install ; \
+ \
+ : dev package ; \
+ ./scripts/find-dev-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp-dev.install ; \
+ \
+ : plugins package ; \
+ ./scripts/find-plugins-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp-plugins.install ; \
+ \
+ : python-api package ; \
+ ./scripts/find-python-api-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp-python-api.install ; \
+ \
+ : dpdk headers ; \
+ ./scripts/find-dpdk-contents $(INSTALL_PREFIX)$(ARCH) \
+ deb/debian/vpp-dpdk-dev.install ; \
+ \
+ : bin package needs startup config ; \
+ echo ../../vpp/conf/startup.conf /etc/vpp \
+ >> deb/debian/vpp.install ; \
+ \
+ : and sysctl config ; \
+ echo ../../vpp/conf/80-vpp.conf /etc/sysctl.d \
+ >> deb/debian/vpp.install ; \
+ \
+ : dev package needs a couple of additions ; \
+ echo ../build-tool-native/vppapigen/vppapigen /usr/bin \
+ >> deb/debian/vpp-dev.install ; \
+ echo ../../vpp-api/java/jvpp/gen/jvpp_gen.py /usr/bin \
+ >> deb/debian/vpp-dev.install ; \
+ for i in $$(ls ../vpp-api/java/jvpp/gen/jvppgen/*.py); do \
+ echo ../$${i} /usr/lib/python2.7/dist-packages/jvppgen \
+ >> deb/debian/vpp-dev.install; \
+ done; \
+ \
+ : generate changelog; \
+ ./scripts/generate-deb-changelog \
+ \
+ : Go fabricate the actual Debian packages ; \
+ ( \
+ cd deb && \
+ dpkg-buildpackage -us -uc -b \
+ )
+
+.PHONY: install-rpm
+install-rpm: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
+ @$(BUILD_ENV) ; \
+ set -eu$(BUILD_DEBUG) ; \
+ $(MAKE) -C $(MU_BUILD_ROOT_DIR) \
+ $(patsubst %,%-install, \
+ $(ROOT_PACKAGES)) || exit 1; \
+ \
+ cd rpm ; \
+ mkdir -p SOURCES ; \
+ if test -f *.tar.gz ; then mv *.tar.gz SOURCES ; fi ; \
+ rpmbuild -bb --define "_topdir $$PWD" --define \
+ "_install_dir $(INSTALL_PREFIX)$(ARCH)" \
+ --define "_mu_build_root_dir $(MU_BUILD_ROOT_DIR)" \
+ vpp.spec ; \
+ mv $$(find RPMS -name \*.rpm -type f) ..
+
diff --git a/vpp/build-data/platforms/arm32.mk b/vpp/build-data/platforms/arm32.mk
new file mode 100644
index 00000000..7b80061b
--- /dev/null
+++ b/vpp/build-data/platforms/arm32.mk
@@ -0,0 +1,45 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# vector packet processor
+arm32_arch = native
+arm32_native_tools = vppapigen
+
+arm32_uses_dpdk = yes
+arm32_uses_openssl = no
+
+arm32_root_packages = vpp vlib vlib-api vnet svm vpp-api-test \
+ jvpp gmod
+
+vlib_configure_args_arm32 = --with-pre-data=128
+vnet_configure_args_arm32 = --with-dpdk --without-ipsec --without-ipv6sr
+vpp_configure_args_arm32 = --with-dpdk --without-ipsec --without-ipv6sr
+
+arm32_dpdk_arch = "armv7a"
+arm32_dpdk_target = "arm-armv7a-linuxapp-gcc"
+arm32_dpdk_make_extra_args = "CPU_CFLAGS='-mfloat-abi=hard' \
+ CONFIG_RTE_EAL_IGB_UIO=y \
+ CONFIG_RTE_LIBRTE_E1000_PMD=y \
+ CONFIG_RTE_MAX_LCORE=4 \
+ CONFIG_RTE_MAX_NUMA_NODES=1"
+
+
+arm32_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
+ -fstack-protector-all -fPIC -Werror
+arm32_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
+ -fstack-protector-all -fPIC -Werror
+
+arm32_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
+ -fstack-protector -fPIC -Werror
+arm32_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
+ -fstack-protector -fPIC -Werror
diff --git a/vpp/build-data/platforms/dpaa2.mk b/vpp/build-data/platforms/dpaa2.mk
new file mode 100644
index 00000000..0ec627a4
--- /dev/null
+++ b/vpp/build-data/platforms/dpaa2.mk
@@ -0,0 +1,66 @@
+# Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Configuration for NXP DPAA2 ARM64 based platform
+dpaa2_arch = aarch64
+dpaa2_os = linux-gnu
+dpaa2_target = aarch64-linux-gnu
+dpaa2_mtune = cortex-A57
+dpaa2_march = "armv8-a+fp+simd+crc+crypto"
+dpaa2_cross_ldflags = \
+ -Wl,--dynamic-linker=/lib/ld-linux-aarch64.so.1 \
+ -Wl,-rpath=/usr/lib64
+
+dpaa2_native_tools = vppapigen
+dpaa2_root_packages = vpp vlib vlib-api vnet svm vpp-api-test
+
+# DPDK configuration parameters
+dpaa2_uses_dpdk = yes
+# Compile with external DPDK only if "DPDK_PATH" variable is defined where we have
+# installed DPDK libraries and headers.
+ifeq ($(PLATFORM),dpaa2)
+ifneq ($(DPDK_PATH),)
+dpaa2_uses_dpdk = yes
+dpaa2_uses_external_dpdk = yes
+dpaa2_dpdk_inc_dir = $(DPDK_PATH)/include/dpdk
+dpaa2_dpdk_lib_dir = $(DPDK_PATH)/lib
+else
+# compile using internal DPDK + NXP DPAA2 Driver patch
+dpaa2_dpdk_arch = "armv8a"
+dpaa2_dpdk_target = "arm64-dpaa2-linuxapp-gcc"
+dpaa2_dpdk_make_extra_args = "CROSS=$(dpaa2_target)- DPDK_PKTMBUF_HEADROOM=256"
+endif
+endif
+
+vpp_configure_args_dpaa2 = --with-dpdk --without-ipsec \
+ --without-ipv6sr --with-sysroot=$(SYSROOT)
+vnet_configure_args_dpaa2 = --with-dpdk --without-ipsec \
+ --without-ipv6sr --with-sysroot=$(SYSROOT)
+
+# Set these parameters carefully. The vlib_buffer_t is 256 bytes, i.e.
+vlib_configure_args_dpaa2 = --with-pre-data=256
+
+
+dpaa2_debug_TAG_CFLAGS = -g -O2 -DCLIB_DEBUG -fPIC -fstack-protector-all \
+ -march=$(MARCH) -Werror -DCLIB_LOG2_CACHE_LINE_BYTES=6
+dpaa2_debug_TAG_LDFLAGS = -g -O2 -DCLIB_DEBUG -fstack-protector-all \
+ -march=$(MARCH) -Werror -DCLIB_LOG2_CACHE_LINE_BYTES=6
+
+# Use -rdynamic is for stack tracing, O0 for debugging....default is O2
+# Use -DCLIB_LOG2_CACHE_LINE_BYTES to change cache line size
+dpaa2_TAG_CFLAGS = -g -O2 -fPIC -march=$(MARCH) -mcpu=$(dpaa2_mtune) \
+ -mtune=$(dpaa2_mtune) -funroll-all-loops -Werror -DCLIB_LOG2_CACHE_LINE_BYTES=6
+dpaa2_TAG_LDFLAGS = -g -O2 -fPIC -march=$(MARCH) -mcpu=$(dpaa2_mtune) \
+ -mtune=$(dpaa2_mtune) -funroll-all-loops -Werror -DCLIB_LOG2_CACHE_LINE_BYTES=6
+
+
diff --git a/vpp/build-data/platforms/qppc.mk b/vpp/build-data/platforms/qppc.mk
new file mode 100644
index 00000000..244747e7
--- /dev/null
+++ b/vpp/build-data/platforms/qppc.mk
@@ -0,0 +1,34 @@
+# Qemu "p-series" powerpc64
+
+qppc_os = linux-gnu
+
+qppc_cross_ldflags = \
+ -Wl,--dynamic-linker=/lib64/ld64.so.1
+
+qppc_arch = powerpc
+
+qppc_root_packages = vppinfra vlib vlib-api vnet svm \
+ vpp vpp-api-test
+
+vnet_configure_args_qppc = \
+ --without-ipsec --without-ipv6sr
+
+vpp_configure_args_qppc = \
+ --without-ipsec --without-ipv6sr
+
+vlib_configure_args_qppc = --with-pre-data=128
+
+qppc_march=powerpc64
+
+# native tool chain additions for this platform
+qppc_native_tools = vppapigen
+
+qppc_uses_dpdk = no
+
+qppc_debug_TAG_CFLAGS = -m64 -g -O0 -DCLIB_DEBUG -DCLIB_LOG2_CACHE_LINE_BYTES=6 -maltivec
+qppc_debug_TAG_LDFLAGS = -m64 -g -O0 -DCLIB_DEBUG -DCLIB_LOG2_CACHE_LINE_BYTES=6 -maltivec
+
+qppc_TAG_CFLAGS = -m64 -g -O2 -DCLIB_LOG2_CACHE_LINE_BYTES=6 -maltivec
+qppc_TAG_LDFLAGS = -m64 -g -O2 -DCLIB_LOG2_CACHE_LINE_BYTES=6 -maltivec
+
+
diff --git a/vpp/build-data/platforms/thunder.mk b/vpp/build-data/platforms/thunder.mk
new file mode 100644
index 00000000..f891f4a1
--- /dev/null
+++ b/vpp/build-data/platforms/thunder.mk
@@ -0,0 +1,36 @@
+# Override OS so we can use the sdk toolchain instead of building one
+thunder_os = thunderx-linux-gnu
+
+# Override CROSS_LDFLAGS so we can use
+# /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 instead of building glibc
+thunder_cross_ldflags = \
+ -Wl,--dynamic-linker=/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 \
+ -Wl,-rpath -Wl,$(lots_of_slashes_to_pad_names)$(TOOL_INSTALL_LIB_DIR)
+
+thunder_arch = aarch64
+# suppress -march=foo, the cross compiler doesn't understand it
+thunder_march = " "
+
+thunder_root_packages = vppinfra vlib-cavium-dpdk vnet-cavium-dpdk cavium-dpdk \
+ vpp-cavium-dpdk vpp-api-test-cavium-dpdk
+
+vnet-cavium-dpdk_configure_args_thunder = \
+ --with-dpdk --without-ipsec --without-ipv6sr
+
+vpp-cavium-dpdk_configure_args_thunder = \
+ --with-dpdk --without-ipsec --without-ipv6sr
+
+cavium-dpdk_configure_args_thunder = --with-headroom=256
+
+vlib-cavium-dpdk_configure_args_thunder = --with-pre-data=128
+
+# native tool chain additions for this platform
+thunder_native_tools = vppapigen
+
+thunder_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG
+thunder_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG
+
+thunder_TAG_CFLAGS = -g -O2
+thunder_TAG_LDFLAGS = -g -O2
+
+
diff --git a/vpp/build-data/platforms/vpp.mk b/vpp/build-data/platforms/vpp.mk
new file mode 100644
index 00000000..15d4dc39
--- /dev/null
+++ b/vpp/build-data/platforms/vpp.mk
@@ -0,0 +1,68 @@
+# Copyright (c) 2015 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# vector packet processor
+vpp_arch = native
+ifeq ($(shell uname -m),x86_64)
+vpp_march = corei7 # Nehalem Instruction set
+vpp_mtune = corei7-avx # Optimize for Sandy Bridge
+vpp_dpdk_arch = corei7
+else
+vpp_march = native
+vpp_mtune = generic
+vpp_dpdk_arch = native
+endif
+vpp_native_tools = vppapigen
+
+vpp_uses_dpdk = yes
+
+# Uncoment to enable building unit tests
+# vpp_enable_tests = yes
+
+vpp_root_packages = vpp vlib vlib-api vnet svm vpp-api-test \
+ vpp-api gmod plugins
+
+vpp_configure_args_vpp = --with-dpdk
+vnet_configure_args_vpp = --with-dpdk
+
+# Set these parameters carefully. The vlib_buffer_t is 128 bytes, i.e.
+vlib_configure_args_vpp = --with-pre-data=128
+
+plugins_configure_args_vpp = --with-dpdk
+
+# DPDK configuration parameters
+# vpp_uses_dpdk_cryptodev = yes
+# vpp_uses_external_dpdk = yes
+# vpp_dpdk_inc_dir = /usr/include/dpdk
+# vpp_dpdk_lib_dir = /usr/lib
+# vpp_dpdk_shared_lib = yes
+
+vpp_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
+ -fstack-protector-all -fPIC -Werror
+vpp_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
+ -fstack-protector-all -fPIC -Werror
+
+vpp_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+vpp_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+
+vpp_clang_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+vpp_clang_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+
+vpp_gcov_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \
+ -fPIC -Werror -fprofile-arcs -ftest-coverage
+vpp_gcov_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \
+ -fPIC -Werror -coverage
diff --git a/vpp/build-data/platforms/vpp_lite.mk b/vpp/build-data/platforms/vpp_lite.mk
new file mode 100644
index 00000000..ef2ec444
--- /dev/null
+++ b/vpp/build-data/platforms/vpp_lite.mk
@@ -0,0 +1,51 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# vector packet processor
+vpp_lite_arch = native
+ifeq ($(shell uname -m),x86_64)
+vpp_lite_march = corei7 # Nehalem Instruction set
+vpp_lite_mtune = corei7-avx # Optimize for Sandy Bridge
+else
+vpp_lite_march = native
+vpp_lite_mtune = generic
+endif
+vpp_lite_native_tools = vppapigen
+
+vpp_lite_uses_dpdk = no
+
+# Uncoment to enable building unit tests
+#vpp_lite_enable_tests = yes
+
+vpp_lite_root_packages = vpp vlib vlib-api vnet svm vpp-api-test \
+ vpp-api gmod
+
+vlib_configure_args_vpp_lite = --with-pre-data=128
+
+vnet_configure_args_vpp_lite =
+vpp_configure_args_vpp_lite =
+
+vpp_lite_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
+ -fstack-protector-all -fPIC -Werror
+vpp_lite_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \
+ -fstack-protector-all -fPIC -Werror
+
+vpp_lite_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+vpp_lite_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -march=$(MARCH) -mtune=$(MTUNE) \
+ -fstack-protector -fPIC -Werror
+
+vpp_lite_gcov_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \
+ -fPIC -Werror -fprofile-arcs -ftest-coverage
+vpp_lite_gcov_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \
+ -fPIC -Werror -coverage
diff --git a/vpp/build-data/suffix-rules.mk b/vpp/build-data/suffix-rules.mk
new file mode 100644
index 00000000..e3eeb922
--- /dev/null
+++ b/vpp/build-data/suffix-rules.mk
@@ -0,0 +1,27 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Shared suffix rules
+# Please do not set "SUFFIXES = .api.h .api" here
+
+%.api.h: %.api
+ @echo " APIGEN " $@ ; \
+ mkdir -p `dirname $@` ; \
+ $(CC) $(CPPFLAGS) -E -P -C -x c $^ \
+ | vppapigen --input - --output $@ --show-name $@
+
+%.api.json: %.api
+ @echo " JSON APIGEN " $@ ; \
+ mkdir -p `dirname $@` ; \
+ $(CC) $(CPPFLAGS) -E -P -C -x c $^ \
+ | vppapigen --input - --json $@