aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2019-01-23 14:56:01 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2019-03-07 21:45:53 +0100
commite0e312f3525ad6ac18ba6633af29190dd9620cbc (patch)
treec7de4268db87c6232d0efe943c615aab36b08135
parent82f5181777ebe04b550fd94a1d04c49dd3f012dc (diff)
build: switch to Kconfig
The make_device_config.sh script is replaced by minikconf, which is modified to support the same command line as its predecessor. The roots of the parsing are default-configs/*.mak, Kconfig.host and hw/Kconfig. One difference with make_device_config.sh is that all symbols have to be defined in a Kconfig file, including those coming from the configure script. This is the reason for the Kconfig.host file introduced in the previous patch. Whenever a file in default-configs/*.mak used $(...) to refer to a config-host.mak symbol, this is replaced by a Kconfig dependency; this part must be done already in this patch for bisectability. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Yang Zhong <yang.zhong@intel.com> Acked-by: Thomas Huth <thuth@redhat.com> Message-Id: <20190123065618.3520-28-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--Kconfig.host9
-rw-r--r--Makefile26
-rw-r--r--Makefile.target7
-rwxr-xr-xconfigure6
-rw-r--r--default-configs/arm-softmmu.mak3
-rw-r--r--default-configs/i386-softmmu.mak5
-rw-r--r--default-configs/lm32-softmmu.mak1
-rw-r--r--default-configs/pci.mak1
-rw-r--r--default-configs/ppc-softmmu.mak1
-rw-r--r--default-configs/ppc64-softmmu.mak5
-rw-r--r--default-configs/s390x-softmmu.mak4
-rw-r--r--default-configs/virtio.mak3
-rw-r--r--hw/9pfs/Kconfig2
-rw-r--r--hw/arm/Kconfig1
-rw-r--r--hw/block/Kconfig2
-rw-r--r--hw/display/Kconfig3
-rw-r--r--hw/i386/Kconfig8
-rw-r--r--hw/input/Kconfig5
-rw-r--r--hw/intc/Kconfig12
-rw-r--r--hw/misc/Kconfig2
-rw-r--r--hw/ppc/Kconfig4
-rw-r--r--hw/scsi/Kconfig7
-rw-r--r--hw/tpm/Kconfig2
-rw-r--r--hw/vfio/Kconfig9
-rw-r--r--hw/xtensa/Kconfig2
-rw-r--r--rules.mak2
-rw-r--r--scripts/make_device_config.sh30
27 files changed, 102 insertions, 60 deletions
diff --git a/Kconfig.host b/Kconfig.host
index 11fefa4813..add5b179f7 100644
--- a/Kconfig.host
+++ b/Kconfig.host
@@ -1,5 +1,6 @@
# These are "proxy" symbols used to pass config-host.mak values
-# down to Kconfig.
+# down to Kconfig. See also MINIKCONF_ARGS in the Makefile:
+# these two need to be kept in sync.
config KVM
bool
@@ -10,9 +11,15 @@ config LINUX
config OPENGL
bool
+config X11
+ bool
+
config SPICE
bool
+config IVSHMEM
+ bool
+
config TPM
bool
diff --git a/Makefile b/Makefile
index cad585b4d6..2b251c39d9 100644
--- a/Makefile
+++ b/Makefile
@@ -327,8 +327,8 @@ DOCS=
endif
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR)
-SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
-SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
+SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(filter %-softmmu, $(TARGET_DIRS)))
+SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %.d, $(SUBDIR_DEVICES_MAK))
ifeq ($(SUBDIR_DEVICES_MAK),)
config-all-devices.mak:
@@ -343,9 +343,25 @@ endif
-include $(SUBDIR_DEVICES_MAK_DEP)
-%/config-devices.mak: default-configs/%.mak $(SRC_PATH)/scripts/make_device_config.sh
- $(call quiet-command, \
- $(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $< $*-config-devices.mak.d $@ > $@.tmp,"GEN","$@.tmp")
+# This has to be kept in sync with Kconfig.host.
+MINIKCONF_ARGS = \
+ $@ $*-config.devices.mak.d $< $(MINIKCONF_INPUTS) \
+ CONFIG_KVM=$(CONFIG_KVM) \
+ CONFIG_SPICE=$(CONFIG_SPICE) \
+ CONFIG_IVSHMEM=$(CONFIG_IVSHMEM) \
+ CONFIG_TPM=$(CONFIG_TPM) \
+ CONFIG_XEN=$(CONFIG_XEN) \
+ CONFIG_OPENGL=$(CONFIG_OPENGL) \
+ CONFIG_X11=$(CONFIG_X11) \
+ CONFIG_VHOST_USER=$(CONFIG_VHOST_USER) \
+ CONFIG_VIRTFS=$(CONFIG_VIRTFS) \
+ CONFIG_LINUX=$(CONFIG_LINUX)
+
+MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig
+MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py \
+
+$(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_INPUTS) $(BUILD_DIR)/config-host.mak
+ $(call quiet-command, $(MINIKCONF) $(MINIKCONF_ARGS) > $@.tmp, "GEN", "$@.tmp")
$(call quiet-command, if test -f $@; then \
if cmp -s $@.old $@; then \
mv $@.tmp $@; \
diff --git a/Makefile.target b/Makefile.target
index 3b79e7074c..ec72733ace 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -4,9 +4,12 @@ BUILD_DIR?=$(CURDIR)/..
include ../config-host.mak
include config-target.mak
-include config-devices.mak
include $(SRC_PATH)/rules.mak
+ifdef CONFIG_SOFTMMU
+include config-devices.mak
+endif
+
$(call set-vpath, $(SRC_PATH):$(BUILD_DIR))
ifdef CONFIG_LINUX
QEMU_CFLAGS += -I../linux-headers
@@ -201,7 +204,9 @@ all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y)
all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
all-obj-$(CONFIG_SOFTMMU) += $(slirp-obj-y)
+ifdef CONFIG_SOFTMMU
$(QEMU_PROG_BUILD): config-devices.mak
+endif
COMMON_LDADDS = ../libqemuutil.a
diff --git a/configure b/configure
index 5921d08cb3..89e4a23f6c 100755
--- a/configure
+++ b/configure
@@ -7438,12 +7438,18 @@ fi
if supported_xen_target $target; then
echo "CONFIG_XEN=y" >> $config_target_mak
+ echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak
if test "$xen_pci_passthrough" = yes; then
echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
fi
+else
+ echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak
fi
if supported_kvm_target $target; then
echo "CONFIG_KVM=y" >> $config_target_mak
+ echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak
+else
+ echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak
fi
if supported_hax_target $target; then
echo "CONFIG_HAX=y" >> $config_target_mak
diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
index bd6943b691..797bfa52fe 100644
--- a/default-configs/arm-softmmu.mak
+++ b/default-configs/arm-softmmu.mak
@@ -51,7 +51,6 @@ CONFIG_ARM_V7M=y
CONFIG_NETDUINO2=y
CONFIG_ARM_GIC=y
-CONFIG_ARM_GIC_KVM=$(CONFIG_KVM)
CONFIG_ARM_TIMER=y
CONFIG_ARM_MPTIMER=y
CONFIG_A9_GTIMER=y
@@ -126,8 +125,6 @@ CONFIG_VERSATILE_PCI=y
CONFIG_VERSATILE_I2C=y
CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y
-CONFIG_VFIO=$(CONFIG_LINUX)
-CONFIG_VFIO_PLATFORM=y
CONFIG_VFIO_XGMAC=y
CONFIG_VFIO_AMD_XGBE=y
diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
index 15b628757b..412c8c5b4f 100644
--- a/default-configs/i386-softmmu.mak
+++ b/default-configs/i386-softmmu.mak
@@ -4,7 +4,6 @@ include pci.mak
include sound.mak
include usb.mak
include hyperv.mak
-CONFIG_QXL=$(CONFIG_SPICE)
CONFIG_VGA_ISA=y
CONFIG_VGA_CIRRUS=y
CONFIG_VMWARE_VGA=y
@@ -37,8 +36,6 @@ CONFIG_HPET=y
CONFIG_APPLESMC=y
CONFIG_I8259=y
CONFIG_PFLASH_CFI01=y
-CONFIG_TPM_TIS=$(CONFIG_TPM)
-CONFIG_TPM_CRB=$(CONFIG_TPM)
CONFIG_MC146818RTC=y
CONFIG_PCI_PIIX=y
CONFIG_WDT_IB700=y
@@ -66,9 +63,9 @@ CONFIG_ACPI_SMBUS=y
CONFIG_SMBUS_EEPROM=y
CONFIG_FW_CFG_DMA=y
CONFIG_I2C=y
-CONFIG_SEV=$(CONFIG_KVM)
CONFIG_VTD=y
CONFIG_AMD_IOMMU=y
CONFIG_PAM=y
+CONFIG_PC=y
CONFIG_I440FX=y
CONFIG_Q35=y
diff --git a/default-configs/lm32-softmmu.mak b/default-configs/lm32-softmmu.mak
index 4049b23562..ef0f4bae72 100644
--- a/default-configs/lm32-softmmu.mak
+++ b/default-configs/lm32-softmmu.mak
@@ -2,7 +2,6 @@
CONFIG_LM32=y
CONFIG_MILKYMIST=y
-CONFIG_MILKYMIST_TMU2=$(call land,$(CONFIG_X11),$(CONFIG_OPENGL))
CONFIG_FRAMEBUFFER=y
CONFIG_PTIMER=y
CONFIG_PFLASH_CFI01=y
diff --git a/default-configs/pci.mak b/default-configs/pci.mak
index 055219030a..3d4c71d2af 100644
--- a/default-configs/pci.mak
+++ b/default-configs/pci.mak
@@ -47,6 +47,5 @@ CONFIG_VGA_PCI=y
CONFIG_BOCHS_DISPLAY=y
CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM)
CONFIG_ROCKER=y
-CONFIG_VFIO=$(CONFIG_LINUX)
CONFIG_VFIO_PCI=y
CONFIG_EDID=y
diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak
index 52acb7cf39..90118cb767 100644
--- a/default-configs/ppc-softmmu.mak
+++ b/default-configs/ppc-softmmu.mak
@@ -18,7 +18,6 @@ CONFIG_I8259=y
CONFIG_XILINX=y
CONFIG_XILINX_ETHLITE=y
CONFIG_E500=y
-CONFIG_OPENPIC_KVM=$(call land,$(CONFIG_E500),$(CONFIG_KVM))
CONFIG_PLATFORM_BUS=y
CONFIG_ETSEC=y
CONFIG_PPC405=y
diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak
index 7f34ad0528..a0a9151328 100644
--- a/default-configs/ppc64-softmmu.mak
+++ b/default-configs/ppc64-softmmu.mak
@@ -13,11 +13,6 @@ CONFIG_ISA_IPMI_BT=y
# For pSeries
CONFIG_PSERIES=y
CONFIG_VIRTIO_VGA=y
-CONFIG_XICS=$(CONFIG_PSERIES)
-CONFIG_XICS_SPAPR=$(CONFIG_PSERIES)
-CONFIG_XICS_KVM=$(call land,$(CONFIG_PSERIES),$(CONFIG_KVM))
-CONFIG_XIVE=$(CONFIG_PSERIES)
-CONFIG_XIVE_SPAPR=$(CONFIG_PSERIES)
CONFIG_MEM_DEVICE=y
CONFIG_DIMM=y
CONFIG_SPAPR_RNG=y
diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak
index 6f2c6cec18..2794ffb8bd 100644
--- a/default-configs/s390x-softmmu.mak
+++ b/default-configs/s390x-softmmu.mak
@@ -1,12 +1,10 @@
CONFIG_PCI=y
-CONFIG_VIRTIO_PCI=$(CONFIG_PCI)
+CONFIG_VIRTIO_PCI=y
include virtio.mak
CONFIG_SCLPCONSOLE=y
CONFIG_TERMINAL3270=y
CONFIG_S390_FLIC=y
-CONFIG_S390_FLIC_KVM=$(CONFIG_KVM)
CONFIG_WDT_DIAG288=y
CONFIG_S390_CCW_VIRTIO=y
-CONFIG_VFIO=$(CONFIG_LINUX)
CONFIG_VFIO_CCW=y
CONFIG_VFIO_AP=y
diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak
index b653aa06b1..51599ed276 100644
--- a/default-configs/virtio.mak
+++ b/default-configs/virtio.mak
@@ -1,5 +1,3 @@
-CONFIG_VHOST_USER_SCSI=$(CONFIG_VHOST_USER)
-CONFIG_VHOST_USER_BLK=$(CONFIG_VHOST_USER)
CONFIG_VIRTIO=y
CONFIG_VIRTIO_9P=$(CONFIG_VIRTFS)
CONFIG_VIRTIO_BALLOON=y
@@ -12,4 +10,3 @@ CONFIG_VIRTIO_RNG=y
CONFIG_SCSI=y
CONFIG_VIRTIO_SCSI=y
CONFIG_VIRTIO_SERIAL=y
-CONFIG_VIRTIO_INPUT_HOST=$(CONFIG_LINUX)
diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig
index a4750999d9..c9e244fdff 100644
--- a/hw/9pfs/Kconfig
+++ b/hw/9pfs/Kconfig
@@ -1,2 +1,4 @@
config VIRTIO_9P
bool
+ default y
+ depends on VIRTFS
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
index e4386ce78f..9eab67bddd 100644
--- a/hw/arm/Kconfig
+++ b/hw/arm/Kconfig
@@ -1,5 +1,6 @@
config ARM_VIRT
bool
+ imply VFIO_PLATFORM
config DIGIC
bool
diff --git a/hw/block/Kconfig b/hw/block/Kconfig
index 9d418bce4d..65431c47f2 100644
--- a/hw/block/Kconfig
+++ b/hw/block/Kconfig
@@ -27,3 +27,5 @@ config VIRTIO_BLK
config VHOST_USER_BLK
bool
+ default y
+ depends on VHOST_USER && LINUX
diff --git a/hw/display/Kconfig b/hw/display/Kconfig
index d5c022c886..1149ea2bcd 100644
--- a/hw/display/Kconfig
+++ b/hw/display/Kconfig
@@ -51,6 +51,8 @@ config FRAMEBUFFER
config MILKYMIST_TMU2
bool
+ default y
+ depends on OPENGL && X11
config SM501
bool
@@ -66,6 +68,7 @@ config VGA
config QXL
bool
+ depends on SPICE && PCI
config VIRTIO_GPU
bool
diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig
index c851e2b5ab..307a804349 100644
--- a/hw/i386/Kconfig
+++ b/hw/i386/Kconfig
@@ -1,5 +1,13 @@
config SEV
bool
+ depends on KVM
+
+config PC
+ bool
+ imply QXL
+ imply SEV
+ imply TPM_CRB
+ imply TPM_TIS
config I440FX
bool
diff --git a/hw/input/Kconfig b/hw/input/Kconfig
index 91bae47498..c729dcd0b2 100644
--- a/hw/input/Kconfig
+++ b/hw/input/Kconfig
@@ -19,5 +19,10 @@ config TSC2005
config VIRTIO_INPUT
bool
+config VIRTIO_INPUT_HOST
+ bool
+ default y
+ depends on LINUX
+
config TSC210X
bool
diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
index 69adbd135f..6eea14e804 100644
--- a/hw/intc/Kconfig
+++ b/hw/intc/Kconfig
@@ -21,18 +21,28 @@ config APIC
config ARM_GIC_KVM
bool
+ default y
+ depends on ARM_GIC && KVM
config OPENPIC_KVM
bool
+ default y
+ depends on OPENPIC && KVM
config XICS
bool
+ default y
+ depends on PSERIES
config XICS_SPAPR
bool
+ default y
+ depends on PSERIES
config XICS_KVM
bool
+ default y
+ depends on XICS && KVM
config ALLWINNER_A10_PIC
bool
@@ -42,6 +52,8 @@ config S390_FLIC
config S390_FLIC_KVM
bool
+ default y
+ depends on S390_FLIC && KVM
config OMPIC
bool
diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig
index d5126349d9..fc068efdfd 100644
--- a/hw/misc/Kconfig
+++ b/hw/misc/Kconfig
@@ -48,6 +48,8 @@ config MACIO
config IVSHMEM_DEVICE
bool
+ default y
+ depends on PCI && LINUX && IVSHMEM
config ECCMEMCTL
bool
diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
index 608745488a..fb085d76fd 100644
--- a/hw/ppc/Kconfig
+++ b/hw/ppc/Kconfig
@@ -39,6 +39,10 @@ config VIRTEX
config XIVE
bool
+ default y
+ depends on PSERIES
config XIVE_SPAPR
bool
+ default y
+ depends on PSERIES
diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig
index eb78478ef0..a3518a3754 100644
--- a/hw/scsi/Kconfig
+++ b/hw/scsi/Kconfig
@@ -19,8 +19,15 @@ config ESP
config ESP_PCI
bool
+config SPAPR_VSCSI
+ bool
+ default y
+ depends on PSERIES
+
config VIRTIO_SCSI
bool
config VHOST_USER_SCSI
bool
+ default y
+ depends on VHOST_USER && LINUX
diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig
index 2eee8eb865..b5d1724f8c 100644
--- a/hw/tpm/Kconfig
+++ b/hw/tpm/Kconfig
@@ -3,9 +3,11 @@ config TPM
config TPM_TIS
bool
+ depends on TPM
config TPM_CRB
bool
+ depends on TPM
config TPM_PASSTHROUGH
bool
diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig
index 36069674cb..0fdff10c13 100644
--- a/hw/vfio/Kconfig
+++ b/hw/vfio/Kconfig
@@ -1,14 +1,21 @@
config VFIO
bool
+ depends on LINUX
config VFIO_PCI
bool
+ select VFIO
+ depends on LINUX
config VFIO_CCW
bool
+ select VFIO
+ depends on LINUX
config VFIO_PLATFORM
bool
+ select VFIO
+ depends on LINUX
config VFIO_XGMAC
bool
@@ -18,3 +25,5 @@ config VFIO_AMD_XGBE
config VFIO_AP
bool
+ select VFIO
+ depends on LINUX
diff --git a/hw/xtensa/Kconfig b/hw/xtensa/Kconfig
index 97543a9263..dc8eaf6080 100644
--- a/hw/xtensa/Kconfig
+++ b/hw/xtensa/Kconfig
@@ -1,5 +1,5 @@
config XTENSA_SIM
bool
-config XTENSA_FPGA
+config XTENSA_XTFPGA
bool
diff --git a/rules.mak b/rules.mak
index 19f3d2c126..df45bcffb4 100644
--- a/rules.mak
+++ b/rules.mak
@@ -144,7 +144,7 @@ cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \
cc-c-option = $(if $(shell $(CC) $1 $2 -c -o /dev/null -xc /dev/null \
>/dev/null 2>&1 && echo OK), $2, $3)
-VPATH_SUFFIXES = %.c %.h %.S %.cc %.cpp %.m %.mak %.texi %.sh %.rc
+VPATH_SUFFIXES = %.c %.h %.S %.cc %.cpp %.m %.mak %.texi %.sh %.rc Kconfig%
set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES),$(eval vpath $(PATTERN) $1)))
# install-prog list, dir
diff --git a/scripts/make_device_config.sh b/scripts/make_device_config.sh
deleted file mode 100644
index 354af317b3..0000000000
--- a/scripts/make_device_config.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/sh
-# Writes a target device config file to stdout, from a default and from
-# include directives therein. Also emits Makefile dependencies.
-#
-# Usage: make_device_config.sh SRC DEPFILE-NAME DEPFILE-TARGET > DEST
-
-src=$1
-dep=$2
-target=$3
-src_dir=$(dirname $src)
-all_includes=
-
-process_includes () {
- cat $1 | grep '^include' | \
- while read include file ; do
- all_includes="$all_includes $src_dir/$file"
- process_includes $src_dir/$file
- done
-}
-
-f=$src
-while [ -n "$f" ] ; do
- f=$(cat $f | tr -d '\r' | awk '/^include / {printf "'$src_dir'/%s ", $2}')
- [ $? = 0 ] || exit 1
- all_includes="$all_includes $f"
-done
-process_includes $src
-
-cat $src $all_includes | grep -v '^include'
-echo "$target: $all_includes" > $dep