From patchwork Wed Oct 23 16:48:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony PERARD X-Patchwork-Id: 11207265 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4FB5E112C for ; Wed, 23 Oct 2019 17:12:02 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 200912086D for ; Wed, 23 Oct 2019 17:12:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="hf94xfmf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 200912086D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iNK9i-0002aH-6X; Wed, 23 Oct 2019 17:10:42 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iNK9g-0002Zt-L5 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2019 17:10:40 +0000 X-Inumbo-ID: 067caf3e-f5b8-11e9-9488-12813bfff9fa Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 067caf3e-f5b8-11e9-9488-12813bfff9fa; Wed, 23 Oct 2019 17:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1571850635; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=o9iR+NN3wy+FNjUXt4ByoVwhjsassX4g+IHSZsUVaEc=; b=hf94xfmfIjA0B0of4b9rzbTw7paFx4Bp7/TDgNznMLOzQkJwjyrOZRG0 9A7FWvxbemZH1/gQWW8/qgrd+a8pCUWdZEFDFDHPvvmRFDoofq3gKlwKl ANdF4U6SyVEUvQ1e5nOMPdysHgfwFSamgvy/oq9sfue5f313ZMmK9pZQc Q=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: MffVZ1XEehJjAUDDBhM3nQTPpOie2eNmkiyP7zuKPM9EqWxJQzz5VFUv4/Mdm0RtjBvIsVy/CK yBiotQJE3HN3g19HmfcXZgwcLAJarCfNHdySfh1o8XfNTOxqNzDw34SPsVfhuzpZpoFRFACYax fLjOEciAfHJICJdqhhLDK2bZpN25hw1cbCsw/1wRDp6TMC41kXx9DGx8qs6U/Fy0DMyyRuW6KK mxA8podGBuK3t5a4elHGEKEHCMCP2MMu3JdtHAHkG8RAbrYsub8H20QTrvBjaxIlOifJmKJ8bp ao4= X-SBRS: 2.7 X-MesageID: 7429236 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.68,221,1569297600"; d="scan'208";a="7429236" From: Anthony PERARD To: Date: Wed, 23 Oct 2019 17:48:36 +0100 Message-ID: <20191023164837.2700240-23-anthony.perard@citrix.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191023164837.2700240-1-anthony.perard@citrix.com> References: <20191023164837.2700240-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [RFC XEN PATCH 22/23] Changes to root Makefile X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" - *FLAGS - fix path to Kconfig - List objects to build - generate include/xen/compile.h - make prepare phase - changes to clean - remove build of kernel.version --- xen/Makefile | 263 ++++++++++++++++++++++++++++----------------------- 1 file changed, 143 insertions(+), 120 deletions(-) diff --git a/xen/Makefile b/xen/Makefile index 90645668957c..66448b067eb0 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -13,8 +13,6 @@ export XEN_BUILD_DATE ?= $(shell LC_ALL=C date) export XEN_BUILD_TIME ?= $(shell LC_ALL=C date +%T) export XEN_BUILD_HOST ?= $(shell hostname) -export XEN_ROOT := $(CURDIR)/.. - # *DOCUMENTATION* # To see a list of typical targets execute "make help" # More info can be located in ./README @@ -238,8 +236,10 @@ endif objtree := . VPATH := $(srctree) +XEN_ROOT := $(abs_srctree)/.. export building_out_of_srctree srctree objtree VPATH +export XEN_ROOT # To make sure we do not include .config for any of the *config targets # catch them early, and hand them over to scripts/kconfig/Makefile @@ -316,6 +316,15 @@ else include scripts/Kbuild.include +# XXX From Config.mk +XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ \ + -e s/i86pc/x86_32/ -e s/amd64/x86_64/ \ + -e s/armv7.*/arm32/ -e s/armv8.*/arm64/ \ + -e s/aarch64/arm64/) +XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH) +XEN_OS ?= $(shell uname -s) +export XEN_OS + # Cross compiling and selecting different set of gcc/bin-utils # --------------------------------------------------------------------------- # @@ -334,7 +343,7 @@ include scripts/Kbuild.include # Alternatively CROSS_COMPILE can be set in the environment. # Default value for CROSS_COMPILE is not to prefix executables # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile -ARCH ?= $(SUBARCH) +ARCH ?= $(XEN_COMPILE_ARCH) SRCARCH := $(shell echo $(XEN_TARGET_ARCH) | \ sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g') @@ -363,6 +372,7 @@ KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc +CXX = $(CROSS_COMPILE)g++ CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm @@ -385,7 +395,7 @@ CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ NOSTDINC_FLAGS := CFLAGS_KERNEL = AFLAGS_KERNEL = -LDFLAGS_vmlinux = +LDFLAGS_xen = # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option @@ -395,13 +405,35 @@ LINUXINCLUDE := \ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE KBUILD_CFLAGS := + +# XXX CFLAGS found in xen.git/config/$(XEN_TARGET_ARCH).mk +KBUILD_CFLAGS += -m64 +# XXX CFLAGS found in Config.mk +export XEN_HAS_BUILD_ID ?= n +ifeq ($(call ld-option,--build-id),) +build_id_linker := +else +KBUILD_CFLAGS += -DBUILD_ID +export XEN_HAS_BUILD_ID=y +build_id_linker := --build-id=sha1 +# possible improvement: LDFLAGS_xen-syms := --build-id=sha1 +endif +export build_id_linker +KBUILD_CFLAGS += -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes +KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement) +KBUILD_CFLAGS += $(call cc-disable-warning,unused-but-set-variable) +KBUILD_CFLAGS += $(call cc-disable-warning,unused-local-typedefs) + +EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all +EMBEDDED_EXTRA_CFLAGS += -fno-exceptions + KBUILD_CPPFLAGS := KBUILD_LDFLAGS := GCC_PLUGINS_CFLAGS := CLANG_FLAGS := export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC -export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK +export CXX CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE HOSTCXX export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS @@ -469,7 +501,7 @@ CC_VERSION_TEXT = $(shell $(CC) --version 2>/dev/null | head -n 1) ifeq ($(config-targets),1) # =========================================================================== # *config targets only - make sure prerequisites are updated, and descend -# in scripts/kconfig to make the *config target +# in tools/kconfig to make the *config target # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. # KBUILD_DEFCONFIG may point out an alternative default configuration @@ -478,10 +510,10 @@ include arch/$(SRCARCH)/Makefile export KBUILD_DEFCONFIG KBUILD_KCONFIG CC_VERSION_TEXT config: scripts_basic outputmakefile FORCE - $(Q)$(MAKE) $(build)=scripts/kconfig $@ + $(Q)$(MAKE) $(build)=tools/kconfig $@ %config: scripts_basic outputmakefile FORCE - $(Q)$(MAKE) $(build)=scripts/kconfig $@ + $(Q)$(MAKE) $(build)=tools/kconfig $@ else # =========================================================================== @@ -501,23 +533,18 @@ ifeq ($(dot-config),1) include include/config/auto.conf endif -ifeq ($(KBUILD_EXTMOD),) -# Objects we will link into vmlinux / subdirs we need to visit -init-y := init/ -drivers-y := drivers/ sound/ -drivers-$(CONFIG_SAMPLES) += samples/ -drivers-$(CONFIG_KERNEL_HEADER_TEST) += include/ -net-y := net/ -libs-y := lib/ -core-y := usr/ -virt-y := virt/ -endif # KBUILD_EXTMOD +# Objects we will link into xen / subdirs we need to visit +common-y := common/ +drivers-y := drivers/ +libs-$(CONFIG_X86) := lib/ +xsm-y := xsm/ +arch-y := arch/$(SRCARCH)/ +crypto-$(CONFIG_CRYPTO) := crypto/ # The all: target is the default when no target is given on the # command line. -# This allow a user to issue only 'make' to build a kernel including modules -# Defaults to vmlinux, but the arch makefile usually adds further targets -all: vmlinux +# Defaults to xen, but the arch makefile usually adds further targets +all: xen CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \ $(call cc-option,-fno-tree-loop-im) \ @@ -552,14 +579,9 @@ ifeq ($(may-sync-config),1) # because some architectures define CROSS_COMPILE there. include include/config/auto.conf.cmd +# Allow people to just run `make` as before and not force them to configure $(KCONFIG_CONFIG): - @echo >&2 '***' - @echo >&2 '*** Configuration file "$@" not found!' - @echo >&2 '***' - @echo >&2 '*** Please run some configurator (e.g. "make oldconfig" or' - @echo >&2 '*** "make menuconfig" or "make xconfig").' - @echo >&2 '***' - @/bin/false + $(Q)$(MAKE) -f $(srctree)/Makefile defconfig # The actual configuration files used during the build are stored in # include/generated/ and include/config/. Update them if .config is newer than @@ -587,15 +609,40 @@ include/config/auto.conf: endif # may-sync-config endif # $(dot-config) +# XXX CFLAGS found in Rules.mk +ifeq ($(CONFIG_DEBUG),y) +KBUILD_CFLAGS += -O1 +else +KBUILD_CFLAGS += -O2 +endif -# arch Makefile may override CC so keep this after arch Makefile is included -NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) +ifeq ($(CONFIG_FRAME_POINTER),y) +KBUILD_CFLAGS += -fno-omit-frame-pointer +else +KBUILD_CFLAGS += -fomit-frame-pointer +endif +KBUILD_CFLAGS += -fno-builtin -fno-common +KBUILD_CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith +KBUILD_CFLAGS += $(call cc-option,-Wvla) +KBUILD_CFLAGS += -pipe -D__XEN__ -include $(srctree)/include/xen/config.h +ifeq ($(CONFIG_DEBUG_INFO),y) +KBUILD_CFLAGS += -g +endif +KBUILD_CFLAGS += -Wa,--strip-local-absolute + +# arch Makefile may override CC so keep this after arch Makefile is included +NOSTDINC_FLAGS += -nostdinc # use the deterministic mode of AR if available KBUILD_ARFLAGS := $(call ar-option,D) +# Most CFLAGS are safe for assembly files: +# -std=gnu{89,99} gets confused by #-prefixed end-of-line comments +# -flto makes no sense and annoys clang +KBUILD_AFLAGS += $(filter-out -std=gnu% -flto,$(KBUILD_CFLAGS)) + include scripts/Makefile.kasan include scripts/Makefile.ubsan @@ -616,7 +663,7 @@ CHECKFLAGS += $(if $(CONFIG_64BIT),-m64,-m32) # set in the environment # Also any assignments in arch/$(ARCH)/Makefile take precedence over # this default value -export KBUILD_IMAGE ?= vmlinux +export KBUILD_IMAGE ?= xen # # INSTALL_PATH specifies where to place the updated kernel and system map @@ -627,74 +674,59 @@ HOST_LIBELF_LIBS = $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf) PHONY += prepare0 -core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/ +xen-dirs := $(patsubst %/,%,$(filter %/, $(head-y) $(common-y) \ + $(drivers-y) $(libs-y) $(xsm-y) $(arch-y) \ + $(crypto-y))) -vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ - $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ - $(net-y) $(net-m) $(libs-y) $(libs-m) $(virt-y))) +xen-alldirs := $(sort $(xen-dirs) \ + $(patsubst %/,%,$(filter %/, $(head-y) $(common-) \ + $(drivers-) $(libs-) $(xsm-) $(arch-) $(crypto-)))) +xen-alldirs += include -vmlinux-alldirs := $(sort $(vmlinux-dirs) Documentation \ - $(patsubst %/,%,$(filter %/, $(init-) $(core-) \ - $(drivers-) $(net-) $(libs-) $(virt-)))) - -init-y := $(patsubst %/, %/built-in.a, $(init-y)) -core-y := $(patsubst %/, %/built-in.a, $(core-y)) +head-y := $(patsubst %/, %/built-in.a, $(head-y)) +common-y := $(patsubst %/, %/built-in.a, $(common-y)) drivers-y := $(patsubst %/, %/built-in.a, $(drivers-y)) -net-y := $(patsubst %/, %/built-in.a, $(net-y)) libs-y1 := $(patsubst %/, %/lib.a, $(libs-y)) libs-y2 := $(patsubst %/, %/built-in.a, $(filter-out %.a, $(libs-y))) -virt-y := $(patsubst %/, %/built-in.a, $(virt-y)) +xsm-y := $(patsubst %/, %/built-in.a, $(xsm-y)) +arch-y := $(patsubst %/, %/built-in.a, $(arch-y)) +crypto-y := $(patsubst %/, %/built-in.a, $(crypto-y)) -# Externally visible symbols (used by link-vmlinux.sh) -export KBUILD_VMLINUX_OBJS := $(head-y) $(init-y) $(core-y) $(libs-y2) \ - $(drivers-y) $(net-y) $(virt-y) +# Externally visible symbols +export ALL_OBJS := $(head-y) $(common-y) $(drivers-y) $(libs-y2) \ + $(xsm-y) $(arch-y) $(crypto-y) export KBUILD_VMLINUX_LIBS := $(libs-y1) -export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds -export LDFLAGS_vmlinux -# used by scripts/package/Makefile -export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) LICENSES arch include scripts tools) - -vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS) - -ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) +export KBUILD_LDS := arch/$(SRCARCH)/xen.lds +export LDFLAGS_xen +export TARGET := xen -# Final link of vmlinux with optional arch pass after final link -cmd_link-vmlinux = \ - $(CONFIG_SHELL) $< $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_vmlinux) ; \ - $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) +xen-deps := $(KBUILD_LDS) $(ALL_OBJS) $(KBUILD_VMLINUX_LIBS) -vmlinux: scripts/link-vmlinux.sh autoksyms_recursive $(vmlinux-deps) FORCE - +$(call if_changed,link-vmlinux) +xen: $(xen-deps) FORCE + $(Q)$(MAKE) $(build)=arch/$(SRCARCH) xen -targets := vmlinux +targets := xen # The actual objects are generated when descending, # make sure no implicit rule kicks in -$(sort $(vmlinux-deps)): $(vmlinux-dirs) ; +$(sort $(xen-deps)): $(xen-dirs) ; -# Handle descending into subdirectories listed in $(vmlinux-dirs) +# Handle descending into subdirectories listed in $(xen-dirs) # Preset locale variables to speed up the build process. Limit locale # tweaks to this spot to avoid wrong language settings when running # make menuconfig etc. # Error messages still appears in the original language -PHONY += $(vmlinux-dirs) -$(vmlinux-dirs): prepare +PHONY += $(xen-dirs) +$(xen-dirs): prepare $(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1 -filechk_kernel.release = \ - echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" - -# Store (new) KERNELRELEASE string in include/config/kernel.release -include/config/kernel.release: FORCE - $(call filechk,kernel.release) - # Additional helpers built in scripts/ # Carefully list dependencies so we do not try to build scripts twice # in parallel PHONY += scripts -scripts: scripts_basic scripts_dtc - $(Q)$(MAKE) $(build)=$(@) +scripts: scripts_basic + $(Q)$(MAKE) $(build)=tools # Things we need to do before we recursively start building the kernel # or the modules are listed in "prepare". @@ -707,7 +739,7 @@ PHONY += prepare archprepare prepare3 # prepare3 is used to check if we are building in a separate output directory, # and if so do: # 1) Check that make has not been executed in the kernel src $(srctree) -prepare3: include/config/kernel.release +prepare3: ifdef building_out_of_srctree @$(kecho) ' Using $(srctree) as source for kernel' $(Q)if [ -f $(srctree)/.config -o \ @@ -719,11 +751,15 @@ ifdef building_out_of_srctree fi; endif -archprepare: archheaders archscripts scripts prepare3 outputmakefile \ - asm-generic $(version_h) $(autoksyms_h) include/generated/utsrelease.h +PHONY += preprepare +preprepare: + $(Q)[ -e $(objtree)/include/asm ] || ln -sf asm-$(SRCARCH) $(objtree)/include/asm + $(Q)$(MAKE) $(build)=include all + +archprepare: preprepare archheaders scripts prepare3 outputmakefile \ + $(version_h) prepare0: archprepare - $(Q)$(MAKE) $(build)=scripts/mod $(Q)$(MAKE) $(build)=. # All the preparing.. @@ -732,73 +768,63 @@ prepare: prepare0 # Generate some files # --------------------------------------------------------------------------- -# KERNELRELEASE can change from a few different places, meaning version.h +# KERNELRELEASE can change from a few different places, meaning compile.h # needs to be updated, so this check is forced on all builds -uts_len := 64 -define filechk_utsrelease.h - if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \ - echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \ - exit 1; \ - fi; \ - echo \#define UTS_RELEASE \"$(KERNELRELEASE)\" -endef - +# compile.h contains dynamic build info. Rebuilt on every 'make' invocation. define filechk_version.h - echo \#define LINUX_VERSION_CODE $(shell \ - expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \ - echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' + echo '#define XEN_COMPILE_DATE "$(XEN_BUILD_DATE)"'; \ + echo '#define XEN_COMPILE_TIME "$(XEN_BUILD_TIME)"'; \ + echo '#define XEN_COMPILE_BY "$(XEN_WHOAMI)"'; \ + echo '#define XEN_COMPILE_DOMAIN "$(XEN_DOMAIN)"'; \ + echo '#define XEN_COMPILE_HOST "$(XEN_BUILD_HOST)"'; \ + echo '#define XEN_COMPILER "$(shell $(CC) $(KBUILD_CFLAGS) --version 2>&1 | head -1)"'; \ + echo; \ + echo '#define XEN_VERSION $(XEN_VERSION)'; \ + echo '#define XEN_SUBVERSION $(XEN_SUBVERSION)'; \ + echo '#define XEN_EXTRAVERSION "$(XEN_EXTRAVERSION)"'; \ + echo; \ + echo '#define XEN_CHANGESET "$(shell tools/scmversion $(XEN_ROOT) || echo "unavailable")"'; \ + echo '#define XEN_BANNER "Xen $(XEN_FULLVERSION)"' endef $(version_h): FORCE $(call filechk,version.h) - $(Q)rm -f $(old_version_h) ### # Cleaning is done on three levels. # make clean Delete most generated files -# Leave enough to build external modules # make mrproper Delete the current configuration, and all generated files # make distclean Remove editor backup files, patch leftover files and the like # Directories & files removed with 'make clean' -CLEAN_DIRS += include/ksym -CLEAN_FILES += modules.builtin.modinfo # Directories & files removed with 'make mrproper' MRPROPER_DIRS += include/config include/generated \ - arch/$(SRCARCH)/include/generated .tmp_objdiff -MRPROPER_FILES += .config .config.old .version \ - Module.symvers \ - signing_key.pem signing_key.priv signing_key.x509 \ - x509.genkey extra_certificates signing_key.x509.keyid \ - signing_key.x509.signer vmlinux-gdb.py + arch/$(SRCARCH)/include/generated +MRPROPER_FILES += .config .config.old include/asm # Directories & files removed with 'make distclean' DISTCLEAN_DIRS += DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS -# clean - Delete most, but leave enough to build external modules +# clean - Delete most # clean: rm-dirs := $(CLEAN_DIRS) clean: rm-files := $(CLEAN_FILES) -clean-dirs := $(addprefix _clean_, . $(vmlinux-alldirs)) +clean-dirs := $(addprefix _clean_, . $(xen-alldirs)) -PHONY += $(clean-dirs) clean archclean vmlinuxclean +PHONY += $(clean-dirs) clean archclean $(clean-dirs): $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) -vmlinuxclean: - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean - $(Q)$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) clean) - -clean: archclean vmlinuxclean +clean: archclean # mrproper - Delete all generated files, including .config # mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) -mrproper-dirs := $(addprefix _mrproper_,scripts) +mrproper-dirs := $(addprefix _mrproper_,tools) PHONY += $(mrproper-dirs) mrproper $(mrproper-dirs): @@ -842,7 +868,7 @@ help: @echo ' distclean - mrproper + remove editor backup and patch files' @echo '' @echo 'Configuration targets:' - @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help + @$(MAKE) -f $(srctree)/tools/kconfig/Makefile help @echo '' @echo 'Other generic targets:' @echo ' all - Build all targets marked with [*]' @@ -950,17 +976,14 @@ $(help-board-dirs): help-%: clean: $(clean-dirs) $(call cmd,rmdirs) $(call cmd,rmfiles) - @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ - \( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \ - -o -name '*.ko.*' \ - -o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \ - -o -name '*.dwo' -o -name '*.lst' \ + @find . $(RCS_FIND_IGNORE) \ + \( -name '*.[aios]' -o -name '.*.cmd' \ + -o -name '*.dwo' \ -o -name '*.su' -o -name '*.mod' \ - -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ + -o -name '.*.d' -o -name '.*.tmp' \ -o -name '*.lex.c' -o -name '*.tab.[ch]' \ -o -name '*.asn1.[ch]' \ - -o -name '*.symtypes' -o -name 'modules.order' \ - -o -name modules.builtin -o -name '.tmp_*.o.*' \ + -o -name '.tmp_*.o.*' \ -o -name '*.c.[012]*.*' \ -o -name '*.ll' \ -o -name '*.gcno' \) -type f -print | xargs rm -f