X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=Makefile;h=8964329b17ba2b259ece360b68beb49ab04ef46e;hb=e7b6734bc9a3530e215164e255141224a099661e;hp=6e512fe5a2f2f8d3e5f66d4b317370981b216a92;hpb=6484b3baa3ef3186dc11fbf7706494da95079626;p=vpp.git diff --git a/Makefile b/Makefile index 6e512fe5a2f..8964329b17b 100644 --- a/Makefile +++ b/Makefile @@ -30,10 +30,17 @@ OS_ID = $(shell grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\" OS_VERSION_ID= $(shell grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') endif +ifeq ($(filter ubuntu debian,$(OS_ID)),$(OS_ID)) +PKG=deb +else ifeq ($(filter rhel centos fedora,$(OS_ID)),$(OS_ID)) +PKG=rpm +endif + DEB_DEPENDS = curl build-essential autoconf automake bison libssl-dev ccache DEB_DEPENDS += debhelper dkms git libtool libganglia1-dev libapr1-dev dh-systemd DEB_DEPENDS += libconfuse-dev git-review exuberant-ctags cscope pkg-config -DEB_DEPENDS += python-dev python-virtualenv python-pip lcov chrpath autoconf +DEB_DEPENDS += lcov chrpath autoconf nasm +DEB_DEPENDS += python-all python-dev python-virtualenv python-pip libffi6 ifeq ($(OS_VERSION_ID),14.04) DEB_DEPENDS += openjdk-8-jdk-headless else @@ -43,8 +50,17 @@ endif RPM_DEPENDS_GROUPS = 'Development Tools' RPM_DEPENDS = redhat-lsb glibc-static java-1.8.0-openjdk-devel yum-utils RPM_DEPENDS += openssl-devel https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm apr-devel -RPM_DEPENDS += python-devel python-virtualenv lcov chrpath -EPEL_DEPENDS = libconfuse-devel ganglia-devel +RPM_DEPENDS += python-devel +ifeq ($(OS_ID)),fedora) +ifeq ($(OS_VERSION_ID),25) + RPM_DEPENDS += python2-virtualenv +else + RPM_DEPENDS += python-virtualenv +endif +endif +RPM_DEPENDS += lcov chrpath libffi-devel +RPM_DEPENDS += https://kojipkgs.fedoraproject.org//packages/nasm/2.12.02/2.fc26/x86_64/nasm-2.12.02-2.fc26.x86_64.rpm +EPEL_DEPENDS = libconfuse-devel ganglia-devel epel-rpm-macros ifneq ($(wildcard $(STARTUP_DIR)/startup.conf),) STARTUP_CONF ?= $(STARTUP_DIR)/startup.conf @@ -69,14 +85,19 @@ help: @echo " wipe-release - wipe all products of release build " @echo " build - build debug binaries" @echo " build-release - build release binaries" + @echo " build-coverity - build coverity artifacts" @echo " rebuild - wipe and build debug binares" @echo " rebuild-release - wipe and build release binares" @echo " run - run debug binary" @echo " run-release - run release binary" @echo " debug - run debug binary with debugger" @echo " debug-release - run release binary with debugger" - @echo " test - build and run functional tests" - @echo " test-debug - build and run functional tests (debug build)" + @echo " test - build and run (basic) functional tests" + @echo " test-debug - build and run (basic) functional tests (debug build)" + @echo " test-all - build and run (all) functional tests" + @echo " test-all-debug - build and run (all) functional tests (debug build)" + @echo " test-shell - enter shell with test environment" + @echo " test-shell-debug - enter shell with test environment (debug build)" @echo " test-wipe - wipe files generated by unit tests" @echo " retest - run functional tests" @echo " retest-debug - run functional tests (debug build)" @@ -84,6 +105,7 @@ help: @echo " run-vat - run vpp-api-test tool" @echo " pkg-deb - build DEB packages" @echo " pkg-rpm - build RPM packages" + @echo " dpdk-install-dev - install DPDK development packages" @echo " ctags - (re)generate ctags database" @echo " gtags - (re)generate gtags database" @echo " cscope - (re)generate cscope database" @@ -96,6 +118,7 @@ help: @echo " test-wipe-doc - wipe documentation for test framework" @echo " test-cov - generate code coverage report for test framework" @echo " test-wipe-cov - wipe code coverage report for test framework" + @echo " test-checkstyle - check PEP8 compliance for test framework" @echo "" @echo "Make Arguments:" @echo " V=[0|1] - set build verbosity level" @@ -106,7 +129,7 @@ help: @echo " startup.conf file is present" @echo " GDB= - gdb binary to use for debugging" @echo " PLATFORM= - target platform. default is vpp" - @echo " TEST= - only run specific test" + @echo " TEST= - apply filter to test set, see test-help" @echo "" @echo "Current Argument Values:" @echo " V = $(V)" @@ -128,6 +151,21 @@ ifeq ($(OS_ID),ubuntu) exit 1 ; \ fi ; \ exit 0 +else ifneq ("$(wildcard /etc/redhat-release)","") + @for i in $(RPM_DEPENDS) $(EPEL_DEPENDS) ; do \ + RPM=$$(basename -s .rpm "$${i##*/}" | cut -d- -f1,2,3) ; \ + if [[ "$$RPM" =~ "epel-release-latest" ]] ; then \ + MISSING+=$$(rpm -q epel-release | grep "^package") ; \ + else \ + MISSING+=$$(rpm -q $$RPM | grep "^package") ; \ + fi ; \ + done ; \ + if [ -n "$$MISSING" ] ; then \ + echo "Please install missing RPMs: \n$$MISSING\n" ; \ + echo "by executing \"make install-dep\"\n" ; \ + exit 1 ; \ + fi ; \ + exit 0 endif @echo "SOURCE_PATH = $(WS_ROOT)" > $(BR)/build-config.mk @echo "#!/bin/bash\n" > $(BR)/path_setup @@ -153,8 +191,8 @@ ifeq ($(OS_ID),ubuntu) ifeq ($(OS_VERSION_ID),14.04) @sudo -E apt-get $(CONFIRM) $(FORCE) install software-properties-common @sudo -E add-apt-repository ppa:openjdk-r/ppa $(CONFIRM) - @sudo -E apt-get update endif + @sudo -E apt-get update @sudo -E apt-get $(CONFIRM) $(FORCE) install $(DEB_DEPENDS) else ifneq ("$(wildcard /etc/redhat-release)","") @sudo -E yum groupinstall $(CONFIRM) $(RPM_DEPENDS_GROUPS) @@ -207,19 +245,29 @@ export VPP_PYTHON_PREFIX=$(BR)/python define test $(if $(filter-out $(3),retest),make -C $(BR) PLATFORM=$(1) TAG=$(2) vpp-install,) make -C test \ + TEST_DIR=$(WS_ROOT)/test \ VPP_TEST_BUILD_DIR=$(BR)/build-$(2)-native \ VPP_TEST_BIN=$(BR)/install-$(2)-native/vpp/bin/vpp \ VPP_TEST_PLUGIN_PATH=$(BR)/install-$(2)-native/vpp/lib64/vpp_plugins \ VPP_TEST_INSTALL_PATH=$(BR)/install-$(2)-native/ \ LD_LIBRARY_PATH=$(BR)/install-$(2)-native/vpp/lib64/ \ + EXTENDED_TESTS=$(EXTENDED_TESTS) \ $(3) endef test: bootstrap - $(call test,vpp_lite,vpp_lite,test) + $(call test,vpp,vpp,test) test-debug: bootstrap - $(call test,vpp_lite,vpp_lite_debug,test) + $(call test,vpp,vpp_debug,test) + +test-all: bootstrap + $(eval EXTENDED_TESTS=yes) + $(call test,vpp,vpp,test) + +test-all-debug: bootstrap + $(eval EXTENDED_TESTS=yes) + $(call test,vpp,vpp_debug,test) test-help: @make -C test help @@ -227,6 +275,12 @@ test-help: test-wipe: @make -C test wipe +test-shell: bootstrap + $(call test,vpp,vpp,shell) + +test-shell-debug: bootstrap + $(call test,vpp,vpp_debug,shell) + test-doc: @make -C test doc @@ -234,16 +288,20 @@ test-wipe-doc: @make -C test wipe-doc test-cov: bootstrap - $(call test,vpp_lite,vpp_lite_gcov,cov) + $(eval EXTENDED_TESTS=yes) + $(call test,vpp,vpp_gcov,cov) test-wipe-cov: @make -C test wipe-cov +test-checkstyle: + @make -C test checkstyle + retest: - $(call test,vpp_lite,vpp_lite,retest) + $(call test,vpp,vpp,retest) retest-debug: - $(call test,vpp_lite,vpp_lite_debug,retest) + $(call test,vpp,vpp_debug,retest) STARTUP_DIR ?= $(PWD) ifeq ("$(wildcard $(STARTUP_CONF))","") @@ -276,6 +334,9 @@ run-release: debug: $(call run, $(BR)/install-$(PLATFORM)_debug-native,$(GDB) $(GDB_ARGS) --args) +build-coverity: + $(call make,$(PLATFORM)_coverity,install-packages) + debug-release: $(call run, $(BR)/install-$(PLATFORM)-native,$(GDB) $(GDB_ARGS) --args) @@ -291,6 +352,9 @@ pkg-deb: pkg-rpm: dist $(call make,$(PLATFORM),install-rpm) +dpdk-install-dev: + make -C dpdk install-$(PKG) + ctags: ctags.files @ctags --totals --tag-relative -L $< @rm $< @@ -336,25 +400,18 @@ define banner @echo " " endef -verify: install-dep $(BR)/.bootstrap.ok +verify: install-dep $(BR)/.bootstrap.ok dpdk-install-dev $(call banner,"Building for PLATFORM=vpp using gcc") @make -C build-root PLATFORM=vpp TAG=vpp wipe-all install-packages - $(call banner,"Building for PLATFORM=vpp_lite using gcc") - @make -C build-root PLATFORM=vpp_lite TAG=vpp_lite wipe-all install-packages -ifeq ($(OS_ID),ubuntu) -ifeq ($(OS_VERSION_ID),16.04) +ifeq ($(OS_ID)-$(OS_VERSION_ID),ubuntu-16.04) $(call banner,"Installing dependencies") @sudo -E apt-get update @sudo -E apt-get $(CONFIRM) $(FORCE) install clang $(call banner,"Building for PLATFORM=vpp using clang") @make -C build-root CC=clang PLATFORM=vpp TAG=vpp_clang wipe-all install-packages endif - $(call banner,"Building deb packages") - @make pkg-deb -endif -ifeq ($(OS_ID),centos) - $(call banner,"Building rpm packages") - @make pkg-rpm -endif + $(call banner,"Building $(PKG) packages") + @make pkg-$(PKG) + @make test-all