X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=build-root%2FMakefile;h=68d295e68080490edaa1c49d151c7b022c38c3f6;hb=ac0babd412e3b5282136a5c5c5be2c4cc4be6895;hp=8154ecdaa7b5c9e2ac53301e29a55465e5d1a73c;hpb=9d42087149a6870965896be74dc6260f72d2cac9;p=vpp.git diff --git a/build-root/Makefile b/build-root/Makefile index 8154ecdaa7b..68d295e6808 100644 --- a/build-root/Makefile +++ b/build-root/Makefile @@ -39,7 +39,7 @@ ###################################################################### # Scripts require non-POSIX parts of bash -SHELL := /bin/bash +SHELL := $(shell which bash) # Where this makefile lives MU_BUILD_ROOT_DIR = $(shell pwd) @@ -190,7 +190,7 @@ ARCH_TARGET_tmp = $(call ifdef_fn,$(ARCH)_target,$(ARCH)-$(OS)) TARGET = $(call ifdef_fn,$(PLATFORM)_target,$(ARCH_TARGET_tmp)) TARGET_PREFIX = $(if $(not_native),$(TARGET)-,) -# CPU microarchitecture detection. +# CPU microarchitecture detection. # Either set _march in build-data/platforms/.mk, # or detect and use the build-host instruction set @@ -236,18 +236,18 @@ PACKAGE = $* # Build/install tags. This lets you have different CFLAGS/CPPFLAGS/LDFLAGS # for e.g. debug versus optimized compiles. Each tag has its own set of build/install # areas. -TAG = +TAG = TAG_PREFIX = $(if $(TAG),$(TAG)-) # yes you need the space tag_var_with_added_space_fn = $(if $($(TAG)_TAG_$(1)),$($(TAG)_TAG_$(1)) ) # TAG=debug for debugging -debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \ +debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \ -fstack-protector-all -fPIC -debug_TAG_CXXFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \ +debug_TAG_CXXFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \ -fstack-protector-all -fPIC -debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -march=$(MARCH) \ +debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -march=$(MARCH) \ -fstack-protector-all -fPIC BUILD_PREFIX_package = build-$(TAG_PREFIX) @@ -309,15 +309,16 @@ endif # Always prefer our own tools to those installed on system. # Note: ccache-bin must be before tool bin. -# -# Removed LD_LIBRARY_PATH from BUILD_ENV (drb, 10/31/17): +# +# Removed LD_LIBRARY_PATH from BUILD_ENV (drb, 10/31/17): # export LD_LIBRARY_PATH=$(TOOL_INSTALL_DIR)/lib64:$(TOOL_INSTALL_DIR)/lib # Reported to cause trouble. Only of historical interest, since we no longer # build a full tool chain from source. BUILD_ENV = \ export CCACHE_DIR=$(CCACHE_DIR) ; \ - export PATH=$(TOOL_INSTALL_DIR)/ccache-bin:$(TOOL_INSTALL_DIR)/bin:$${PATH} ; \ + export PATH=$(wildcard /usr/lib*/ccache):$(TOOL_INSTALL_DIR)/bin:$${PATH} ; \ + $(if $(call configure_var_fn,PATH), export PATH=$${PATH}:$(call configure_var_fn,PATH);,) \ export PATH="`echo $${PATH} | sed -e s/[.]://`" ; \ $(if $(not_native),export CONFIG_SITE=$(MU_BUILD_ROOT_DIR)/config.site ;,) \ set -eu$(BUILD_DEBUG) ; \ @@ -364,7 +365,7 @@ NATIVE_TOOLS_$(IS_LINUX) += $(NATIVE_TOOLS_LINUX) CROSS_TOOLS_$(IS_LINUX) += glibc gcc # must be first for bootstrapping -NATIVE_TOOLS = findutils make +NATIVE_TOOLS = findutils $(MAKE) # basic tools needed for build system NATIVE_TOOLS += git automake autoconf libtool texinfo tar @@ -415,7 +416,7 @@ find_filter += -and -not -path '*/.mu_build_*' find_newer_filtered_fn = \ (! -f $(1) \ || -n $(call find_newer_files_fn,$(1),$(3)) \ - || -n "`find -H $(2) \ + || -n "`find -L $(2) \ -type f \ -and -newer $(1) \ -and \( $(4) \) \ @@ -613,10 +614,10 @@ check_platform = \ -a ! -x "`which 2> /dev/null $${target_gcc}`" ] ; then \ $(call build_msg_fn, \ No cross-compiler found for platform $(PLATFORM) target $(TARGET); \ - try make PLATFORM=$(PLATFORM) install-tools) ; \ + try $(MAKE) PLATFORM=$(PLATFORM) install-tools) ; \ exit 1 ; \ fi - + configure_check_timestamp = \ @$(BUILD_ENV) ; \ $(check_platform) ; \ @@ -624,6 +625,10 @@ configure_check_timestamp = \ mkdir -p $(PACKAGE_INSTALL_DIR) ; \ conf="$(TIMESTAMP_DIR)/$(CONFIGURE_TIMESTAMP)" ; \ dirs="$(call package_mk_fn,$(PACKAGE)) \ + $(SOURCE_PATH_BUILD_DATA_DIRS)/platforms/$(PLATFORM).mk \ + $(wildcard $(call find_source_fn,$(PACKAGE_SOURCE))/cmake) \ + $(shell find $(call find_source_fn,$(PACKAGE_SOURCE)) \ + -name CMakeLists.txt) \ $(wildcard $(call find_source_fn, \ $(PACKAGE_SOURCE))$(PACKAGE_SUBDIR)/configure) \ $(MU_BUILD_ROOT_DIR)/config.site" ; \ @@ -647,9 +652,11 @@ configure_check_timestamp = \ # we assume there's 1 processor; we use 2*ncpu for the -j option. # NB: GNU Make 4.2 will let us use '$(file & /dev/null ; \ else \ $(call build_msg_fn, NOT stripping symbols) ; \ - fi + fi # readonly root squashfs image # Note: $(call build_msg_fn) does not seem to work inside of fakeroot so we use echo @@ -959,20 +962,16 @@ $(PLATFORM_IMAGE_DIR)/ro.img ro-image: $(patsubst %,%-find-source,$(ROOT_PACKAGE chmod 0755 $${tmp_dir} ; \ cd $${tmp_dir} ; \ trap "rm -rf $${tmp_dir}" err ; \ - fakeroot /bin/bash -c "{ \ + fakeroot $(SHELL) -c "{ \ set -eu$(BUILD_DEBUG) ; \ $(MAKE) -C $(MU_BUILD_ROOT_DIR) IMAGE_INSTALL_DIR=$${tmp_dir} \ $(patsubst %,%-image_install, \ basic_system \ $(ROOT_PACKAGES)) ; \ - : make dev directory ; \ + : $(MAKE) dev directory ; \ $(linuxrc_makedev) ; \ echo @@@@ Relocating ELF executables to run in / @@@@ ; \ - find $${d} -type f \ - -exec elftool quiet in '{}' out '{}' \ - set-interpreter \ - /$(arch_lib_dir)/$(DYNAMIC_LINKER) \ - set-rpath /$(arch_lib_dir):/lib ';' ; \ + scripts/set-rpath /$(arch_lib_dir):/lib ; \ : strip symbols from files ; \ if [ '$${strip_symbols:-yes}' = 'yes' ] ; then \ echo @@@@ Stripping symbols from files @@@@ ; \ @@ -1055,7 +1054,7 @@ rw-image: rw-image-check-type ro-image chmod 0755 $${tmp_dir} ; \ cd $${tmp_dir} ; \ trap "rm -rf $${tmp_dir}" err ; \ - fakeroot /bin/bash -c "{ \ + fakeroot $(SHELL) -c "{ \ set -eu$(BUILD_DEBUG) ; \ $(linuxrc_makedev) ; \ $(call rw_image_embed_ro_image_fn,$${ro_image}) ; \ @@ -1088,7 +1087,7 @@ ccache-install: $(MAKE) -C $(MU_BUILD_ROOT_DIR) ccache-build mkdir -p $(TOOL_INSTALL_DIR)/ccache-bin ln -sf $(MU_BUILD_ROOT_DIR)/build-tool-native/ccache/ccache \ - $(TOOL_INSTALL_DIR)/ccache-bin/$(TARGET_PREFIX)gcc + $(TOOL_INSTALL_DIR)/ccache-bin/$(TARGET_PREFIX)gcc TOOL_MAKE = $(MAKE) is_build_tool=yes @@ -1152,7 +1151,4 @@ distclean: rm -rf $(MU_BUILD_ROOT_DIR)/*.deb rm -rf $(MU_BUILD_ROOT_DIR)/*.rpm rm -rf $(MU_BUILD_ROOT_DIR)/*.changes - 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/changelog + rm -rf $(MU_BUILD_ROOT_DIR)/*.buildinfo