diff mbox series

[v16,93/99] meson: Introduce target-specific Kconfig

Message ID 20210604155312.15902-94-alex.bennee@linaro.org
State Superseded
Headers show
Series arm tcg/kvm refactor and split with kvm only support | expand

Commit Message

Alex Bennée June 4, 2021, 3:53 p.m. UTC
From: Philippe Mathieu-Daudé <f4bug@amsat.org>


Add a target-specific Kconfig.

Target foo now has CONFIG_FOO defined.

Two architecture have a particularity, ARM and MIPS:
their 64-bit version include the 32-bit subset.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Message-Id: <20210131111316.232778-6-f4bug@amsat.org>
---
 meson.build               |  3 ++-
 Kconfig                   |  1 +
 target/Kconfig            | 23 +++++++++++++++++++++++
 target/alpha/Kconfig      |  2 ++
 target/arm/Kconfig        |  6 ++++++
 target/avr/Kconfig        |  2 ++
 target/cris/Kconfig       |  2 ++
 target/hppa/Kconfig       |  2 ++
 target/i386/Kconfig       |  5 +++++
 target/lm32/Kconfig       |  2 ++
 target/m68k/Kconfig       |  2 ++
 target/microblaze/Kconfig |  2 ++
 target/mips/Kconfig       |  6 ++++++
 target/moxie/Kconfig      |  2 ++
 target/nios2/Kconfig      |  2 ++
 target/openrisc/Kconfig   |  2 ++
 target/ppc/Kconfig        |  5 +++++
 target/riscv/Kconfig      |  5 +++++
 target/rx/Kconfig         |  2 ++
 target/s390x/Kconfig      |  2 ++
 target/sh4/Kconfig        |  2 ++
 target/sparc/Kconfig      |  5 +++++
 target/tilegx/Kconfig     |  2 ++
 target/tricore/Kconfig    |  2 ++
 target/unicore32/Kconfig  |  2 ++
 target/xtensa/Kconfig     |  2 ++
 26 files changed, 92 insertions(+), 1 deletion(-)
 create mode 100644 target/Kconfig
 create mode 100644 target/alpha/Kconfig
 create mode 100644 target/arm/Kconfig
 create mode 100644 target/avr/Kconfig
 create mode 100644 target/cris/Kconfig
 create mode 100644 target/hppa/Kconfig
 create mode 100644 target/i386/Kconfig
 create mode 100644 target/lm32/Kconfig
 create mode 100644 target/m68k/Kconfig
 create mode 100644 target/microblaze/Kconfig
 create mode 100644 target/mips/Kconfig
 create mode 100644 target/moxie/Kconfig
 create mode 100644 target/nios2/Kconfig
 create mode 100644 target/openrisc/Kconfig
 create mode 100644 target/ppc/Kconfig
 create mode 100644 target/riscv/Kconfig
 create mode 100644 target/rx/Kconfig
 create mode 100644 target/s390x/Kconfig
 create mode 100644 target/sh4/Kconfig
 create mode 100644 target/sparc/Kconfig
 create mode 100644 target/tilegx/Kconfig
 create mode 100644 target/tricore/Kconfig
 create mode 100644 target/unicore32/Kconfig
 create mode 100644 target/xtensa/Kconfig

-- 
2.20.1

Comments

Richard Henderson June 5, 2021, 10:33 p.m. UTC | #1
On 6/4/21 8:53 AM, Alex Bennée wrote:
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

> 

> Add a target-specific Kconfig.

> 

> Target foo now has CONFIG_FOO defined.

> 

> Two architecture have a particularity, ARM and MIPS:

> their 64-bit version include the 32-bit subset.

> 

> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

> ---

>   meson.build               |  3 ++-

>   Kconfig                   |  1 +

>   target/Kconfig            | 23 +++++++++++++++++++++++

>   target/alpha/Kconfig      |  2 ++

>   target/arm/Kconfig        |  6 ++++++

>   target/avr/Kconfig        |  2 ++

>   target/cris/Kconfig       |  2 ++

>   target/hppa/Kconfig       |  2 ++

