diff mbox series

[v7,05/11] rules.mak: Add base-arch() rule

Message ID 20200605175821.20926-6-philmd@redhat.com (mailing list archive)
State New, archived
Headers show
Series accel: Allow targets to use Kconfig | expand

Commit Message

Philippe Mathieu-Daudé June 5, 2020, 5:58 p.m. UTC
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(+)

Comments

Richard Henderson June 5, 2020, 9:52 p.m. UTC | #1
On 6/5/20 10:58 AM, Philippe Mathieu-Daudé wrote:
> 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(+)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
diff mbox series

Patch

diff --git a/rules.mak b/rules.mak
index 7b58a6b8c5..c4f2f35754 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 startswith,aarch64,$1),arm,\
+		  $(if $(call startswith,arm,$1),arm,\
+		    $(if $(call startswith,microblaze,$1),microblaze,\
+		      $(if $(call startswith,mips,$1),mips,\
+		        $(if $(call startswith,ppc,$1),ppc,\
+		          $(if $(call startswith,riscv,$1),riscv,\
+		            $(if $(call startswith,sh4,$1),sh4,\
+		              $(if $(call startswith,sparc,$1),sparc,\
+		                $(if $(call startswith,xtensa,$1),xtensa,\
+		                  $(if $(call strequal,x86_64,$1),i386,\
+		                    $1\
+		                   )\
+		                 )\
+		               )\
+		             )\
+		           )\
+		         )\
+		       )\
+		     )\
+		   )\
+		 )\
+		)
+
+print-base-arch-%:
+	@echo '$*=$(call base-arch,$*)'