[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCHv3] 02/28] build: hookup Kconfig build and usage
Wire in the Kconfig build and makefile rules to be able to generate valid configuration files to be used by the build process. 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 | 22 ++++++++++ xen/Rules.mk | 2 + 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/include/xen/config.h | 2 + xen/scripts/kconfig/.gitignore | 3 ++ xen/scripts/kconfig/Makefile | 77 +++++++++++++++++++++++++++++++++++ 14 files changed, 197 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..706aa99 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -17,12 +17,18 @@ 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 .PHONY: dist dist: install +.PHONY: build +build:: $(BASEDIR)/include/config/auto.conf + .PHONY: build install uninstall clean distclean cscope TAGS tags MAP gtags build install uninstall debug clean distclean cscope TAGS tags MAP gtags:: ifneq ($(XEN_TARGET_ARCH),x86_32) @@ -88,6 +94,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 +223,18 @@ 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 + +-include $(BASEDIR)/include/config/auto.conf.cmd diff --git a/xen/Rules.mk b/xen/Rules.mk index e9d03b9..011768a 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -12,6 +12,8 @@ frame_pointer ?= n lto ?= n kexec ?= y +-include $(BASEDIR)/include/config/auto.conf + include $(XEN_ROOT)/Config.mk # Hardcoded configuration implications and dependencies. diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig new file mode 100644 index 0000000..ef64b06 --- /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/arm32_defconfig" if ARM_32 + default "arch/arm/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..1e18aa1 --- /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/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/include/xen/config.h b/xen/include/xen/config.h index f7258c7..12a4688 100644 --- a/xen/include/xen/config.h +++ b/xen/include/xen/config.h @@ -12,6 +12,8 @@ #endif #include <asm/config.h> +#include <generated/autoconf.h> + #define EXPORT_SYMBOL(var) #define EXPORT_SYMBOL_GPL(var) 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 |