| # SPDX-License-Identifier: GPL-2.0 | |
| HOSTARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \ | |
| -e s/sun4u/sparc/ -e s/sparc64/sparc/ \ | |
| -e /arm64/!s/arm.*/arm/ -e s/sa110/arm/ \ | |
| -e s/s390x/s390/ -e s/parisc64/parisc/ \ | |
| -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ | |
| -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ \ | |
| -e s/riscv.*/riscv/ -e s/loongarch.*/loongarch/) | |
| ifeq ($(strip $(ARCH)),) | |
| override ARCH := $(HOSTARCH) | |
| endif | |
| SRCARCH := $(ARCH) | |
| # Additional ARCH settings for x86 | |
| ifeq ($(ARCH),i386) | |
| SRCARCH := x86 | |
| endif | |
| ifeq ($(ARCH),x86_64) | |
| SRCARCH := x86 | |
| endif | |
| # Additional ARCH settings for sparc | |
| ifeq ($(ARCH),sparc32) | |
| SRCARCH := sparc | |
| endif | |
| ifeq ($(ARCH),sparc64) | |
| SRCARCH := sparc | |
| endif | |
| # Additional ARCH settings for loongarch | |
| ifeq ($(ARCH),loongarch32) | |
| SRCARCH := loongarch | |
| endif | |
| ifeq ($(ARCH),loongarch64) | |
| SRCARCH := loongarch | |
| endif | |
| # Probe for __LP64__ only when the compiler is installed: this runs at | |
| # parse time for every target, including ones that never compile, e.g. | |
| # install-build-deps, and would otherwise spew "gcc: not found" when the | |
| # compiler is not yet installed. Only the first word of CC is consulted, | |
| # as CC may carry arguments, e.g. 'ccache gcc'. When the guard fails it | |
| # prints nothing, leaving LP64 unset, as if the probe had failed. | |
| LP64 := $(shell if command -v $(firstword ${CC}) >/dev/null 2>&1; then echo __LP64__ | ${CC} ${CFLAGS} -E -x c -; fi | tail -n 1) | |
| ifeq ($(LP64), 1) | |
| IS_64_BIT := 1 | |
| else | |
| IS_64_BIT := 0 | |
| endif |