From: Dev Jain <dev.jain@arm.com>
To: shuah@kernel.org, linux-arm-kernel@lists.infradead.org
Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
Anshuman.Khandual@arm.com, suzuki.poulose@arm.com,
ryan.roberts@arm.com, rob.herring@arm.com,
Catalin.Marinas@arm.com, broonie@kernel.org, will@kernel.org,
mark.rutland@arm.com, Dev Jain <dev.jain@arm.com>
Subject: [PATCH 4/4] selftests: Add build infrastructure along with README
Date: Fri, 5 Apr 2024 14:14:10 +0530 [thread overview]
Message-ID: <20240405084410.256788-5-dev.jain@arm.com> (raw)
In-Reply-To: <20240405084410.256788-1-dev.jain@arm.com>
Add arm target, individual Makefile targets, and instructions to build the
tests.
Signed-off-by: Dev Jain <dev.jain@arm.com>
---
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/arm/Makefile | 57 +++++++++++++++++++++
tools/testing/selftests/arm/README | 31 +++++++++++
tools/testing/selftests/arm/elf/Makefile | 6 +++
tools/testing/selftests/arm/mm/Makefile | 6 +++
tools/testing/selftests/arm/signal/Makefile | 30 +++++++++++
6 files changed, 131 insertions(+)
create mode 100644 tools/testing/selftests/arm/Makefile
create mode 100644 tools/testing/selftests/arm/README
create mode 100644 tools/testing/selftests/arm/elf/Makefile
create mode 100644 tools/testing/selftests/arm/mm/Makefile
create mode 100644 tools/testing/selftests/arm/signal/Makefile
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 15b6a111c3be..8478d94cda4c 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
TARGETS += alsa
TARGETS += amd-pstate
+TARGETS += arm
TARGETS += arm64
TARGETS += bpf
TARGETS += breakpoints
diff --git a/tools/testing/selftests/arm/Makefile b/tools/testing/selftests/arm/Makefile
new file mode 100644
index 000000000000..039224bc006e
--- /dev/null
+++ b/tools/testing/selftests/arm/Makefile
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# When ARCH not overridden for crosscompiling, lookup machine
+ARCH ?= $(shell uname -m 2>/dev/null || echo not)
+
+ifneq (,$(filter $(ARCH),aarch64 arm64 arm armv7l armv8l))
+ARM_SUBTARGETS ?= mm signal elf
+else
+ARM_SUBTARGETS :=
+endif
+
+CFLAGS := -Wall -O2 -g -static
+
+# 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/
+
+CFLAGS += -I$(top_srcdir)/tools/include
+
+export CFLAGS
+export top_srcdir
+
+all:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ mkdir -p $$BUILD_TARGET; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+install: all
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+run_tests: all
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+# Avoid any output on non arm on emit_tests
+emit_tests:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+clean:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+.PHONY: all clean install run_tests emit_tests
diff --git a/tools/testing/selftests/arm/README b/tools/testing/selftests/arm/README
new file mode 100644
index 000000000000..1a05c043d7ee
--- /dev/null
+++ b/tools/testing/selftests/arm/README
@@ -0,0 +1,31 @@
+KSelfTest ARM
+===============
+
+- This is a series of compatibility tests, wherein the source files are
+ built statically into a 32 bit ELF; they should pass on both 32 and 64
+ bit kernels. They are not built or run but just skipped completely when
+ env-variable ARCH is found to be different than 'arm64' or 'arm' and
+ `uname -m` reports other than 'aarch64', 'armv7l' or 'armv8l'.
+
+- Please ensure that the test kernel is built with CONFIG_COMPAT enabled.
+
+- Holding true the above, ARM KSFT tests can be run within the KSelfTest
+ framework using standard Linux top-level-makefile targets. Please set
+ $(CROSS_COMPILE) to 'arm-linux-gnueabi-' or 'arm-linux-gnueabihf-'.
+
+ $ make TARGETS=arm kselftest-clean
+ $ make $(CROSS_COMPILE) TARGETS=arm kselftest
+
+ or
+
+ $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
+ INSTALL_PATH=<your-installation-path> install
+
+ or, alternatively, only specific arm/ subtargets can be picked:
+
+ $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
+ ARM_SUBTARGETS="signal" INSTALL_PATH=<your-installation-path> \
+ install
+
+ Further details on building and running KFST can be found in:
+ Documentation/dev-tools/kselftest.rst
diff --git a/tools/testing/selftests/arm/elf/Makefile b/tools/testing/selftests/arm/elf/Makefile
new file mode 100644
index 000000000000..86636fe02994
--- /dev/null
+++ b/tools/testing/selftests/arm/elf/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+TEST_GEN_PROGS := parse_elf
+
+include ../../lib.mk
diff --git a/tools/testing/selftests/arm/mm/Makefile b/tools/testing/selftests/arm/mm/Makefile
new file mode 100644
index 000000000000..d8bfa45df98c
--- /dev/null
+++ b/tools/testing/selftests/arm/mm/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+TEST_GEN_PROGS := compat_va
+
+include ../../lib.mk
diff --git a/tools/testing/selftests/arm/signal/Makefile b/tools/testing/selftests/arm/signal/Makefile
new file mode 100644
index 000000000000..3540a25de75a
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/Makefile
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+# Additional include paths needed by kselftest.h and local headers
+CFLAGS += -D_GNU_SOURCE -std=gnu99 -I.
+
+SRCS := $(filter-out testcases/testcases.c,$(wildcard testcases/*.c))
+PROGS := $(patsubst %.c,%,$(SRCS))
+
+# Generated binaries to be installed by top KSFT script
+TEST_GEN_PROGS := $(notdir $(PROGS))
+
+# Get Kernel headers installed and use them.
+
+# Including KSFT lib.mk here will also mangle the TEST_GEN_PROGS list
+# to account for any OUTPUT target-dirs optionally provided by
+# the toplevel makefile
+include ../../lib.mk
+
+$(TEST_GEN_PROGS): $(PROGS)
+ cp $(PROGS) $(OUTPUT)/
+
+# Common test-unit targets to build common-layout test-cases executables
+# Needs secondary expansion to properly include the testcase c-file in pre-reqs
+COMMON_SOURCES := test_signals.c test_signals_utils.c
+COMMON_HEADERS := test_signals.h test_signals_utils.h
+
+.SECONDEXPANSION:
+$(PROGS): $$@.c ${COMMON_SOURCES} ${COMMON_HEADERS}
+ $(CC) $(CFLAGS) ${@}.c ${COMMON_SOURCES} -o $@
--
2.39.2
WARNING: multiple messages have this Message-ID (diff)
From: Dev Jain <dev.jain@arm.com>
To: shuah@kernel.org, linux-arm-kernel@lists.infradead.org
Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
Anshuman.Khandual@arm.com, suzuki.poulose@arm.com,
ryan.roberts@arm.com, rob.herring@arm.com,
Catalin.Marinas@arm.com, broonie@kernel.org, will@kernel.org,
mark.rutland@arm.com, Dev Jain <dev.jain@arm.com>
Subject: [PATCH 4/4] selftests: Add build infrastructure along with README
Date: Fri, 5 Apr 2024 14:14:10 +0530 [thread overview]
Message-ID: <20240405084410.256788-5-dev.jain@arm.com> (raw)
In-Reply-To: <20240405084410.256788-1-dev.jain@arm.com>
Add arm target, individual Makefile targets, and instructions to build the
tests.
Signed-off-by: Dev Jain <dev.jain@arm.com>
---
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/arm/Makefile | 57 +++++++++++++++++++++
tools/testing/selftests/arm/README | 31 +++++++++++
tools/testing/selftests/arm/elf/Makefile | 6 +++
tools/testing/selftests/arm/mm/Makefile | 6 +++
tools/testing/selftests/arm/signal/Makefile | 30 +++++++++++
6 files changed, 131 insertions(+)
create mode 100644 tools/testing/selftests/arm/Makefile
create mode 100644 tools/testing/selftests/arm/README
create mode 100644 tools/testing/selftests/arm/elf/Makefile
create mode 100644 tools/testing/selftests/arm/mm/Makefile
create mode 100644 tools/testing/selftests/arm/signal/Makefile
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 15b6a111c3be..8478d94cda4c 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
TARGETS += alsa
TARGETS += amd-pstate
+TARGETS += arm
TARGETS += arm64
TARGETS += bpf
TARGETS += breakpoints
diff --git a/tools/testing/selftests/arm/Makefile b/tools/testing/selftests/arm/Makefile
new file mode 100644
index 000000000000..039224bc006e
--- /dev/null
+++ b/tools/testing/selftests/arm/Makefile
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# When ARCH not overridden for crosscompiling, lookup machine
+ARCH ?= $(shell uname -m 2>/dev/null || echo not)
+
+ifneq (,$(filter $(ARCH),aarch64 arm64 arm armv7l armv8l))
+ARM_SUBTARGETS ?= mm signal elf
+else
+ARM_SUBTARGETS :=
+endif
+
+CFLAGS := -Wall -O2 -g -static
+
+# 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/
+
+CFLAGS += -I$(top_srcdir)/tools/include
+
+export CFLAGS
+export top_srcdir
+
+all:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ mkdir -p $$BUILD_TARGET; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+install: all
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+run_tests: all
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+# Avoid any output on non arm on emit_tests
+emit_tests:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+clean:
+ @for DIR in $(ARM_SUBTARGETS); do \
+ BUILD_TARGET=$(OUTPUT)/$$DIR; \
+ make OUTPUT=$$BUILD_TARGET -C $$DIR $@; \
+ done
+
+.PHONY: all clean install run_tests emit_tests
diff --git a/tools/testing/selftests/arm/README b/tools/testing/selftests/arm/README
new file mode 100644
index 000000000000..1a05c043d7ee
--- /dev/null
+++ b/tools/testing/selftests/arm/README
@@ -0,0 +1,31 @@
+KSelfTest ARM
+===============
+
+- This is a series of compatibility tests, wherein the source files are
+ built statically into a 32 bit ELF; they should pass on both 32 and 64
+ bit kernels. They are not built or run but just skipped completely when
+ env-variable ARCH is found to be different than 'arm64' or 'arm' and
+ `uname -m` reports other than 'aarch64', 'armv7l' or 'armv8l'.
+
+- Please ensure that the test kernel is built with CONFIG_COMPAT enabled.
+
+- Holding true the above, ARM KSFT tests can be run within the KSelfTest
+ framework using standard Linux top-level-makefile targets. Please set
+ $(CROSS_COMPILE) to 'arm-linux-gnueabi-' or 'arm-linux-gnueabihf-'.
+
+ $ make TARGETS=arm kselftest-clean
+ $ make $(CROSS_COMPILE) TARGETS=arm kselftest
+
+ or
+
+ $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
+ INSTALL_PATH=<your-installation-path> install
+
+ or, alternatively, only specific arm/ subtargets can be picked:
+
+ $ make $(CROSS_COMPILE) -C tools/testing/selftests TARGETS=arm \
+ ARM_SUBTARGETS="signal" INSTALL_PATH=<your-installation-path> \
+ install
+
+ Further details on building and running KFST can be found in:
+ Documentation/dev-tools/kselftest.rst
diff --git a/tools/testing/selftests/arm/elf/Makefile b/tools/testing/selftests/arm/elf/Makefile
new file mode 100644
index 000000000000..86636fe02994
--- /dev/null
+++ b/tools/testing/selftests/arm/elf/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+TEST_GEN_PROGS := parse_elf
+
+include ../../lib.mk
diff --git a/tools/testing/selftests/arm/mm/Makefile b/tools/testing/selftests/arm/mm/Makefile
new file mode 100644
index 000000000000..d8bfa45df98c
--- /dev/null
+++ b/tools/testing/selftests/arm/mm/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+TEST_GEN_PROGS := compat_va
+
+include ../../lib.mk
diff --git a/tools/testing/selftests/arm/signal/Makefile b/tools/testing/selftests/arm/signal/Makefile
new file mode 100644
index 000000000000..3540a25de75a
--- /dev/null
+++ b/tools/testing/selftests/arm/signal/Makefile
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ARM Limited
+
+# Additional include paths needed by kselftest.h and local headers
+CFLAGS += -D_GNU_SOURCE -std=gnu99 -I.
+
+SRCS := $(filter-out testcases/testcases.c,$(wildcard testcases/*.c))
+PROGS := $(patsubst %.c,%,$(SRCS))
+
+# Generated binaries to be installed by top KSFT script
+TEST_GEN_PROGS := $(notdir $(PROGS))
+
+# Get Kernel headers installed and use them.
+
+# Including KSFT lib.mk here will also mangle the TEST_GEN_PROGS list
+# to account for any OUTPUT target-dirs optionally provided by
+# the toplevel makefile
+include ../../lib.mk
+
+$(TEST_GEN_PROGS): $(PROGS)
+ cp $(PROGS) $(OUTPUT)/
+
+# Common test-unit targets to build common-layout test-cases executables
+# Needs secondary expansion to properly include the testcase c-file in pre-reqs
+COMMON_SOURCES := test_signals.c test_signals_utils.c
+COMMON_HEADERS := test_signals.h test_signals_utils.h
+
+.SECONDEXPANSION:
+$(PROGS): $$@.c ${COMMON_SOURCES} ${COMMON_HEADERS}
+ $(CC) $(CFLAGS) ${@}.c ${COMMON_SOURCES} -o $@
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-04-05 8:50 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-05 8:44 [PATCH 0/4] A new selftests/ directory for arm compatibility testing Dev Jain
2024-04-05 8:44 ` Dev Jain
2024-04-05 8:44 ` [PATCH 1/4] selftests/arm: Add mm test Dev Jain
2024-04-05 8:44 ` Dev Jain
2024-04-06 21:23 ` Muhammad Usama Anjum
2024-04-06 21:23 ` Muhammad Usama Anjum
2024-04-10 4:15 ` Dev Jain
2024-04-10 4:15 ` Dev Jain
2024-04-17 4:53 ` Dev Jain
2024-04-17 4:53 ` Dev Jain
2024-04-05 8:44 ` [PATCH 2/4] selftests/arm: Add signal tests Dev Jain
2024-04-05 8:44 ` Dev Jain
2024-04-06 21:28 ` Muhammad Usama Anjum
2024-04-06 21:28 ` Muhammad Usama Anjum
2024-04-08 12:12 ` Mark Brown
2024-04-08 12:12 ` Mark Brown
2024-04-10 4:43 ` Dev Jain
2024-04-10 4:43 ` Dev Jain
2024-04-05 8:44 ` [PATCH 3/4] selftests/arm: Add elf test Dev Jain
2024-04-05 8:44 ` Dev Jain
2024-04-06 21:30 ` Muhammad Usama Anjum
2024-04-06 21:30 ` Muhammad Usama Anjum
2024-04-10 4:11 ` Dev Jain
2024-04-10 4:11 ` Dev Jain
2024-04-05 8:44 ` Dev Jain [this message]
2024-04-05 8:44 ` [PATCH 4/4] selftests: Add build infrastructure along with README Dev Jain
2024-04-06 21:15 ` Muhammad Usama Anjum
2024-04-06 21:15 ` Muhammad Usama Anjum
2024-04-08 12:24 ` Mark Brown
2024-04-08 12:24 ` Mark Brown
2024-04-11 5:15 ` Dev Jain
2024-04-11 5:15 ` Dev Jain
2024-04-05 17:37 ` [PATCH 0/4] A new selftests/ directory for arm compatibility testing Mark Brown
2024-04-05 17:37 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240405084410.256788-5-dev.jain@arm.com \
--to=dev.jain@arm.com \
--cc=Anshuman.Khandual@arm.com \
--cc=Catalin.Marinas@arm.com \
--cc=broonie@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=rob.herring@arm.com \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.