[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC 03/29] build: hookup initial Kconfig usage



Wire in the Kconfig build and makefile rules to be able to generate
valid configuration files to be used by the build process.

Signed-off-by: Doug Goldstein <cardoe@xxxxxxxxxx>
---
 .gitignore                    |  8 ++++++++
 xen/Kconfig                   | 26 ++++++++++++++++++++++++++
 xen/Makefile                  | 14 ++++++++++++++
 xen/Makefile.linux            | 21 ++++++++++-----------
 xen/arch/arm/Kconfig          | 27 +++++++++++++++++++++++++++
 xen/arch/arm/Makefile.kconfig |  8 ++++++++
 xen/arch/arm/defconfig        |  0
 xen/arch/x86/Kconfig          | 28 ++++++++++++++++++++++++++++
 xen/arch/x86/Makefile.kconfig | 26 ++++++++++++++++++++++++++
 xen/arch/x86/i386_defconfig   |  1 +
 xen/arch/x86/x86_64_defconfig |  0
 xen/common/Kconfig            |  4 ++++
 xen/drivers/Kconfig           |  3 +++
 13 files changed, 155 insertions(+), 11 deletions(-)
 create mode 100644 xen/Kconfig
 create mode 100644 xen/arch/arm/Kconfig
 create mode 100644 xen/arch/arm/Makefile.kconfig
 create mode 100644 xen/arch/arm/defconfig
 create mode 100644 xen/arch/x86/Kconfig
 create mode 100644 xen/arch/x86/Makefile.kconfig
 create mode 100644 xen/arch/x86/i386_defconfig
 create mode 100644 xen/arch/x86/x86_64_defconfig
 create mode 100644 xen/common/Kconfig
 create mode 100644 xen/drivers/Kconfig

diff --git a/.gitignore b/.gitignore
index 9ead7c4..a78494d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -218,6 +218,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
@@ -240,6 +245,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..7353077
--- /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 $KERNELVERSION Configuration"
+
+config SRCARCH
+       string
+       option env="SRCARCH"
+
+config ARCH
+       string
+       option env="ARCH"
+
+source "arch/$SRCARCH/Kconfig"
+
+config KERNELVERSION
+       string
+       option env="KERNELVERSION"
+
+config DEFCONFIG_LIST
+       string
+       option defconfig_list
+       default "$ARCH_DEFCONFIG"
+       default "arch/$SRCARCH/defconfig"
diff --git a/xen/Makefile b/xen/Makefile
index c556198..6bb9c27 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:: 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)
@@ -216,3 +222,11 @@ FORCE:
 
 %/: FORCE
        $(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in.o built_in_bin.o
+
+kconfig := oldsilentconfig oldconfig config menuconfig defconfig \
+       savedefconfig listnewconfig include/config/auto.conf
+.PHONY: $(kconfig)
+$(kconfig):
+       $(MAKE) -f Makefile.linux ARCH=$(XEN_TARGET_ARCH) $@
+
+-include include/config/auto.conf.cmd
diff --git a/xen/Makefile.linux b/xen/Makefile.linux
index c361593..ffb4aef 100644
--- a/xen/Makefile.linux
+++ b/xen/Makefile.linux
@@ -1,8 +1,7 @@
-VERSION = 4
-PATCHLEVEL = 2
+VERSION = $(XEN_VERSION)
+PATCHLEVEL = $(XEN_SUBVERSION)
 SUBLEVEL = 0
-EXTRAVERSION =
-NAME = Hurr durr I'ma sheep
+EXTRAVERSION = $(XEN_EXTRAVERSION)
 
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
@@ -144,7 +143,7 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, 
$(MAKECMDGOALS)) _all: sub-make
 
 sub-make: FORCE
        $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
-       -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
+       -f $(CURDIR)/Makefile.linux $(filter-out _all sub-make,$(MAKECMDGOALS))
 
 # Leave processing to above invocation of make
 skip-makefile := 1
@@ -509,7 +508,7 @@ $(filter-out __build_one_by_one, $(MAKECMDGOALS)): 
__build_one_by_one
 __build_one_by_one:
        $(Q)set -e; \
        for i in $(MAKECMDGOALS); do \
-               $(MAKE) -f $(srctree)/Makefile $$i; \
+               $(MAKE) -f $(srctree)/Makefile.linux $$i; \
        done
 
 else
@@ -521,7 +520,7 @@ ifeq ($(config-targets),1)
 # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
 # KBUILD_DEFCONFIG may point out an alternative default configuration
 # used for 'make defconfig'
-include arch/$(SRCARCH)/Makefile
+include arch/$(SRCARCH)/Makefile.kconfig
 export KBUILD_DEFCONFIG KBUILD_KCONFIG
 
 config: scripts_basic outputmakefile FORCE
