Several improvements
* Drop the detection of EFI through kallsyms. This detection is no
longer useful since commit 2c0c4c9fd1 ("Using CONFIG_EFI instead of
user defined HAS_EFI (#1036)") replaced `HAS_EFI` with `CONFIG_EFI`.
* Use `...-objs-y` and `...-objs-$(CONFIG_...)` logic to choose which
`cpu.asm` file is being built. This is something that other modules do
in Linux kernel source.
* Introduce `quiet_cmd_...` and `cmd_...` definition in order to use the
build system of the kernel to compile `cpu.asm` with NASM. This should
prevent issues like the one mentioned in 2210002bab ("Fixed build
error on latest Ubuntu") from happening again. Moreover this makes the
custom clean command `rm -f ${asm-path}/cpu.o` no longer necessary.
* Remove variables which become unused after these changes. Now, all
that `Makefile` needs is a kernel directory, specified with `KSRC`.
This change has been tested on a test system running Ubuntu 20.10 and on
GitHub Actions workers running Ubuntu 16.04, 18.04 and 20.04 on Linux
5.4.0-1040-azure. It has also been compile-tested on many other Linux
distributions using a work-in-progress GitHub Actions configuration
(https://github.com/fishilico/chipsec/actions/runs/661200380).
It was previously possible to build Chipsec kernel module for a different Linux
kernel than the running one, and ff4a273 broke that possibility.
Bring that back just by giving a way to override the KSRC variable when calling
the Makefile.
Fix issue #1122
drivers/linux/Makefile:
* Replaced KERNEL_SRC_DIR variable with KSRC.
* Added KSRC variable which should enable successful DKMS compilation,
as opposed to bailing out with "Unable to find the Linux source tree."
This patch has been tested on Black Arch.