1# SPDX-License-Identifier: GPL-2.0 2HOSTARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \ 3 -e s/sun4u/sparc/ -e s/sparc64/sparc/ \ 4 -e /arm64/!s/arm.*/arm/ -e s/sa110/arm/ \ 5 -e s/s390x/s390/ -e s/parisc64/parisc/ \ 6 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ 7 -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ \ 8 -e s/riscv.*/riscv/ -e s/loongarch.*/loongarch/) 9 10ifeq ($(strip $(ARCH)),) 11override ARCH := $(HOSTARCH) 12endif 13 14SRCARCH := $(ARCH) 15 16# Additional ARCH settings for x86 17ifeq ($(ARCH),i386) 18 SRCARCH := x86 19endif 20ifeq ($(ARCH),x86_64) 21 SRCARCH := x86 22endif 23 24# Additional ARCH settings for sparc 25ifeq ($(ARCH),sparc32) 26 SRCARCH := sparc 27endif 28ifeq ($(ARCH),sparc64) 29 SRCARCH := sparc 30endif 31 32# Additional ARCH settings for loongarch 33ifeq ($(ARCH),loongarch32) 34 SRCARCH := loongarch 35endif 36 37ifeq ($(ARCH),loongarch64) 38 SRCARCH := loongarch 39endif 40 41# Probe for __LP64__ only when the compiler is installed: this runs at 42# parse time for every target, including ones that never compile, e.g. 43# install-build-deps, and would otherwise spew "gcc: not found" when the 44# compiler is not yet installed. Only the first word of CC is consulted, 45# as CC may carry arguments, e.g. 'ccache gcc'. When the guard fails it 46# prints nothing, leaving LP64 unset, as if the probe had failed. 47LP64 := $(shell if command -v $(firstword ${CC}) >/dev/null 2>&1; then echo __LP64__ | ${CC} ${CFLAGS} -E -x c -; fi | tail -n 1) 48ifeq ($(LP64), 1) 49 IS_64_BIT := 1 50else 51 IS_64_BIT := 0 52endif 53