kselftest: arm64: extend toplevel skeleton Makefile
Modify KSFT arm64 toplevel Makefile to maintain arm64 kselftests organized by subsystem, keeping them into distinct subdirectories under arm64 custom KSFT directory: tools/testing/selftests/arm64/ Add to such toplevel Makefile a mechanism to guess the effective location of Kernel headers as installed by KSFT framework. Fit existing arm64 tags kselftest into this new schema moving them into their own subdirectory (arm64/tags). Reviewed-by: Dave Martin <Dave.Martin@arm.com> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
4f5cafb5cb
Коммит
313a4db7f3
|
@ -1,5 +1,6 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
TARGETS = android
|
||||
TARGETS += arm64
|
||||
TARGETS += bpf
|
||||
TARGETS += breakpoints
|
||||
TARGETS += capabilities
|
||||
|
|
|
@ -1,12 +1,66 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# ARCH can be overridden by the user for cross compiling
|
||||
# When ARCH not overridden for crosscompiling, lookup machine
|
||||
ARCH ?= $(shell uname -m 2>/dev/null || echo not)
|
||||
|
||||
ifneq (,$(filter $(ARCH),aarch64 arm64))
|
||||
CFLAGS += -I../../../../usr/include/
|
||||
TEST_GEN_PROGS := tags_test
|
||||
TEST_PROGS := run_tags_test.sh
|
||||
ARM64_SUBTARGETS ?= tags
|
||||
else
|
||||
ARM64_SUBTARGETS :=
|
||||
endif
|
||||
|
||||
include ../lib.mk
|
||||
CFLAGS := -Wall -O2 -g
|
||||
|
||||
# A proper top_srcdir is needed by KSFT(lib.mk)
|
||||
top_srcdir = $(realpath ../../../../)
|
||||
|
||||
# Additional include paths needed by kselftest.h and local headers
|
||||
CFLAGS += -I$(top_srcdir)/tools/testing/selftests/
|
||||
|
||||
# Guessing where the Kernel headers could have been installed
|
||||
# depending on ENV config
|
||||
ifeq ($(KBUILD_OUTPUT),)
|
||||
khdr_dir = $(top_srcdir)/usr/include
|
||||
else
|
||||
# the KSFT preferred location when KBUILD_OUTPUT is set
|
||||
khdr_dir = $(KBUILD_OUTPUT)/kselftest/usr/include
|
||||
endif
|
||||
|
||||
CFLAGS += -I$(khdr_dir)
|
||||
|
||||
export CFLAGS
|
||||
export top_srcdir
|
||||
|
||||
all:
|
||||
@for DIR in $(ARM64_SUBTARGETS); do \
|
||||
BUILD_TARGET=$(OUTPUT)/$$DIR; \
|
||||
mkdir -p $$BUILD_TARGET; \
|
||||
make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
|
||||
done
|
||||
|
||||
install: all
|
||||
@for DIR in $(ARM64_SUBTARGETS); do \
|
||||
BUILD_TARGET=$(OUTPUT)/$$DIR; \
|
||||
make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
|
||||
done
|
||||
|
||||
run_tests: all
|
||||
@for DIR in $(ARM64_SUBTARGETS); do \
|
||||
BUILD_TARGET=$(OUTPUT)/$$DIR; \
|
||||
make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
|
||||
done
|
||||
|
||||
# Avoid any output on non arm64 on emit_tests
|
||||
emit_tests: all
|
||||
@for DIR in $(ARM64_SUBTARGETS); do \
|
||||
BUILD_TARGET=$(OUTPUT)/$$DIR; \
|
||||
make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
|
||||
done
|
||||
|
||||
clean:
|
||||
@for DIR in $(ARM64_SUBTARGETS); do \
|
||||
BUILD_TARGET=$(OUTPUT)/$$DIR; \
|
||||
make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
|
||||
done
|
||||
|
||||
.PHONY: all clean install run_tests emit_tests
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
KSelfTest ARM64
|
||||
===============
|
||||
|
||||
- These tests are arm64 specific and so not built or run but just skipped
|
||||
completely when env-variable ARCH is found to be different than 'arm64'
|
||||
and `uname -m` reports other than 'aarch64'.
|
||||
|
||||
- Holding true the above, ARM64 KSFT tests can be run within the KSelfTest
|
||||
framework using standard Linux top-level-makefile targets:
|
||||
|
||||
$ make TARGETS=arm64 kselftest-clean
|
||||
$ make TARGETS=arm64 kselftest
|
||||
|
||||
or
|
||||
|
||||
$ make -C tools/testing/selftests TARGETS=arm64 \
|
||||
INSTALL_PATH=<your-installation-path> install
|
||||
|
||||
or, alternatively, only specific arm64/ subtargets can be picked:
|
||||
|
||||
$ make -C tools/testing/selftests TARGETS=arm64 ARM64_SUBTARGETS="tags signal" \
|
||||
INSTALL_PATH=<your-installation-path> install
|
||||
|
||||
Further details on building and running KFST can be found in:
|
||||
Documentation/dev-tools/kselftest.rst
|
|
@ -0,0 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
CFLAGS += -I../../../../../usr/include/
|
||||
TEST_GEN_PROGS := tags_test
|
||||
TEST_PROGS := run_tags_test.sh
|
||||
|
||||
include ../../lib.mk
|
Загрузка…
Ссылка в новой задаче