>   target/i386/Kconfig       |  5 +++++

>   target/lm32/Kconfig       |  2 ++

>   target/m68k/Kconfig       |  2 ++

>   target/microblaze/Kconfig |  2 ++

>   target/mips/Kconfig       |  6 ++++++

>   target/moxie/Kconfig      |  2 ++

>   target/nios2/Kconfig      |  2 ++

>   target/openrisc/Kconfig   |  2 ++

>   target/ppc/Kconfig        |  5 +++++

>   target/riscv/Kconfig      |  5 +++++

>   target/rx/Kconfig         |  2 ++

>   target/s390x/Kconfig      |  2 ++

>   target/sh4/Kconfig        |  2 ++

>   target/sparc/Kconfig      |  5 +++++

>   target/tilegx/Kconfig     |  2 ++

>   target/tricore/Kconfig    |  2 ++

>   target/unicore32/Kconfig  |  2 ++

>   target/xtensa/Kconfig     |  2 ++

>   26 files changed, 92 insertions(+), 1 deletion(-)

>   create mode 100644 target/Kconfig

>   create mode 100644 target/alpha/Kconfig

>   create mode 100644 target/arm/Kconfig

>   create mode 100644 target/avr/Kconfig

>   create mode 100644 target/cris/Kconfig

>   create mode 100644 target/hppa/Kconfig

>   create mode 100644 target/i386/Kconfig

>   create mode 100644 target/lm32/Kconfig

>   create mode 100644 target/m68k/Kconfig

>   create mode 100644 target/microblaze/Kconfig

>   create mode 100644 target/mips/Kconfig

>   create mode 100644 target/moxie/Kconfig

>   create mode 100644 target/nios2/Kconfig

>   create mode 100644 target/openrisc/Kconfig

>   create mode 100644 target/ppc/Kconfig

>   create mode 100644 target/riscv/Kconfig

>   create mode 100644 target/rx/Kconfig

>   create mode 100644 target/s390x/Kconfig

>   create mode 100644 target/sh4/Kconfig

>   create mode 100644 target/sparc/Kconfig

>   create mode 100644 target/tilegx/Kconfig

>   create mode 100644 target/tricore/Kconfig

>   create mode 100644 target/unicore32/Kconfig

>   create mode 100644 target/xtensa/Kconfig


I guess you haven't rebased since unicore, moxie et al were removed?

> --- a/meson.build

> +++ b/meson.build

> @@ -1359,7 +1359,8 @@ foreach target : target_dirs

>         command: [minikconf,

>                   get_option('default_devices') ? '--defconfig' : '--allnoconfig',

>                   config_devices_mak, '@DEPFILE@', '@INPUT@',

> -                host_kconfig, accel_kconfig])

> +                host_kconfig, accel_kconfig,

> +                'CONFIG_' + config_target['TARGET_ARCH'].to_upper() + '=y'])


I can understand this,

>   

>       config_devices_data = configuration_data()

>       config_devices = keyval.load(config_devices_mak)

> diff --git a/Kconfig b/Kconfig

> index d52ebd839b..fb6a24a2de 100644

> --- a/Kconfig

> +++ b/Kconfig

> @@ -1,5 +1,6 @@

>   source Kconfig.host

>   source backends/Kconfig

>   source accel/Kconfig

> +source target/Kconfig

>   source hw/Kconfig

>   source semihosting/Kconfig

> diff --git a/target/Kconfig b/target/Kconfig

> new file mode 100644

> index 0000000000..a6f719f223

> --- /dev/null

> +++ b/target/Kconfig

> @@ -0,0 +1,23 @@

> +source alpha/Kconfig

> +source arm/Kconfig

> +source avr/Kconfig

> +source cris/Kconfig

> +source hppa/Kconfig

> +source i386/Kconfig

> +source lm32/Kconfig

> +source m68k/Kconfig

> +source microblaze/Kconfig

> +source mips/Kconfig

> +source moxie/Kconfig

> +source nios2/Kconfig

> +source openrisc/Kconfig

> +source ppc/Kconfig

> +source riscv/Kconfig

