|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCHv2] 02/27] 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.
Signed-off-by: Doug Goldstein <cardoe@xxxxxxxxxx>
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 | 18 ++++++++++
xen/Rules.mk | 2 ++
xen/arch/arm/Kconfig | 31 ++++++++++++++++++
xen/arch/arm/Makefile.kconfig | 8 +++++
xen/arch/arm/defconfig | 0
xen/arch/x86/Kconfig | 18 ++++++++++
xen/arch/x86/Makefile.kconfig | 9 +++++
xen/arch/x86/i386_defconfig | 1 +
xen/arch/x86/x86_64_defconfig | 0
xen/common/Kconfig | 4 +++
xen/drivers/Kconfig | 3 ++
xen/include/xen/config.h | 2 ++
xen/scripts/kconfig/Makefile | 76 +++++++++++++++++++++++++++++++++++++++++++
15 files changed, 206 insertions(+)
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
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..2407313
--- /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 $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..2e63a48 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)
@@ -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,14 @@ 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 scripts/kconfig/Makefile ARCH=$(XEN_TARGET_ARCH) $@
+
+include/config/auto.conf: include/config/auto.conf.cmd
+ $(Q)$(MAKE) -f scripts/kconfig/Makefile ARCH=$(XEN_TARGET_ARCH)
silentoldconfig
+
+-include 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..422de13
--- /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/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..644f684
--- /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" if X86_64
+
+menu "Architecture Features"
+
+endmenu
+
+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..8ffa0cd
--- /dev/null
+++ b/xen/arch/x86/Makefile.kconfig
@@ -0,0 +1,9 @@
+
+KBUILD_DEFCONFIG := $(ARCH)_defconfig
+
+KBUILD_CFLAGS += -Iinclude/asm-x86/mach-default
+KBUILD_CFLAGS += -Iinclude/asm-x86/mach-generic
+
+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
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/Makefile b/xen/scripts/kconfig/Makefile
new file mode 100644
index 0000000..5e2fd9c
--- /dev/null
+++ b/xen/scripts/kconfig/Makefile
@@ -0,0 +1,76 @@
+# xen/scripts/kconfig
+
+MAKEFLAGS += -rR
+
+# default rule to do nothing
+all:
+
+XEN_ROOT = $(CURDIR)/..
+include $(XEN_ROOT)/config/Tools.mk
+
+# 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
+
+
+# provide our shell
+CONFIG_SHELL := $(BASH)
+
+# 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 |