X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=Makefile;h=8122c6a4c3857dc2da74f39e3e7c6709189f54de;hb=65e845785f21e6b43c026f092e982171eec1f641;hp=7c3dded21d0c928862af87f89b3edcc1699f449b;hpb=d995c757f05f78aa759b0a65c0a7e38088e690a9;p=vpp.git diff --git a/Makefile b/Makefile index 7c3dded21d0..8122c6a4c38 100644 --- a/Makefile +++ b/Makefile @@ -11,8 +11,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -WS_ROOT=$(CURDIR) -BR=$(WS_ROOT)/build-root +export WS_ROOT=$(CURDIR) +export BR=$(WS_ROOT)/build-root CCACHE_DIR?=$(BR)/.ccache GDB?=gdb PLATFORM?=vpp @@ -30,10 +30,16 @@ 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,$(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 doxygen graphviz -DEB_DEPENDS += python-dev python-virtualenv python-pip python-pyparsing python-jinja2 lcov chrpath autoconf +DEB_DEPENDS += libconfuse-dev git-review exuberant-ctags cscope pkg-config +DEB_DEPENDS += python-dev python-virtualenv python-pip lcov chrpath autoconf nasm ifeq ($(OS_VERSION_ID),14.04) DEB_DEPENDS += openjdk-8-jdk-headless else @@ -41,9 +47,9 @@ else endif RPM_DEPENDS_GROUPS = 'Development Tools' -RPM_DEPENDS = redhat-lsb glibc-static java-1.8.0-openjdk-devel yum-utils doxygen graphviz +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 pyparsing python-jinja2 lcov chrpath +RPM_DEPENDS += python-devel python-virtualenv lcov chrpath EPEL_DEPENDS = libconfuse-devel ganglia-devel ifneq ($(wildcard $(STARTUP_DIR)/startup.conf),) @@ -69,6 +75,7 @@ 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" @@ -84,6 +91,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 +104,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 +115,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)" @@ -153,8 +162,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) @@ -183,35 +192,6 @@ distversion: $(BR)/scripts/.version $(BR)/scripts/verdist ${BR} ${prefix}-$(shell $(BR)/scripts/version rpm-version) ${verstring} mv $(verstring).tar.gz $(BR)/rpm -deb-depends-check: -ifeq ($(OS_ID),ubuntu) - @MISSING=$$(apt-get install -y -qq -s $(DEB_DEPENDS) | grep "^Inst ") ; \ - if [ -n "$$MISSING" ] ; then \ - echo "\nPlease install missing packages: \n$$MISSING\n" ; \ - echo "by executing \"make install-dep\"\n" ; \ - exit 1 ; \ - fi; \ - exit 0 -endif - -rpm-depends-check: -ifeq ($(OS_ID),centos) - @RPM_DEPENDS_ARRAY=($(RPM_DEPENDS)) ; \ - for i in "$${!RPM_DEPENDS_ARRAY[@]}"; do \ - if ! yum list installed "$${RPM_DEPENDS_ARRAY[$$i]}" >/dev/null 2>&1; then \ - if ! [[ "$${RPM_DEPENDS_ARRAY[$$i]}" == *"://"* ]] ; then \ - MISSING="$$MISSING $${RPM_DEPENDS_ARRAY[$$i]}" ; \ - fi; \ - fi; \ - done; \ - if [ -n "$$MISSING" ] ; then \ - echo "\nPlease install missing packages: \n$$MISSING\n" ; \ - echo "by executing \"make install-dep\"\n" ; \ - exit 1 ; \ - fi; \ - exit 0 -endif - build: $(BR)/.bootstrap.ok $(call make,$(PLATFORM)_debug,vpp-install) @@ -231,18 +211,17 @@ wipe-release: $(BR)/.bootstrap.ok rebuild-release: wipe-release build-release -VPP_PYTHON_PREFIX=$(BR)/python +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 \ - BR=$(BR) \ 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/ \ - WS_ROOT=$(WS_ROOT) V=$(V) TEST=$(TEST) VPP_PYTHON_PREFIX=$(VPP_PYTHON_PREFIX) $(3) + $(3) endef test: bootstrap @@ -258,16 +237,19 @@ test-wipe: @make -C test wipe test-doc: - @make -C test WS_ROOT=$(WS_ROOT) BR=$(BR) VPP_PYTHON_PREFIX=$(VPP_PYTHON_PREFIX) doc + @make -C test doc test-wipe-doc: - @make -C test wipe-doc BR=$(BR) + @make -C test wipe-doc test-cov: bootstrap $(call test,vpp_lite,vpp_lite_gcov,cov) test-wipe-cov: - @make -C test wipe-cov BR=$(BR) + @make -C test wipe-cov + +test-checkstyle: + @make -C test checkstyle retest: $(call test,vpp_lite,vpp_lite,retest) @@ -306,6 +288,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) @@ -315,12 +300,15 @@ build-vat: run-vat: @sudo $(BR)/install-$(PLATFORM)_debug-native/vpp/bin/vpp_api_test -pkg-deb: deb-depends-check doxygen-siphon-list +pkg-deb: $(call make,$(PLATFORM),install-deb) -pkg-rpm: dist rpm-depends-check doxygen-siphon-list +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 $< @@ -345,12 +333,12 @@ fixstyle: export DOXY_DIR ?= $(WS_ROOT)/doxygen define make-doxy - @OS_ID="$(OS_ID)" WS_ROOT="$(WS_ROOT)" BR="$(BR)" make -C $(DOXY_DIR) $@ + @OS_ID="$(OS_ID)" make -C $(DOXY_DIR) $@ endef .PHONY: bootstrap-doxygen doxygen wipe-doxygen -bootstrap-doxygen: deb-depends-check rpm-depends-check +bootstrap-doxygen: $(call make-doxy) doxygen: @@ -359,9 +347,6 @@ doxygen: wipe-doxygen: $(call make-doxy) -doxygen-siphon-list: - $(call make-doxy) - define banner @echo "========================================================================" @echo " $(1)" @@ -369,25 +354,19 @@ 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)