> +source rx/Kconfig

> +source s390x/Kconfig

> +source sh4/Kconfig

> +source sparc/Kconfig

> +source tilegx/Kconfig

> +source tricore/Kconfig

> +source unicore32/Kconfig

> +source xtensa/Kconfig

> diff --git a/target/alpha/Kconfig b/target/alpha/Kconfig

> new file mode 100644

> index 0000000000..267222c05b

> --- /dev/null

> +++ b/target/alpha/Kconfig

> @@ -0,0 +1,2 @@

> +config ALPHA

> +    bool


But not these.  I guess the whole Kconfig thing is processed unconditionally, 
and there must be some definition?


r~
Alex Bennée June 18, 2021, 4:31 p.m. UTC | #2
Richard Henderson <richard.henderson@linaro.org> writes:

> On 6/4/21 8:53 AM, Alex Bennée wrote:

>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>

>> Add a target-specific Kconfig.

>> Target foo now has CONFIG_FOO defined.

>> Two architecture have a particularity, ARM and MIPS:

>> their 64-bit version include the 32-bit subset.

>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>> Message-Id: <20210131111316.232778-6-f4bug@amsat.org>

>> ---

>>   meson.build               |  3 ++-

>>   Kconfig                   |  1 +

>>   target/Kconfig            | 23 +++++++++++++++++++++++

>>   target/alpha/Kconfig      |  2 ++

>>   target/arm/Kconfig        |  6 ++++++

>>   target/avr/Kconfig        |  2 ++

>>   target/cris/Kconfig       |  2 ++

>>   target/hppa/Kconfig       |  2 ++

>>   target/i386/Kconfig       |  5 +++++

>>   target/lm32/Kconfig       |  2 ++

>>   target/m68k/Kconfig       |  2 ++

>>   target/microblaze/Kconfig |  2 ++

>>   target/mips/Kconfig       |  6 ++++++

>>   target/moxie/Kconfig      |  2 ++

>>   target/nios2/Kconfig      |  2 ++

>>   target/openrisc/Kconfig   |  2 ++

>>   target/ppc/Kconfig        |  5 +++++

>>   target/riscv/Kconfig      |  5 +++++

>>   target/rx/Kconfig         |  2 ++

>>   target/s390x/Kconfig      |  2 ++

>>   target/sh4/Kconfig        |  2 ++

>>   target/sparc/Kconfig      |  5 +++++

>>   target/tilegx/Kconfig     |  2 ++

>>   target/tricore/Kconfig    |  2 ++

>>   target/unicore32/Kconfig  |  2 ++

>>   target/xtensa/Kconfig     |  2 ++

>>   26 files changed, 92 insertions(+), 1 deletion(-)

>>   create mode 100644 target/Kconfig

>>   create mode 100644 target/alpha/Kconfig

>>   create mode 100644 target/arm/Kconfig

>>   create mode 100644 target/avr/Kconfig

>>   create mode 100644 target/cris/Kconfig

>>   create mode 100644 target/hppa/Kconfig

>>   create mode 100644 target/i386/Kconfig

>>   create mode 100644 target/lm32/Kconfig

>>   create mode 100644 target/m68k/Kconfig

>>   create mode 100644 target/microblaze/Kconfig

>>   create mode 100644 target/mips/Kconfig

>>   create mode 100644 target/moxie/Kconfig

>>   create mode 100644 target/nios2/Kconfig

>>   create mode 100644 target/openrisc/Kconfig

>>   create mode 100644 target/ppc/Kconfig

>>   create mode 100644 target/riscv/Kconfig

>>   create mode 100644 target/rx/Kconfig

>>   create mode 100644 target/s390x/Kconfig

>>   create mode 100644 target/sh4/Kconfig

>>   create mode 100644 target/sparc/Kconfig

>>   create mode 100644 target/tilegx/Kconfig

>>   create mode 100644 target/tricore/Kconfig

>>   create mode 100644 target/unicore32/Kconfig

>>   create mode 100644 target/xtensa/Kconfig

>

> I guess you haven't rebased since unicore, moxie et al were removed?


Ahh it happily rebased them without realising their superfluousness.

>

>> --- a/meson.build

>> +++ b/meson.build

>> @@ -1359,7 +1359,8 @@ foreach target : target_dirs

>>         command: [minikconf,

>>                   get_option('default_devices') ? '--defconfig' : '--allnoconfig',

>>                   config_devices_mak, '@DEPFILE@', '@INPUT@',

>> -                host_kconfig, accel_kconfig])

>> +                host_kconfig, accel_kconfig,

>> +                'CONFIG_' + config_target['TARGET_ARCH'].to_upper() + '=y'])

>

> I can understand this,

>

>>         config_devices_data = configuration_data()

>>       config_devices = keyval.load(config_devices_mak)

>> diff --git a/Kconfig b/Kconfig

>> index d52ebd839b..fb6a24a2de 100644

>> --- a/Kconfig

>> +++ b/Kconfig

>> @@ -1,5 +1,6 @@

>>   source Kconfig.host

>>   source backends/Kconfig

>>   source accel/Kconfig

>> +source target/Kconfig

>>   source hw/Kconfig

>>   source semihosting/Kconfig

>> diff --git a/target/Kconfig b/target/Kconfig

>> new file mode 100644

>> index 0000000000..a6f719f223

>> --- /dev/null

>> +++ b/target/Kconfig

>> @@ -0,0 +1,23 @@

>> +source alpha/Kconfig

>> +source arm/Kconfig

>> +source avr/Kconfig

>> +source cris/Kconfig

>> +source hppa/Kconfig

>> +source i386/Kconfig

>> +source lm32/Kconfig

>> +source m68k/Kconfig

>> +source microblaze/Kconfig

>> +source mips/Kconfig

>> +source moxie/Kconfig

>> +source nios2/Kconfig

>> +source openrisc/Kconfig

>> +source ppc/Kconfig

>> +source riscv/Kconfig

>> +source rx/Kconfig

>> +source s390x/Kconfig

>> +source sh4/Kconfig

>> +source sparc/Kconfig

>> +source tilegx/Kconfig

>> +source tricore/Kconfig

>> +source unicore32/Kconfig

>> +source xtensa/Kconfig

>> diff --git a/target/alpha/Kconfig b/target/alpha/Kconfig

>> new file mode 100644

>> index 0000000000..267222c05b

>> --- /dev/null

>> +++ b/target/alpha/Kconfig

>> @@ -0,0 +1,2 @@

>> +config ALPHA

>> +    bool

>

> But not these.  I guess the whole Kconfig thing is processed

> unconditionally, and there must be some definition?


Pretty much - otherwise you get the Kconfig generator complaining:

  Configuring aarch64-softmmu-config-target.h using configuration
  Configuring aarch64-softmmu-config-devices.mak with command

  ../../meson.build:1372:4: ERROR: Running configure command failed.

  undefined symbol AARCH64
  Traceback (most recent call last):
    File "/home/alex/lsrc/qemu.git/scripts/minikconf.py", line 703, in <module>
      config = data.compute_config()
    File "/home/alex/lsrc/qemu.git/scripts/minikconf.py", line 222, in compute_config
      raise KconfigDataError("there were undefined symbols")
  __main__.KconfigDataError: there were undefined symbols


  A full log can be found at /home/alex/lsrc/qemu.git/builds/arm.all/meson-logs/meson-log.txt
  ninja: error: rebuilding 'build.ninja': subcommand failed
  FAILED: build.ninja 
  /usr/bin/python3 /home/alex/lsrc/qemu.git/meson/meson.py --internal regenerate /home/alex/lsrc/qemu.git /home/alex/lsrc/qemu.git/builds/arm.all --backend ninja
  make: *** [Makefile:154: run-ninja] Error 1

I guess we can tweak minikconf to accept the symbol? Paolo?

-- 
Alex Bennée
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index e2a22984b8..09c7809d6b 100644
--- a/meson.build
+++ b/meson.build
@@ -1359,7 +1359,8 @@  foreach target : target_dirs
       command: [minikconf,
                 get_option('default_devices') ? '--defconfig' : '--allnoconfig',
                 config_devices_mak, '@DEPFILE@', '@INPUT@',
-                host_kconfig, accel_kconfig])
+                host_kconfig, accel_kconfig,
+                'CONFIG_' + config_target['TARGET_ARCH'].to_upper() + '=y'])
 
     config_devices_data = configuration_data()
     config_devices = keyval.load(config_devices_mak)
diff --git a/Kconfig b/Kconfig
index d52ebd839b..fb6a24a2de 100644
--- a/Kconfig
+++ b/Kconfig
@@ -1,5 +1,6 @@ 
 source Kconfig.host
 source backends/Kconfig
 source accel/Kconfig
+source target/Kconfig
 source hw/Kconfig
 source semihosting/Kconfig
diff --git a/target/Kconfig b/target/Kconfig
new file mode 100644
index 0000000000..a6f719f223
--- /dev/null
+++ b/target/Kconfig
@@ -0,0 +1,23 @@ 
+source alpha/Kconfig
+source arm/Kconfig
+source avr/Kconfig
+source cris/Kconfig
+source hppa/Kconfig
+source i386/Kconfig
+source lm32/Kconfig
+source m68k/Kconfig
+source microblaze/Kconfig
+source mips/Kconfig
+source moxie/Kconfig
+source nios2/Kconfig
+source openrisc/Kconfig
+source ppc/Kconfig
+source riscv/Kconfig
+source rx/Kconfig
+source s390x/Kconfig
+source sh4/Kconfig
+source sparc/Kconfig
+source tilegx/Kconfig
+source tricore/Kconfig
+source unicore32/Kconfig
+source xtensa/Kconfig
diff --git a/target/alpha/Kconfig b/target/alpha/Kconfig
new file mode 100644
index 0000000000..267222c05b
--- /dev/null
+++ b/target/alpha/Kconfig
@@ -0,0 +1,2 @@ 
+config ALPHA
+    bool
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
new file mode 100644
index 0000000000..3f3394a22b
--- /dev/null
+++ b/target/arm/Kconfig
@@ -0,0 +1,6 @@ 
+config ARM
+    bool
+
+config AARCH64
+    bool
+    select ARM
diff --git a/target/avr/Kconfig b/target/avr/Kconfig
new file mode 100644
index 0000000000..155592d353
--- /dev/null
+++ b/target/avr/Kconfig
@@ -0,0 +1,2 @@ 
+config AVR
+    bool
diff --git a/target/cris/Kconfig b/target/cris/Kconfig
new file mode 100644
index 0000000000..3fdc309fbb
--- /dev/null
+++ b/target/cris/Kconfig
@@ -0,0 +1,2 @@ 
+config CRIS
+    bool
diff --git a/target/hppa/Kconfig b/target/hppa/Kconfig
new file mode 100644
index 0000000000..395a35d799
--- /dev/null
+++ b/target/hppa/Kconfig
@@ -0,0 +1,2 @@ 
+config HPPA
+    bool
diff --git a/target/i386/Kconfig b/target/i386/Kconfig
new file mode 100644
index 0000000000..ce6968906e
--- /dev/null
+++ b/target/i386/Kconfig
@@ -0,0 +1,5 @@ 
+config I386
+    bool
+
+config X86_64
+    bool
diff --git a/target/lm32/Kconfig b/target/lm32/Kconfig
new file mode 100644
index 0000000000..09de5b703a
--- /dev/null
+++ b/target/lm32/Kconfig
@@ -0,0 +1,2 @@ 
+config LM32
+    bool
diff --git a/target/m68k/Kconfig b/target/m68k/Kconfig
new file mode 100644
index 0000000000..23debad519
--- /dev/null
+++ b/target/m68k/Kconfig
@@ -0,0 +1,2 @@ 
+config M68K
+    bool
diff --git a/target/microblaze/Kconfig b/target/microblaze/Kconfig
new file mode 100644
index 0000000000..a5410d9218
--- /dev/null
+++ b/target/microblaze/Kconfig
@@ -0,0 +1,2 @@ 
+config MICROBLAZE
+    bool
diff --git a/target/mips/Kconfig b/target/mips/Kconfig
new file mode 100644
index 0000000000..6adf145354
--- /dev/null
+++ b/target/mips/Kconfig
@@ -0,0 +1,6 @@ 
+config MIPS
+    bool
+
+config MIPS64
+    bool
+    select MIPS
diff --git a/target/moxie/Kconfig b/target/moxie/Kconfig
new file mode 100644
index 0000000000..52391bbd28
--- /dev/null
+++ b/target/moxie/Kconfig
@@ -0,0 +1,2 @@ 
+config MOXIE
+    bool
diff --git a/target/nios2/Kconfig b/target/nios2/Kconfig
new file mode 100644
index 0000000000..1529ab8950
--- /dev/null
+++ b/target/nios2/Kconfig
@@ -0,0 +1,2 @@ 
+config NIOS2
+    bool
diff --git a/target/openrisc/Kconfig b/target/openrisc/Kconfig
new file mode 100644
index 0000000000..e0da4ac1df
--- /dev/null
+++ b/target/openrisc/Kconfig
@@ -0,0 +1,2 @@ 
+config OPENRISC
+    bool
diff --git a/target/ppc/Kconfig b/target/ppc/Kconfig
new file mode 100644
index 0000000000..3ff152051a
--- /dev/null
+++ b/target/ppc/Kconfig
@@ -0,0 +1,5 @@ 
+config PPC
+    bool
+
+config PPC64
+    bool
diff --git a/target/riscv/Kconfig b/target/riscv/Kconfig
new file mode 100644
index 0000000000..b9e5932f13
--- /dev/null
+++ b/target/riscv/Kconfig
@@ -0,0 +1,5 @@ 
+config RISCV32
+    bool
+
+config RISCV64
+    bool
diff --git a/target/rx/Kconfig b/target/rx/Kconfig
new file mode 100644
index 0000000000..aceb5ed28f
--- /dev/null
+++ b/target/rx/Kconfig
@@ -0,0 +1,2 @@ 
+config RX
+    bool
diff --git a/target/s390x/Kconfig b/target/s390x/Kconfig
new file mode 100644
index 0000000000..72da48136c
--- /dev/null
+++ b/target/s390x/Kconfig
@@ -0,0 +1,2 @@ 
+config S390X
+    bool
diff --git a/target/sh4/Kconfig b/target/sh4/Kconfig
new file mode 100644
index 0000000000..2397c86028
--- /dev/null
+++ b/target/sh4/Kconfig
@@ -0,0 +1,2 @@ 
+config SH4
+    bool
diff --git a/target/sparc/Kconfig b/target/sparc/Kconfig
new file mode 100644
index 0000000000..70cc0f3a21
--- /dev/null
+++ b/target/sparc/Kconfig
@@ -0,0 +1,5 @@ 
+config SPARC
+    bool
+
+config SPARC64
+    bool
diff --git a/target/tilegx/Kconfig b/target/tilegx/Kconfig
new file mode 100644
index 0000000000..aad882826a
--- /dev/null
+++ b/target/tilegx/Kconfig
@@ -0,0 +1,2 @@ 
+config TILEGX
+    bool
diff --git a/target/tricore/Kconfig b/target/tricore/Kconfig
new file mode 100644
index 0000000000..9313409309
--- /dev/null
+++ b/target/tricore/Kconfig
@@ -0,0 +1,2 @@ 
+config TRICORE
+    bool
diff --git a/target/unicore32/Kconfig b/target/unicore32/Kconfig
new file mode 100644
index 0000000000..62c9d10b38
--- /dev/null
+++ b/target/unicore32/Kconfig
@@ -0,0 +1,2 @@ 
+config UNICORE32
+    bool
diff --git a/target/xtensa/Kconfig b/target/xtensa/Kconfig
new file mode 100644
index 0000000000..a3c8dc7f6d
--- /dev/null
+++ b/target/xtensa/Kconfig
@@ -0,0 +1,2 @@ 
+config XTENSA
+    bool