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 <lucas.magasweran@ieee.org>
Reported-and-tested-by: Millhouse <milhouse@libreelec.tv>
This commit is contained in:
Lucas Magasweran committed 2019-08-08 15:26:30 +02:00
1 parent 5573d9d942
commit 0863eff8fa
1 file changed
+2 -2
+2 -2
View File
@@ -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