From 0863eff8fa1d32797e3aec19672878aff893b0ae Mon Sep 17 00:00:00 2001 From: Lucas Magasweran Date: Wed, 7 Aug 2019 14:43:23 +0200 Subject: [PATCH] makefile: use target arch when determining what programs to compile To better support cross-compilation, the Makefile should detect the compiler's target architecture instead of using `uname -m`, which returns the host architecture. This approach uses the `gcc`/`clang` compatible `-dumpmachine` option. Cross-compilation worked but because of this bug, `isadump` and `isaset` x86 ISA specific tools were built for PCC and ARM. This run-time issue became a compile-time issue when `glibc` 2.30 removed the `sys/io.h` I/O port functions on ARM. Also renamed `MACHINE` to `ARCH` to match cross-compiler conventions for specifying the target architecture. For example, `make ARCH=arm CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-ar` Fixes #190 Signed-off-by: Lucas Magasweran Reported-and-tested-by: Millhouse --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 2f5859f0..47ffe788 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ LIBINCLUDEDIR := $(INCLUDEDIR)/sensors # manual pages will be installed. MANDIR := $(PREFIX)/man -MACHINE := $(shell uname -m) +ARCH := $(firstword $(subst -, ,$(shell $(CC) -dumpmachine))) # Extra non-default programs to build; e.g., sensord #PROG_EXTRA := sensord @@ -109,7 +109,7 @@ BUILD_STATIC_LIB := 1 SRCDIRS := lib prog/detect prog/pwm \ prog/sensors ${PROG_EXTRA:%=prog/%} etc # Only build isadump and isaset on x86 machines. -ifneq (,$(findstring $(MACHINE), i386 i486 i586 i686 x86_64)) +ifneq (,$(findstring $(ARCH), i386 i486 i586 i686 x86_64)) SRCDIRS += prog/dump endif SRCDIRS += lib/test