@@ -569,7 +568,7 @@ $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
 # if auto.conf.cmd is missing then we are probably in a cleaned tree so
 # we execute the config step to be sure to catch updated Kconfig files
 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
-       $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
+       $(Q)$(MAKE) -f $(srctree)/Makefile.linux silentoldconfig
 else
 # external modules needs include/generated/autoconf.h and 
include/config/auto.conf
 # but do not care if they are up-to-date. Use auto.conf to trigger the test
@@ -602,7 +601,7 @@ all: vmlinux
 ARCH_CPPFLAGS :=
 ARCH_AFLAGS :=
 ARCH_CFLAGS :=
-include arch/$(SRCARCH)/Makefile
+include arch/$(SRCARCH)/Makefile.kconfig
 
 KBUILD_CFLAGS  += $(call cc-option,-fno-delete-null-pointer-checks,)
 
@@ -921,7 +920,7 @@ quiet_cmd_link-vmlinux = LINK    $@
 # execute if the rest of the kernel build went well.
 vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
 ifdef CONFIG_HEADERS_CHECK
-       $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
+       $(Q)$(MAKE) -f $(srctree)/Makefile.linux headers_check
 endif
 ifdef CONFIG_SAMPLES
        $(Q)$(MAKE) $(build)=samples
@@ -1015,7 +1014,7 @@ define filechk_version.h
        echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
 endef
 
-$(version_h): $(srctree)/Makefile FORCE
+$(version_h): $(srctree)/Makefile.linux FORCE
        $(call filechk,version.h)
        $(Q)rm -f $(old_version_h)
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
new file mode 100644
index 0000000..8db5ff9
--- /dev/null
+++ b/xen/arch/arm/Kconfig
@@ -0,0 +1,27 @@
+# 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
+
+source "common/Kconfig"
+
+source "drivers/Kconfig"
diff --git a/xen/arch/arm/Makefile.kconfig b/xen/arch/arm/Makefile.kconfig
new file mode 100644
index 0000000..35a475f
--- /dev/null
+++ b/xen/arch/arm/Makefile.kconfig
@@ -0,0 +1,8 @@
+
+KBUILD_DEFCONFIG := $(ARCH)_defconfig
+
+KBUILD_CFLAGS += -Iinclude/asm-arm/$(ARCH)
+
+define archhelp
+  echo '* xen.gz    - Compressed Xen image'
+endef
diff --git a/xen/arch/arm/defconfig b/xen/arch/arm/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..5e34f4e
--- /dev/null
+++ b/xen/arch/x86/Kconfig
@@ -0,0 +1,28 @@
+# Select 32 or 64 bit
+config 64BIT
+       bool "64-bit Xen" if ARCH = "x86_64"
+       default ARCH != "i386"
+       ---help---
+         Say yes to build a 64-bit Xen
+         Say no to build a 32-bit Xen
+
+config X86_32
+       def_bool y
+       depends on !64BIT
+
+config X86_64
+       def_bool y
+       depends on 64BIT
+
+config X86
+       def_bool y
+       select HAS_GDBSX
+
+config ARCH_DEFCONFIG
+       string
+       default "arch/x86/i386_defconfig" if X86_32
+       default "arch/x86/x86_64_defconfig" if X86_64
+
+source "common/Kconfig"
+
+source "drivers/Kconfig"
diff --git a/xen/arch/x86/Makefile.kconfig b/xen/arch/x86/Makefile.kconfig
new file mode 100644
index 0000000..cedf921
--- /dev/null
+++ b/xen/arch/x86/Makefile.kconfig
@@ -0,0 +1,26 @@
+
+KBUILD_DEFCONFIG := $(ARCH)_defconfig
+
+KBUILD_CFLAGS += -Iinclude/asm-x86/mach-default
+KBUILD_CFLAGS += -Iinclude/asm-x86/mach-generic
+
+core-y += arch/x86/
+
+drivers-$(CONFIG_OPROFILE) += arch/x86/oprofile/
+
+all: xen.gz
+
+xen.gz: vmlinux
+       $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
+
+PHONY += install
+install:
+       $(Q)$(MAKE) $(build)=$(boot) $@
+
+archclean:
+       $(Q)rm -rf $(objtree)/arch/x86
+       $(Q)$(MAKE) $(clean)=$(boot)
+
+define archhelp
+  echo '* xen.gz    - Compressed Xen image'
+endef
diff --git a/xen/arch/x86/i386_defconfig b/xen/arch/x86/i386_defconfig
new file mode 100644
index 0000000..2441d5a
--- /dev/null
+++ b/xen/arch/x86/i386_defconfig
@@ -0,0 +1 @@
+# CONFIG_64BIT is not set
diff --git a/xen/arch/x86/x86_64_defconfig b/xen/arch/x86/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
-- 
2.4.9


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.