Message ID | 20200605093256.30351-6-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | accel: Allow targets to use Kconfig | expand |
Philippe Mathieu-Daudé <philmd@redhat.com> writes: > Add a rule to return the base architecture for a QEMU target. > > The current list of TARGET_BASE_ARCH is: > > $ git grep TARGET_BASE_ARCH configure > configure:7785:TARGET_BASE_ARCH="" > configure:7795: TARGET_BASE_ARCH=i386 > configure:7813: TARGET_BASE_ARCH=arm > configure:7846: TARGET_BASE_ARCH=mips > configure:7854: TARGET_BASE_ARCH=mips > configure:7864: TARGET_BASE_ARCH=openrisc > configure:7871: TARGET_BASE_ARCH=ppc > configure:7879: TARGET_BASE_ARCH=ppc > configure:7887: TARGET_BASE_ARCH=ppc > configure:7894: TARGET_BASE_ARCH=riscv > configure:7900: TARGET_BASE_ARCH=riscv > configure:7920: TARGET_BASE_ARCH=sparc > configure:7925: TARGET_BASE_ARCH=sparc This seems backwards. We encode the base architecture in configure.sh because this is where we can make such distinctions. We then: echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak Precisely so the make system can know what it is for any given target. So: > +# base-arch > +# Usage: $(call base-arch, target) > +# > +# @target: the target architecture. > +# > +# This macro will return the base architecture for a target. > +# > +# As example, $(call base-arch, aarch64) returns 'arm'. > +base-arch = $(strip \ > + $(if $(call startwith,aarch64,$1),arm,\ > + $(if $(call startwith,arm,$1),arm,\ > + $(if $(call startwith,microblaze,$1),microblaze,\ > + $(if $(call startwith,mips,$1),mips,\ > + $(if $(call startwith,ppc,$1),ppc,\ > + $(if $(call startwith,riscv,$1),riscv,\ > + $(if $(call startwith,sh4,$1),sh4,\ > + $(if $(call startwith,sparc,$1),sparc,\ > + $(if $(call startwith,xtensa,$1),xtensa,\ > + $(if $(call strequal,x86_64,$1),i386,\ > + $1\ > + )\ > + )\ > + )\ > + )\ > + )\ > + )\ > + )\ > + )\ > + )\ > + )\ > + ) Seems like a replication of information already calculated in configure and prone to breakage if we add a new one (or come up with some franken architecture at a later date).
diff --git a/rules.mak b/rules.mak index ccc1c49604..907f9aca91 100644 --- a/rules.mak +++ b/rules.mak @@ -452,3 +452,38 @@ atomic = $(eval $1: $(call sentinel,$1) ; @:) \ print-%: @echo '$*=$($*)' + +# base-arch +# Usage: $(call base-arch, target) +# +# @target: the target architecture. +# +# This macro will return the base architecture for a target. +# +# As example, $(call base-arch, aarch64) returns 'arm'. +base-arch = $(strip \ + $(if $(call startwith,aarch64,$1),arm,\ + $(if $(call startwith,arm,$1),arm,\ + $(if $(call startwith,microblaze,$1),microblaze,\ + $(if $(call startwith,mips,$1),mips,\ + $(if $(call startwith,ppc,$1),ppc,\ + $(if $(call startwith,riscv,$1),riscv,\ + $(if $(call startwith,sh4,$1),sh4,\ + $(if $(call startwith,sparc,$1),sparc,\ + $(if $(call startwith,xtensa,$1),xtensa,\ + $(if $(call strequal,x86_64,$1),i386,\ + $1\ + )\ + )\ + )\ + )\ + )\ + )\ + )\ + )\ + )\ + )\ + ) + +print-base-arch-%: + @echo '$*=$(call base-arch,$*)'
Add a rule to return the base architecture for a QEMU target. The current list of TARGET_BASE_ARCH is: $ git grep TARGET_BASE_ARCH configure configure:7785:TARGET_BASE_ARCH="" configure:7795: TARGET_BASE_ARCH=i386 configure:7813: TARGET_BASE_ARCH=arm configure:7846: TARGET_BASE_ARCH=mips configure:7854: TARGET_BASE_ARCH=mips configure:7864: TARGET_BASE_ARCH=openrisc configure:7871: TARGET_BASE_ARCH=ppc configure:7879: TARGET_BASE_ARCH=ppc configure:7887: TARGET_BASE_ARCH=ppc configure:7894: TARGET_BASE_ARCH=riscv configure:7900: TARGET_BASE_ARCH=riscv configure:7920: TARGET_BASE_ARCH=sparc configure:7925: TARGET_BASE_ARCH=sparc The rule can be tested calling 'print-base-arch-$TARGET': $ make \ print-base-arch-openrisc \ print-base-arch-aarch64_be \ print-base-arch-x86_64 \ print-base-arch-mips64el \ print-base-arch-ppc64 \ print-base-arch-riscv64 openrisc=openrisc aarch64_be=arm x86_64=i386 mips64el=mips ppc64=ppc riscv64=riscv Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- rules.mak | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)