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:
parent
4f5cafb5cb
commit
313a4db7f3
|
@ -1,5 +1,6 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
TARGETS = android
|
TARGETS = android
|
||||||
|
TARGETS += arm64
|
||||||
TARGETS += bpf
|
TARGETS += bpf
|
||||||
TARGETS += breakpoints
|
TARGETS += breakpoints
|
||||||
TARGETS += capabilities
|
TARGETS += capabilities
|
||||||
|
|
|
@ -1,12 +1,66 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# 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)
|
ARCH ?= $(shell uname -m 2>/dev/null || echo not)
|
||||||
|
|
||||||
ifneq (,$(filter $(ARCH),aarch64 arm64))
|
ifneq (,$(filter $(ARCH),aarch64 arm64))
|
||||||
CFLAGS += -I../../../../usr/include/
|
ARM64_SUBTARGETS ?= tags
|
||||||
TEST_GEN_PROGS := tags_test
|
else
|
||||||
TEST_PROGS := run_tags_test.sh
|
ARM64_SUBTARGETS :=
|
||||||
endif
|
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
|
||||||
|
|
25
tools/testing/selftests/arm64/README
Normal file
25
tools/testing/selftests/arm64/README
Normal file
|
@ -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
|
7
tools/testing/selftests/arm64/tags/Makefile
Normal file
7
tools/testing/selftests/arm64/tags/Makefile
Normal file
|
@ -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
|
Loading…
Reference in a new issue