Fix vpp crash sending arp or probing neighb (VPP-917)
[vpp.git] / build-root / Makefile
index 9fe03d6..0fed520 100644 (file)
@@ -579,7 +579,7 @@ image_extra_dependencies = $($(PLATFORM)_image_extra_dependencies)
 ### dbarach
 
 configure_package_gnu =                                                \
-  s=$(call find_source_fn,$(PACKAGE_SOURCE)) ;                 \
+  s=$(call find_source_fn,$(PACKAGE_SOURCE))$(PACKAGE_SUBDIR) ;        \
   if [ ! -f $$s/configure ] ; then                             \
     autoreconf -i -f $$s ;                                     \
   fi ;                                                         \
@@ -635,7 +635,8 @@ configure_check_timestamp =                                         \
   mkdir -p $(PACKAGE_INSTALL_DIR) ;                                    \
   conf="$(TIMESTAMP_DIR)/$(CONFIGURE_TIMESTAMP)" ;                     \
   dirs="$(call package_mk_fn,$(PACKAGE))                               \
-       $(wildcard $(call find_source_fn,$(PACKAGE_SOURCE))/configure)  \
+       $(wildcard $(call find_source_fn,                               \
+                    $(PACKAGE_SOURCE))$(PACKAGE_SUBDIR)/configure)     \
        $(MU_BUILD_ROOT_DIR)/config.site" ;                             \
   if [[ $(call find_newer_fn, $${conf}, $${dirs}, $?) ]]; then         \
     $(configure_package) ;                                             \
@@ -652,16 +653,13 @@ configure_check_timestamp =                                               \
 # Package build
 ######################################################################
 
-linux_n_cpus = `grep '^processor' /proc/cpuinfo | wc -l`
-
-MAKE_PARALLEL_JOBS =                           \
-  -j $(shell                                   \
-    if [ -f /proc/cpuinfo ] ; then             \
-      expr 2 '*' $(linux_n_cpus) ;             \
-    else                                       \
-      echo 1 ;                                 \
-    fi)
-
+# /proc/cpuinfo does not exist on platforms without a /proc and on some
+# platforms, notably inside containers, it has no content. In those cases
+# we assume there's 1 processor; we use 2*ncpu for the -j option.
+# NB: GNU Make 4.2 will let us use '$(file </proc/cpuinfo)' to both test
+# for file presence and content; for now this will have to do.
+MAKE_PARALLEL_JOBS = -j $(if $(shell [ -f /proc/cpuinfo ] && head /proc/cpuinfo), \
+       $(shell expr 2 '*' $$(grep -c ^processor /proc/cpuinfo)), 2)
 MAKE_PARALLEL_FLAGS = $(if $($(PACKAGE)_make_parallel_fails),,$(MAKE_PARALLEL_JOBS))
 
 # Make command shorthand for packages & tools.
@@ -747,6 +745,7 @@ GIT = git
 # Multiple packages may use a single source tree.
 # For example, gcc-bootstrap package shares gcc source.
 PACKAGE_SOURCE = $(if $($(PACKAGE)_source),$($(PACKAGE)_source),$(PACKAGE))
+PACKAGE_SUBDIR = $(if $($(PACKAGE)_configure_subdir),/$($(PACKAGE)_configure_subdir),)
 
 # Use git to download source if directory is not found
 find_source_for_package =                                                                      \
@@ -1141,8 +1140,7 @@ package_wipe_script =                                                                                     \
   @message=$(if $(is_build_tool),"Wiping build $(PACKAGE)","Wiping build/install $(PACKAGE)") ;                \
   $(call build_msg_fn,$$message) ;                                                                     \
   $(BUILD_ENV) ;                                                                                       \
-  rm -rf $(if $(is_build_tool),$(PACKAGE_BUILD_DIR),$(PACKAGE_INSTALL_DIR) $(PACKAGE_BUILD_DIR));      \
-  rm -f $(MU_BUILD_ROOT_DIR)/docs/siphon_docs/clicmd.itemlist
+  rm -rf $(if $(is_build_tool),$(PACKAGE_BUILD_DIR),$(PACKAGE_INSTALL_DIR) $(PACKAGE_BUILD_DIR))
 
 .PHONY: %-wipe
 %-wipe:
@@ -1168,5 +1166,4 @@ distclean:
        rm -rf $(MU_BUILD_ROOT_DIR)/python
        if [ -e /usr/bin/dh ];then (cd $(MU_BUILD_ROOT_DIR)/deb/;debian/rules clean); fi
        rm -f $(MU_BUILD_ROOT_DIR)/deb/debian/*.install
-       rm -f $(MU_BUILD_ROOT_DIR)/deb/debian/*.dkms
        rm -f $(MU_BUILD_ROOT_DIR)/deb/debian/changelog