[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCHv5] 02/28] build: build Kconfig and config rules
Wire in the Kconfig build and makefile rules to be able to generate valid configuration files to be used by the build process but don't actually use the output for affecting the Xen build. CC: Ian Campbell <ian.campbell@xxxxxxxxxx> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx> CC: Keir Fraser <keir@xxxxxxx> CC: Jan Beulich <jbeulich@xxxxxxxx> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Signed-off-by: Doug Goldstein <cardoe@xxxxxxxxxx> --- .gitignore | 8 ++++ xen/Kconfig | 26 ++++++++++++ xen/Makefile | 17 ++++++++ xen/arch/arm/Kconfig | 31 ++++++++++++++ xen/arch/arm/configs/arm32_defconfig | 1 + xen/arch/arm/configs/arm64_defconfig | 0 xen/arch/x86/Kconfig | 18 ++++++++ xen/arch/x86/configs/x86_64_defconfig | 0 xen/common/Kconfig | 4 ++ xen/drivers/Kconfig | 3 ++ xen/scripts/kconfig/.gitignore | 3 ++ xen/scripts/kconfig/Makefile | 77 +++++++++++++++++++++++++++++++++++ 12 files changed, 188 insertions(+) create mode 100644 xen/Kconfig create mode 100644 xen/arch/arm/Kconfig create mode 100644 xen/arch/arm/configs/arm32_defconfig create mode 100644 xen/arch/arm/configs/arm64_defconfig create mode 100644 xen/arch/x86/Kconfig create mode 100644 xen/arch/x86/configs/x86_64_defconfig create mode 100644 xen/common/Kconfig create mode 100644 xen/drivers/Kconfig create mode 100644 xen/scripts/kconfig/Makefile diff --git a/.gitignore b/.gitignore index 91e1430..780df23 100644 --- a/.gitignore +++ b/.gitignore @@ -217,6 +217,11 @@ tools/xentrace/tbctl tools/xentrace/xenctx tools/xentrace/xentrace xen/.banner +xen/.config +xen/.config.old +xen/defconfig +xen/**/*.cmd +xen/**/modules.order xen/System.map xen/arch/arm/asm-offsets.s xen/arch/arm/xen.lds @@ -239,6 +244,9 @@ xen/include/headers++.chk xen/include/asm xen/include/asm-*/asm-offsets.h xen/include/compat/* +xen/include/config.h +xen/include/config/ +xen/include/generated/ xen/include/public/public xen/include/xen/*.new xen/include/xen/acm_policy.h diff --git a/xen/Kconfig b/xen/Kconfig new file mode 100644 index 0000000..b2d0fe2 --- /dev/null +++ b/xen/Kconfig @@ -0,0 +1,26 @@ +# +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/kconfig-language.txt from the Linux +# kernel source tree. +# +mainmenu "Xen/$SRCARCH $XEN_FULLVERSION Configuration" + +config SRCARCH + string + option env="SRCARCH" + +config ARCH + string + option env="ARCH" + +source "arch/$SRCARCH/Kconfig" + +config XEN_FULLVERSION + string + option env="XEN_FULLVERSION" + +config DEFCONFIG_LIST + string + option defconfig_list + default "$ARCH_DEFCONFIG" + default "arch/$SRCARCH/defconfig" diff --git a/xen/Makefile b/xen/Makefile index c556198..f2f4378 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -17,6 +17,9 @@ export XEN_ROOT := $(BASEDIR)/.. EFI_MOUNTPOINT ?= $(BOOT_DIR)/efi +# Don't break if the build process wasn't called from the top level +XEN_TARGET_ARCH ?= $(shell uname -m) + .PHONY: default default: build @@ -88,6 +91,7 @@ _clean: delete-unfresh-files $(MAKE) -f $(BASEDIR)/Rules.mk -C xsm clean $(MAKE) -f $(BASEDIR)/Rules.mk -C crypto clean $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) clean + $(MAKE) -f scripts/kconfig/Makefile clean rm -f include/asm *.o $(TARGET) $(TARGET).gz $(TARGET).efi $(TARGET)-syms *~ core rm -f include/asm-*/asm-offsets.h rm -f .banner @@ -216,3 +220,16 @@ FORCE: %/: FORCE $(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in.o built_in_bin.o + +kconfig := silentoldconfig oldconfig config menuconfig defconfig \ + nconfig xconfig gconfig savedefconfig listnewconfig olddefconfig +.PHONY: $(kconfig) +$(kconfig): + $(MAKE) -f $(BASEDIR)/scripts/kconfig/Makefile ARCH=$(XEN_TARGET_ARCH) $@ + +$(BASEDIR)/include/config/%.conf: $(BASEDIR)/include/config/auto.conf.cmd + $(Q)$(MAKE) -f $(BASEDIR)/scripts/kconfig/Makefile ARCH=$(XEN_TARGET_ARCH) silentoldconfig + +# Allow people to just run `make` as before and not force them to configure +$(BASEDIR)/.config $(BASEDIR)/include/config/auto.conf.cmd: ; + $(Q)$(MAKE) -f $(BASEDIR)/scripts/kconfig/Makefile ARCH=$(XEN_TARGET_ARCH) defconfig diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig new file mode 100644 index 0000000..a473137 --- /dev/null +++ b/xen/arch/arm/Kconfig @@ -0,0 +1,31 @@ +# Select 32 or 64 bit +config 64BIT + bool "64-bit Xen" if ARCH = "arm64" + default ARCH != "arm32" + help + Say yes to build a 64-bit Xen + Say no to build a 32-bit Xen + +config ARM_32 + def_bool y + depends on !64BIT + +config ARM_64 + def_bool y + depends on 64BIT + +config ARM + def_bool y + +config ARCH_DEFCONFIG + string + default "arch/arm/configs/arm32_defconfig" if ARM_32 + default "arch/arm/configs/arm64_defconfig" if ARM_64 + +menu "Architecture Features" + +endmenu + +source "common/Kconfig" + +source "drivers/Kconfig" diff --git a/xen/arch/arm/configs/arm32_defconfig b/xen/arch/arm/configs/arm32_defconfig new file mode 100644 index 0000000..5608ff9 --- /dev/null +++ b/xen/arch/arm/configs/arm32_defconfig @@ -0,0 +1 @@ +CONFIG_64BIT=n diff --git a/xen/arch/arm/configs/arm64_defconfig b/xen/arch/arm/configs/arm64_defconfig new file mode 100644 index 0000000..e69de29 diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig new file mode 100644 index 0000000..47b715d --- /dev/null +++ b/xen/arch/x86/Kconfig @@ -0,0 +1,18 @@ +config X86_64 + def_bool y + +config X86 + def_bool y + select HAS_GDBSX + +config ARCH_DEFCONFIG + string + default "arch/x86/configs/x86_64_defconfig" + +menu "Architecture Features" + +endmenu + +source "common/Kconfig" + +source "drivers/Kconfig" diff --git a/xen/arch/x86/configs/x86_64_defconfig b/xen/arch/x86/configs/x86_64_defconfig new file mode 100644 index 0000000..e69de29 diff --git a/xen/common/Kconfig b/xen/common/Kconfig new file mode 100644 index 0000000..0251856 --- /dev/null +++ b/xen/common/Kconfig @@ -0,0 +1,4 @@ + +menu "Common Features" + +endmenu diff --git a/xen/drivers/Kconfig b/xen/drivers/Kconfig new file mode 100644 index 0000000..7bc7b6e --- /dev/null +++ b/xen/drivers/Kconfig @@ -0,0 +1,3 @@ +menu "Device Drivers" + +endmenu diff --git a/xen/scripts/kconfig/.gitignore b/xen/scripts/kconfig/.gitignore index be603c4..97430c3 100644 --- a/xen/scripts/kconfig/.gitignore +++ b/xen/scripts/kconfig/.gitignore @@ -11,6 +11,9 @@ gconf.glade.h *.pot *.mo +.tmp_gtkcheck +.tmp_qtcheck + # # configuration programs # diff --git a/xen/scripts/kconfig/Makefile b/xen/scripts/kconfig/Makefile new file mode 100644 index 0000000..5674b00 --- /dev/null +++ b/xen/scripts/kconfig/Makefile @@ -0,0 +1,77 @@ +# xen/scripts/kconfig + +MAKEFLAGS += -rR + +# default rule to do nothing +all: + +XEN_ROOT = $(CURDIR)/.. + +# Xen doesn't have a silent build flag +quiet := silent_ +Q := @ +kecho := : + +# eventually you'll want to do out of tree builds +srctree = $(XEN_ROOT)/xen +objtree = $(srctree) +src := scripts/kconfig +obj := $(src) +KBUILD_SRC := + +# handle functions (most of these lifted from different Linux makefiles +dot-target = $(dir $@).$(notdir $@) +depfile = $(subst $(comma),,$(dot-target).d) +basetarget = $(basename $(notdir $@)) +cmd = $(cmd_$(1)) +if_changed = $(if y, \ + @set -e; \ + $(cmd_$(1)); \ + ) + +if_changed_dep = $(if y, \ + @set -e; \ + $(cmd_$(1)); \ + ) + +define multi_depend +$(foreach m, $(notdir $1), \ + $(eval $(obj)/$m: \ + $(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s))))))) +endef + +# Set our default defconfig file +KBUILD_DEFCONFIG := $(ARCH)_defconfig + +# provide our shell +CONFIG_SHELL := $(SHELL) + +# provide the host compiler +HOSTCC := gcc +HOSTCXX := g++ + +# force target +PHONY += FORCE + +FORCE: + +SRCARCH = $(shell echo $(ARCH) | \ + sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g') +export SRCARCH + +# include the original Makefile from Linux +include $(src)/Makefile.linux +include $(src)/../Makefile.host + +# clean up rule +clean-deps = $(foreach f,$(host-cobjs) $(host-cxxobjs),$(dir $f).$(notdir $f).d) +clean-shipped = $(patsubst %_shipped,%,$(wildcard $(obj)/*_shipped)) + +clean: + rm -rf $(clean-files) + rm -rf $(clean-deps) + rm -rf $(host-csingle) $(host-cmulti) $(host-cxxmulti) $(host-cobjs) $(host-cxxobjs) + rm -rf $(clean-shipped) + +$(obj)/zconf%: $(src)/zconf%_shipped + @cp -f $< $@ -- 2.4.10 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |