diff mbox

[46/47] configure: Generate Kconfig.targets with --target-list

Message ID 1377471536-12423-47-git-send-email-akoskovacs@gmx.com
State New
Headers show

Commit Message

Ákos Kovács Aug. 25, 2013, 10:58 p.m. UTC
Signed-off-by: Ákos Kovács <akoskovacs@gmx.com>
---
 configure |   11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Paolo Bonzini Aug. 26, 2013, 11:14 a.m. UTC | #1
Il 26/08/2013 00:58, Ákos Kovács ha scritto:
> Signed-off-by: Ákos Kovács <akoskovacs@gmx.com>
> ---
>  configure |   11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/configure b/configure
> index 18fa608..353c0cb 100755
> --- a/configure
> +++ b/configure
> @@ -4288,6 +4288,7 @@ case "$target_name" in
>    ;;
>    sparc64)
>      TARGET_BASE_ARCH=sparc
> +    kconfig_subdirs="$kconfig_subdirs sparc64"
>    ;;
>    sparc32plus)
>      TARGET_ARCH=sparc64
> @@ -4311,6 +4312,7 @@ if [ "$TARGET_BASE_ARCH" = "" ]; then
>    TARGET_BASE_ARCH=$TARGET_ARCH
>  fi
>  
> +kconfig_subdirs="$kconfig_subdirs $TARGET_BASE_ARCH"
>  symlink "$source_path/Makefile.target" "$target_dir/Makefile"
>  
>  upper() {
> @@ -4494,6 +4496,15 @@ echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
>  
>  done # for target in $targets
>  
> +# Generate Kconfig.targets
> +kconfig_targets="Kconfig.targets"
> +kconfig_subdirs=$(echo $kconfig_subdirs | tr ' ' '\n' | sort -u | tr '\n' ' ')
> +echo "# Automatically generated by configure - do not modify" > $kconfig_targets
> +
> +for i in $kconfig_subdirs ; do
> +  echo "source \"hw/$i/Kconfig\"" >> $kconfig_targets
> +done
> +
>  if [ "$pixman" = "internal" ]; then
>    echo "config-host.h: subdir-pixman" >> $config_host_mak
>  fi
> 

There is one issue that we have not solved yet here (pointed out by
Peter Maydell on IRC).  Right now, the presence of a file in
default-configs/ is used to check if a target name is correct.  We need
to figure out a different way to do the same thing.

This needs to cover both softmmu and user targets.  For softmmu, perhaps
there should be a hw/boards/ directory with a subdirectory for each
target.  "source hw/i386/Kconfig" (for Kconfig) or "obj-y += ../i386/"
can be used to recurse back to a common directory from there.

For linux-user, the problem is that we don't have anything to configure
with Kconfig---so no reason to have a Kconfig file or a directory
structure with one directory per target.

Paolo
diff mbox

Patch

diff --git a/configure b/configure
index 18fa608..353c0cb 100755
--- a/configure
+++ b/configure
@@ -4288,6 +4288,7 @@  case "$target_name" in
   ;;
   sparc64)
     TARGET_BASE_ARCH=sparc
+    kconfig_subdirs="$kconfig_subdirs sparc64"
   ;;
   sparc32plus)
     TARGET_ARCH=sparc64
@@ -4311,6 +4312,7 @@  if [ "$TARGET_BASE_ARCH" = "" ]; then
   TARGET_BASE_ARCH=$TARGET_ARCH
 fi
 
+kconfig_subdirs="$kconfig_subdirs $TARGET_BASE_ARCH"
 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
 
 upper() {
@@ -4494,6 +4496,15 @@  echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
 
 done # for target in $targets
 
+# Generate Kconfig.targets
+kconfig_targets="Kconfig.targets"
+kconfig_subdirs=$(echo $kconfig_subdirs | tr ' ' '\n' | sort -u | tr '\n' ' ')
+echo "# Automatically generated by configure - do not modify" > $kconfig_targets
+
+for i in $kconfig_subdirs ; do
+  echo "source \"hw/$i/Kconfig\"" >> $kconfig_targets
+done
+
 if [ "$pixman" = "internal" ]; then
   echo "config-host.h: subdir-pixman" >> $config_host_mak
 fi