Convert to Soong
am: 5c84db5c7c

Change-Id: I6daba1cab0ab8ded97637297c8c9ec682fad2f52
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..1c2d699
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,326 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_defaults {
+    name: "kselftest_defaults",
+    cflags: [
+        // Hacks for bionic compatibility
+        "-include bionic-compat.h",
+
+        "-Wall",
+
+        // Silence noisy warnings
+        "-Wno-deprecated",
+        "-Wno-format",
+        "-Wno-gnu-designator",
+        "-Wno-macro-redefined",
+        "-Wno-missing-field-initializers",
+        "-Wno-parentheses-equality",
+        "-Wno-pointer-arith",
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+        "-Wno-shift-negative-value",
+        "-Wno-switch",
+        "-Wno-absolute-value",
+        "-Wno-non-literal-null-conversion",
+        "-Wno-unused-variable",
+        "-Wno-unused-parameter",
+        "-Wno-empty-body",
+        "-Wno-literal-conversion",
+        "-Werror",
+    ],
+
+    local_include_dirs: ["android/include"],
+    gtest: false,
+    no_named_install_directory: true,
+
+    test_per_src: true,
+    arch: {
+        mips: {
+            enabled: false,
+        },
+        mips64: {
+            enabled: false,
+        },
+    },
+}
+
+// breakpoints test
+cc_test {
+    name: "kselftest_breakpoints_tests",
+    relative_install_path: "linux-kselftest/breakpoints",
+    srcs: [
+        "tools/testing/selftests/breakpoints/breakpoint_test.c",
+        "tools/testing/selftests/breakpoints/step_after_suspend_test.c",
+    ],
+    defaults: ["kselftest_defaults"],
+    arch: {
+        arm: {
+            enabled: false,
+        },
+        arm64: {
+            enabled: false,
+        },
+    },
+}
+
+// Efivarfs test
+cc_test {
+    name: "kselftest_efivarfs_tests",
+    relative_install_path: "linux-kselftest/efivarfs",
+    srcs: [
+        "tools/testing/selftests/efivarfs/open-unlink.c",
+        "tools/testing/selftests/efivarfs/create-read.c",
+    ],
+    defaults: ["kselftest_defaults"],
+    // TODO: test_data: efivarfs/efivarfs.sh
+}
+
+// Futex test
+cc_test {
+    name: "kselftest_futex_tests",
+    relative_install_path: "linux-kselftest/futex/functional",
+    srcs: [
+        "tools/testing/selftests/futex/functional/futex_wait_timeout.c",
+        "tools/testing/selftests/futex/functional/futex_wait_wouldblock.c",
+        "tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c",
+        "tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c",
+        "tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c",
+    ],
+    local_include_dirs: [
+        "tools/testing/selftests/futex/include",
+        "tools/testing/selftests",
+    ],
+    cflags: [
+        "-D_GNU_SOURCE",
+        "-pthread",
+    ],
+    defaults: ["kselftest_defaults"],
+}
+
+// intel_pstate test
+cc_test {
+    name: "kselftest_intel_pstate_tests",
+    relative_install_path: "linux-kselftest/intel_pstate",
+    srcs: [
+        "tools/testing/selftests/intel_pstate/aperf.c",
+        "tools/testing/selftests/intel_pstate/msr.c",
+    ],
+    cflags: [
+        "-D_GNU_SOURCE",
+    ],
+    defaults: ["kselftest_defaults"],
+    // TODO: test_data: intel_pstate/run.sh
+}
+
+// Kcmp test
+cc_test {
+    name: "kselftest_kcmp_tests",
+    relative_install_path: "linux-kselftest/kcmp",
+    srcs: ["tools/testing/selftests/kcmp/kcmp_test.c"],
+    defaults: ["kselftest_defaults"],
+}
+
+// media_tests test
+cc_test {
+    name: "kselftest_media_tests",
+    relative_install_path: "linux-kselftest/media_tests",
+    srcs: [
+        "tools/testing/selftests/media_tests/media_device_test.c",
+        "tools/testing/selftests/media_tests/media_device_open.c",
+        "tools/testing/selftests/media_tests/video_device_test.c",
+    ],
+    defaults: ["kselftest_defaults"],
+}
+
+// Membarrier test
+cc_test {
+    name: "kselftest_membarrier_tests",
+    relative_install_path: "linux-kselftest/membarrier",
+    srcs: ["tools/testing/selftests/membarrier/membarrier_test.c"],
+    defaults: ["kselftest_defaults"],
+}
+
+// Mount test
+cc_test {
+    name: "kselftest_mount_tests",
+    relative_install_path: "linux-kselftest/mount",
+    srcs: ["tools/testing/selftests/mount/unprivileged-remount-test.c"],
+    defaults: ["kselftest_defaults"],
+}
+
+// Net test
+cc_test {
+    name: "kselftest_net_tests",
+    relative_install_path: "linux-kselftest/net",
+    srcs: [
+        "tools/testing/selftests/net/socket.c",
+        "tools/testing/selftests/net/psock_fanout.c",
+        "tools/testing/selftests/net/psock_tpacket.c",
+        "tools/testing/selftests/net/reuseport_dualstack.c",
+    ],
+    defaults: ["kselftest_defaults"],
+    // TODO: test_data: net/test_bpf.sh
+}
+
+// Ptrace test
+cc_test {
+    name: "kselftest_ptrace_tests",
+    relative_install_path: "linux-kselftest/ptrace",
+    srcs: ["tools/testing/selftests/ptrace/peeksiginfo.c"],
+    defaults: ["kselftest_defaults"],
+}
+
+// seccomp test
+cc_test {
+    name: "kselftest_seccomp_tests",
+    relative_install_path: "linux-kselftest/seccomp",
+    srcs: ["tools/testing/selftests/seccomp/seccomp_bpf.c"],
+    defaults: ["kselftest_defaults"],
+}
+
+// Timer test
+cc_test {
+    name: "kselftest_timer_tests",
+    relative_install_path: "linux-kselftest/timers",
+    srcs: [
+        "tools/testing/selftests/timers/posix_timers.c",
+        "tools/testing/selftests/timers/nanosleep.c",
+        "tools/testing/selftests/timers/nsleep-lat.c",
+        "tools/testing/selftests/timers/set-timer-lat.c",
+        "tools/testing/selftests/timers/inconsistency-check.c",
+        "tools/testing/selftests/timers/raw_skew.c",
+        "tools/testing/selftests/timers/threadtest.c",
+        "tools/testing/selftests/timers/rtctest.c",
+        "tools/testing/selftests/timers/alarmtimer-suspend.c",
+        "tools/testing/selftests/timers/valid-adjtimex.c",
+        "tools/testing/selftests/timers/adjtick.c",
+        "tools/testing/selftests/timers/change_skew.c",
+        "tools/testing/selftests/timers/skew_consistency.c",
+        "tools/testing/selftests/timers/clocksource-switch.c",
+        "tools/testing/selftests/timers/leap-a-day.c",
+        "tools/testing/selftests/timers/leapcrash.c",
+        "tools/testing/selftests/timers/set-tai.c",
+        "tools/testing/selftests/timers/set-2038.c",
+        "tools/testing/selftests/timers/set-tz.c",
+    ],
+    cflags: [
+        "-O3",
+        "-DKTEST",
+    ],
+    defaults: ["kselftest_defaults"],
+}
+
+// Vm test
+cc_test {
+    name: "kselftest_vm_tests",
+    relative_install_path: "linux-kselftest/vm",
+    srcs: [
+        "tools/testing/selftests/vm/compaction_test.c",
+        "tools/testing/selftests/vm/hugepage-mmap.c",
+        "tools/testing/selftests/vm/hugepage-shm.c",
+        "tools/testing/selftests/vm/map_hugetlb.c",
+        "tools/testing/selftests/vm/mlock2-tests.c",
+        "tools/testing/selftests/vm/on-fault-limit.c",
+        "tools/testing/selftests/vm/transhuge-stress.c",
+    ],
+    defaults: ["kselftest_defaults"],
+}
+
+// x86 test
+cc_test {
+    name: "kselftest_x86_tests",
+    relative_install_path: "linux-kselftest/x86",
+    srcs: [
+        "tools/testing/selftests/x86/single_step_syscall.c",
+        "tools/testing/selftests/x86/syscall_nt.c",
+        "tools/testing/selftests/x86/test_mremap_vdso.c",
+        "tools/testing/selftests/x86/check_initial_reg_state.c",
+        "tools/testing/selftests/x86/ldt_gdt.c"
+    ],
+    arch: {
+        arm: {
+            enabled: false,
+        },
+        arm64: {
+            enabled: false,
+        },
+        x86: {
+            srcs: [
+                "tools/testing/selftests/x86/sysret_ss_attrs.c",
+                //"tools/testing/selftests/x86/entry_from_vm86.c",
+                "tools/testing/selftests/x86/syscall_arg_fault.c",
+                "tools/testing/selftests/x86/unwind_vdso.c",
+                "tools/testing/selftests/x86/test_FCMOV.c",
+                "tools/testing/selftests/x86/test_FCOMI.c",
+                "tools/testing/selftests/x86/test_FISTTP.c",
+                "tools/testing/selftests/x86/vdso_restorer.c",
+            ],
+        },
+    },
+    cflags: [
+        "-O2",
+        "-std=gnu99",
+        "-pthread",
+    ],
+    defaults: ["kselftest_defaults"],
+}
+
+cc_test {
+    name: "kselftest_x86_ptrace_syscall",
+    stem: "ptrace_syscall",
+    relative_install_path: "linux-kselftest/x86",
+    srcs: [
+        "tools/testing/selftests/x86/ptrace_syscall.c",
+        "tools/testing/selftests/x86/raw_syscall_helper_32.S",
+    ],
+    cflags: [
+        "-O2",
+        "-std=gnu99",
+        "-pthread",
+    ],
+    test_per_src: false,
+    defaults: ["kselftest_defaults"],
+    enabled: false,
+    arch: {
+        x86: {
+            enabled: true,
+        },
+    },
+}
+
+cc_test {
+    name: "kselftest_x86_test_syscall_vdso",
+    stem: "test_syscall_vdso",
+    relative_install_path: "linux-kselftest/x86",
+    srcs: [
+        "tools/testing/selftests/x86/test_syscall_vdso.c",
+        "tools/testing/selftests/x86/thunks_32.S",
+    ],
+    cflags: [
+        "-O2",
+        "-std=gnu99",
+        "-pthread",
+    ],
+    test_per_src: false,
+    defaults: ["kselftest_defaults"],
+    enabled: false,
+    arch: {
+        x86: {
+            enabled: true,
+        },
+    },
+}
diff --git a/Android.mk b/Android.mk
index 058535b..3675d38 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,65 +14,7 @@
 # limitations under the License.
 #
 
-disabled_target := 0
-
-# TODO(trong): enable kselftest for darwin and windows hosts.
-ifneq (linux, $(HOST_OS))
-disabled_target := 1
-endif
-
-# TODO(trong): enable kselftest for mips eng.
-ifneq (,$(findstring mips, $(TARGET_PRODUCT)))
-ifeq (eng, $(TARGET_BUILD_VARIANT))
-disabled_target := 1
-endif
-endif
-
-# Kselftests are only for development and not for production.
-ifeq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
-disabled_target := 1
-endif
-
-ifeq (0, $(disabled_target))
-
 LOCAL_PATH := $(call my-dir)
-kselftest_root := $(LOCAL_PATH)
-kselftest_dir := tools/testing/selftests
 
-kselftest_target_arch = $(TARGET_ARCH)
-
-include $(CLEAR_VARS)
-
-# Hacks for bionic compatibility
-kselftest_cflags := \
-    -include $(kselftest_root)/android/include/bionic-compat.h
-
-# Silence noisy warnings
-kselftest_cflags += \
-    -Wno-deprecated \
-    -Wno-format \
-    -Wno-gnu-designator \
-    -Wno-macro-redefined \
-    -Wno-missing-field-initializers \
-    -Wno-parentheses-equality \
-    -Wno-pointer-arith \
-    -Wno-sign-compare \
-    -Wno-unused-parameter \
-    -Wno-shift-negative-value \
-    -Wno-switch \
-    -Wno-absolute-value \
-    -Wno-non-literal-null-conversion \
-    -Wno-unused-variable \
-    -Wno-unused-parameter \
-    -Wno-empty-body \
-    -Wno-literal-conversion \
-    -Werror \
-
-kselftest_c_includes := \
-  $(kselftest_root)/android/include \
-
-build_kselftest_test := $(kselftest_root)/android/Android.test.mk
-build_kselftest_prebuilt := $(kselftest_root)/android/Android.prebuilt.mk
-include $(kselftest_root)/android/Android.kselftest.mk
-
-endif
+build_kselftest_prebuilt := $(LOCAL_PATH)/android/Android.prebuilt.mk
+include $(LOCAL_PATH)/android/Android.kselftest.mk
diff --git a/android/Android.kselftest.mk b/android/Android.kselftest.mk
index 3abacdbe..99adb41 100644
--- a/android/Android.kselftest.mk
+++ b/android/Android.kselftest.mk
@@ -14,21 +14,6 @@
 # limitations under the License.
 #
 
-# breakpoints test
-module_testname := breakpoints/breakpoint_test
-module_src_files := breakpoints/breakpoint_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := breakpoints/step_after_suspend_test
-module_src_files := breakpoints/step_after_suspend_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
 # Cpu-hotplug test
 module_prebuilt := cpu-hotplug/cpu-on-off-test
 module_src_files := cpu-hotplug/cpu-on-off-test.sh
@@ -39,20 +24,6 @@
 module_src_files := efivarfs/efivarfs.sh
 include $(build_kselftest_prebuilt)
 
-module_testname := efivarfs/open-unlink
-module_src_files := efivarfs/open-unlink.c
-module_cflags := -Wall
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := efivarfs/create-read
-module_src_files := efivarfs/create-read.c
-module_cflags := -Wall
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # Firmware test
 module_prebuilt := firmware/fw_filesystem
 module_src_files := firmware/fw_filesystem.sh
@@ -99,69 +70,11 @@
 module_src_files := ftrace/test.d/instances/instance-event.tc
 include $(build_kselftest_prebuilt)
 
-# Futex test
-module_testname := futex/functional/futex_wait_timeout
-module_src_files := futex/functional/futex_wait_timeout.c
-module_cflags := -g -O2 -Wall -D_GNU_SOURCE -pthread -pthread -lrt
-module_c_includes := futex/include .
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := futex/functional/futex_wait_wouldblock
-module_src_files := futex/functional/futex_wait_wouldblock.c
-module_cflags := -g -O2 -Wall -D_GNU_SOURCE -pthread -pthread -lrt
-module_c_includes := futex/include .
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := futex/functional/futex_requeue_pi_mismatched_ops
-module_src_files := futex/functional/futex_requeue_pi_mismatched_ops.c
-module_cflags := -g -O2 -Wall -D_GNU_SOURCE -pthread -pthread -lrt
-module_c_includes := futex/include .
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := futex/functional/futex_wait_uninitialized_heap
-module_src_files := futex/functional/futex_wait_uninitialized_heap.c
-module_cflags := -g -O2 -Wall -D_GNU_SOURCE -pthread -pthread -lrt
-module_c_includes := futex/include .
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := futex/functional/futex_wait_private_mapped_file
-module_src_files := futex/functional/futex_wait_private_mapped_file.c
-module_cflags := -g -O2 -Wall -D_GNU_SOURCE -pthread -pthread -lrt
-module_c_includes := futex/include .
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # intel_pstate test
-module_testname := intel_pstate/aperf
-module_src_files := intel_pstate/aperf.c
-module_cflags := -Wall -D_GNU_SOURCE -lm
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := intel_pstate/msr
-module_src_files := intel_pstate/msr.c
-module_cflags := -Wall -D_GNU_SOURCE -lm
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 module_prebuilt := intel_pstate/run.sh
 module_src_files := intel_pstate/run.sh
 include $(build_kselftest_prebuilt)
 
-# Kcmp test
-module_testname := kcmp/kcmp_test
-module_src_files := kcmp/kcmp_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # Lib test
 module_prebuilt := lib/printf
 module_src_files := lib/printf.sh
@@ -171,82 +84,16 @@
 module_src_files := lib/bitmap.sh
 include $(build_kselftest_prebuilt)
 
-# media_tests test
-module_testname := media_tests/media_device_test
-module_src_files := media_tests/media_device_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := media_tests/media_device_open
-module_src_files := media_tests/media_device_open.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := media_tests/video_device_test
-module_src_files := media_tests/video_device_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-# Membarrier test
-module_testname := membarrier/membarrier_test
-module_src_files := membarrier/membarrier_test.c
-module_cflags :=
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # Memory-hotplug test
 module_prebuilt := memory-hotplug/mem-on-off-test
 module_src_files := memory-hotplug/mem-on-off-test.sh
 include $(build_kselftest_prebuilt)
 
-# Mount test
-module_testname := mount/unprivileged-remount-test
-module_src_files := mount/unprivileged-remount-test.c
-module_cflags := -Wall -O2
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # Net test
 module_prebuilt := net/test_bpf
 module_src_files := net/test_bpf.sh
 include $(build_kselftest_prebuilt)
 
-module_testname := net/socket
-module_src_files := net/socket.c
-module_cflags := -Wall -O2 -g
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := net/psock_fanout
-module_src_files := net/psock_fanout.c
-module_cflags := -Wall -O2 -g
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := net/psock_tpacket
-module_src_files := net/psock_tpacket.c
-module_cflags := -Wall -O2 -g
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := net/reuseport_dualstack
-module_src_files := net/reuseport_dualstack.c
-module_cflags := -Wall -O2 -g
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # ntb tests
 module_prebuilt := ntb/ntb_test.sh
 module_src_files := ntb/ntb_test.sh
@@ -269,21 +116,6 @@
 module_src_files := pstore/pstore_crash_test
 include $(build_kselftest_prebuilt)
 
-# Ptrace test
-module_testname := ptrace/peeksiginfo
-module_src_files := ptrace/peeksiginfo.c
-module_cflags := -Wall
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-# seccomp test
-module_testname := seccomp/seccomp_bpf
-module_src_files := seccomp/seccomp_bpf.c
-module_cflags := -Wl,-no-as-needed -Wall -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
 
 # Static keys test
 module_prebuilt := static_keys/test_static_keys
@@ -303,301 +135,11 @@
 module_src_files := sysctl/common_tests
 include $(build_kselftest_prebuilt)
 
-# Timer test
-module_testname := timers/posix_timers
-module_src_files := timers/posix_timers.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/nanosleep
-module_src_files := timers/nanosleep.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/nsleep-lat
-module_src_files := timers/nsleep-lat.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/set-timer-lat
-module_src_files := timers/set-timer-lat.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/inconsistency-check
-module_src_files := timers/inconsistency-check.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/raw_skew
-module_src_files := timers/raw_skew.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/threadtest
-module_src_files := timers/threadtest.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/rtctest
-module_src_files := timers/rtctest.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/alarmtimer-suspend
-module_src_files := timers/alarmtimer-suspend.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/valid-adjtimex
-module_src_files := timers/valid-adjtimex.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/adjtick
-module_src_files := timers/adjtick.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/change_skew
-module_src_files := timers/change_skew.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/skew_consistency
-module_src_files := timers/skew_consistency.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/clocksource-switch
-module_src_files := timers/clocksource-switch.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/leap-a-day
-module_src_files := timers/leap-a-day.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/leapcrash
-module_src_files := timers/leapcrash.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/set-tai
-module_src_files := timers/set-tai.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/set-2038
-module_src_files := timers/set-2038.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := timers/set-tz
-module_src_files := timers/set-tz.c
-module_cflags := -O3 -Wl,-no-as-needed -Wall -DKTEST  -lrt -lpthread
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
 # User test
 module_prebuilt := user/test_user_copy
 module_src_files := user/test_user_copy.sh
 include $(build_kselftest_prebuilt)
 
-# Vm test
-module_testname := vm/compaction_test
-module_src_files := vm/compaction_test.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/hugepage-mmap
-module_src_files := vm/hugepage-mmap.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/hugepage-shm
-module_src_files := vm/hugepage-shm.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/map_hugetlb
-module_src_files := vm/map_hugetlb.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/mlock2-tests
-module_src_files := vm/mlock2-tests.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/on-fault-limit
-module_src_files := vm/on-fault-limit.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := vm/transhuge-stress
-module_src_files := vm/transhuge-stress.c
-module_cflags := -Wall -lrt
-module_c_includes :=
-module_supported_arch := arm arm64 x86 x86_64
-include $(build_kselftest_test)
-
-# x86 test
-module_testname := x86/single_step_syscall
-module_src_files := x86/single_step_syscall.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := x86/sysret_ss_attrs
-module_src_files := x86/sysret_ss_attrs.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/syscall_nt
-module_src_files := x86/syscall_nt.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := x86/ptrace_syscall
-module_src_files := x86/ptrace_syscall.c x86/raw_syscall_helper_32.S
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/test_mremap_vdso
-module_src_files := x86/test_mremap_vdso.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := x86/check_initial_reg_state
-module_src_files := x86/check_initial_reg_state.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -Wl,-ereal_start -static -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := x86/ldt_gdt
-module_src_files := x86/ldt_gdt.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86 x86_64
-include $(build_kselftest_test)
-
-module_testname := x86/entry_from_vm86
-module_src_files := x86/entry_from_vm86.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-#include $(build_kselftest_test)
-
-module_testname := x86/syscall_arg_fault
-module_src_files := x86/syscall_arg_fault.c
-module_cflags := -O2 -g -std=gnu99 -pthread -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/test_syscall_vdso
-module_src_files := x86/test_syscall_vdso.c x86/thunks_32.S
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/unwind_vdso
-module_src_files := x86/unwind_vdso.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/test_FCMOV
-module_src_files := x86/test_FCMOV.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/test_FCOMI
-module_src_files := x86/test_FCOMI.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/test_FISTTP
-module_src_files := x86/test_FISTTP.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
-module_testname := x86/vdso_restorer
-module_src_files := x86/vdso_restorer.c
-module_cflags := -O2 -g -std=gnu99 -pthread -Wall -lrt -ldl -lm
-module_c_includes :=
-module_supported_arch := x86
-include $(build_kselftest_test)
-
 # zram tests
 module_prebuilt := zram/zram.sh
 module_src_files := zram/zram.sh
diff --git a/android/Android.prebuilt.mk b/android/Android.prebuilt.mk
index 0dbbbce..1933385 100644
--- a/android/Android.prebuilt.mk
+++ b/android/Android.prebuilt.mk
@@ -20,42 +20,15 @@
 module_stem := $(notdir $(module_src_files))
 module_path := $(dir $(module_src_files))
 
-prebuilt_src_file := $(kselftest_root)/$(kselftest_dir)/$(module_src_files)
-
-PRIVATE_CUSTOM_TOOL = $(ACP) -fp $< $@
-
-LOCAL_MODULE := $(module_name)-32
+LOCAL_MODULE := $(module_name)
 LOCAL_INSTALLED_MODULE_STEM := $(module_stem)
-LOCAL_MODULE_PATH := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS)/linux-kselftest/$(module_path)
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_TAGS := optional
-LOCAL_MULTILIB := 32
+LOCAL_PREBUILT_MODULE_FILE := $(LOCAL_PATH)/tools/testing/selftests/$(module_src_files)
+LOCAL_MODULE_RELATIVE_PATH := linux-kselftest/$(module_path)
+LOCAL_MODULE_CLASS := NATIVE_TESTS
+LOCAL_MULTILIB := both
 
-include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE): $(prebuilt_src_file) $(kselftest_root)/android/Android.prebuilt.mk
-	$(transform-generated-source)
-vts_src_file_32 := $(LOCAL_MODULE_PATH)/$(LOCAL_INSTALLED_MODULE_STEM)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := $(module_name)-64
-LOCAL_INSTALLED_MODULE_STEM := $(module_stem)
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/linux-kselftest/$(module_path)
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_TAGS := optional
-LOCAL_MULTILIB := 64
-
-include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE): $(prebuilt_src_file) $(kselftest_root)/android/Android.prebuilt.mk
-	$(transform-generated-source)
-vts_src_file_64 := $(LOCAL_MODULE_PATH)/$(LOCAL_INSTALLED_MODULE_STEM)
-
-vts_dst_dir := $(module_path)
-include $(kselftest_root)/android/Android.vts_testcase.mk
+include $(BUILD_PREBUILT)
 
 module_name :=
 module_stem :=
 module_path :=
-vts_src_file_32 :=
-vts_src_file_64 :=
-vts_dst_dir :=
diff --git a/android/Android.test.mk b/android/Android.test.mk
deleted file mode 100644
index d727751..0000000
--- a/android/Android.test.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-include $(CLEAR_VARS)
-
-# Check if test supports target arch.
-ifneq (,$(findstring $(kselftest_target_arch), $(module_supported_arch)))
-
-module_name := kselftest_$(subst /,_,$(module_testname))
-module_stem := $(notdir $(module_testname))
-module_path := $(dir $(module_testname))
-
-LOCAL_MODULE := $(module_name)
-LOCAL_MODULE_STEM_32 := $(module_stem)
-LOCAL_MODULE_STEM_64 := $(module_stem)
-LOCAL_MODULE_PATH_32 := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS)/linux-kselftest/$(module_path)
-LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_NATIVE_TESTS)/linux-kselftest/$(module_path)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MULTILIB := both
-
-LOCAL_CFLAGS := $(kselftest_cflags) $(module_cflags)
-LOCAL_C_INCLUDES := $(kselftest_c_includes) \
-    $(addprefix $(kselftest_root)/$(kselftest_dir)/,$(module_c_includes))
-LOCAL_SRC_FILES := $(addprefix $(kselftest_dir)/,$(module_src_files))
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.test.mk
-
-include $(BUILD_EXECUTABLE)
-
-vts_src_file_32 := $(LOCAL_MODULE_PATH_32)/$(LOCAL_MODULE_STEM_32)
-vts_src_file_64 := $(LOCAL_MODULE_PATH_64)/$(LOCAL_MODULE_STEM_64)
-vts_dst_dir := $(module_path)
-include $(kselftest_root)/android/Android.vts_testcase.mk
-
-module_name :=
-module_stem :=
-module_path :=
-vts_src_file_32 :=
-vts_src_file_64 :=
-vts_dst_dir :=
-
-endif
diff --git a/android/Android.vts_testcase.mk b/android/Android.vts_testcase.mk
deleted file mode 100644
index e189d2b6..0000000
--- a/android/Android.vts_testcase.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-
-VTS_TESTCASES_OUT := $(HOST_OUT)/vts/android-vts/testcases
-
-ifdef vts_src_file_32
-
-vts_testcases_out_32 := $(VTS_TESTCASES_OUT)/32/linux-kselftest/$(vts_dst_dir)
-vts_testcase_dst_file_32 := $(vts_testcases_out_32)/$(notdir $(vts_src_file_32))
-
-$(vts_testcase_dst_file_32): $(vts_src_file_32) | $(ACP)
-	$(hide) mkdir -p $(dir $(vts_testcase_dst_file_32))
-	$(hide) $(ACP) -fp $< $@
-vts: $(vts_testcase_dst_file_32)
-
-endif
-
-ifdef vts_src_file_64
-
-vts_testcases_out_64 := $(VTS_TESTCASES_OUT)/64/linux-kselftest/$(vts_dst_dir)
-vts_testcase_dst_file_64 := $(vts_testcases_out_64)/$(notdir $(vts_src_file_64))
-
-$(vts_testcase_dst_file_64): $(vts_src_file_64) | $(ACP)
-	$(hide) mkdir -p $(dir $(vts_testcase_dst_file_64))
-	$(hide) $(ACP) -fp $< $@
-vts: $(vts_testcase_dst_file_64)
-
-endif
diff --git a/android/kselftest_test_list.mk b/android/kselftest_test_list.mk
new file mode 100644
index 0000000..31790ed
--- /dev/null
+++ b/android/kselftest_test_list.mk
@@ -0,0 +1,100 @@
+# From Android.kselftest.mk
+kselftest_modules := \
+  kselftest_cpu-hotplug_cpu-on-off-test \
+  kselftest_efivarfs_efivarfs \
+  kselftest_firmware_fw_filesystem \
+  kselftest_firmware_fw_userhelper \
+  kselftest_ftrace_ftracetest \
+  kselftest_ftrace_test.d_functions \
+  kselftest_ftrace_test.d_00basic_basic2 \
+  kselftest_ftrace_test.d_00basic_basic4 \
+  kselftest_ftrace_test.d_00basic_basic1 \
+  kselftest_ftrace_test.d_00basic_basic3 \
+  kselftest_ftrace_test.d_template \
+  kselftest_ftrace_test.d_instances_instance \
+  kselftest_ftrace_test.d_instances_instance-event \
+  kselftest_intel_pstate_run.sh \
+  kselftest_lib_printf \
+  kselftest_lib_bitmap \
+  kselftest_memory-hotplug_mem-on-off-test \
+  kselftest_net_test_bpf \
+  kselftest_ntb_ntb_test.sh \
+  kselftest_pstore_pstore_tests \
+  kselftest_pstore_pstore_post_reboot_tests \
+  kselftest_pstore_common_tests \
+  kselftest_pstore_pstore_crash_test \
+  kselftest_static_keys_test_static_keys \
+  kselftest_sysctl_run_numerictests \
+  kselftest_sysctl_run_stringtests \
+  kselftest_sysctl_common_tests \
+  kselftest_user_test_user_copy \
+  kselftest_zram_zram.sh \
+  kselftest_zram_zram01.sh \
+  kselftest_zram_zram02.sh \
+  kselftest_zram_zram_lib.sh \
+
+# From Android.bp
+kselftest_modules += \
+  kselftest_breakpoints_tests_breakpoint_test \
+  kselftest_breakpoints_tests_step_after_suspend_test \
+  kselftest_efivarfs_tests_create-read \
+  kselftest_efivarfs_tests_open-unlink \
+  kselftest_futex_tests_futex_requeue_pi_mismatched_ops \
+  kselftest_futex_tests_futex_wait_private_mapped_file \
+  kselftest_futex_tests_futex_wait_timeout \
+  kselftest_futex_tests_futex_wait_uninitialized_heap \
+  kselftest_futex_tests_futex_wait_wouldblock \
+  kselftest_intel_pstate_tests_aperf \
+  kselftest_intel_pstate_tests_msr \
+  kselftest_kcmp_tests_kcmp_test \
+  kselftest_media_tests_media_device_open \
+  kselftest_media_tests_media_device_test \
+  kselftest_media_tests_video_device_test \
+  kselftest_membarrier_tests_membarrier_test \
+  kselftest_mount_tests_unprivileged-remount-test \
+  kselftest_net_tests_psock_fanout \
+  kselftest_net_tests_psock_tpacket \
+  kselftest_net_tests_reuseport_dualstack \
+  kselftest_net_tests_socket \
+  kselftest_ptrace_tests_peeksiginfo \
+  kselftest_seccomp_tests_seccomp_bpf \
+  kselftest_timer_tests_adjtick \
+  kselftest_timer_tests_alarmtimer-suspend \
+  kselftest_timer_tests_change_skew \
+  kselftest_timer_tests_clocksource-switch \
+  kselftest_timer_tests_inconsistency-check \
+  kselftest_timer_tests_leap-a-day \
+  kselftest_timer_tests_leapcrash \
+  kselftest_timer_tests_nanosleep \
+  kselftest_timer_tests_nsleep-lat \
+  kselftest_timer_tests_posix_timers \
+  kselftest_timer_tests_raw_skew \
+  kselftest_timer_tests_rtctest \
+  kselftest_timer_tests_set-2038 \
+  kselftest_timer_tests_set-tai \
+  kselftest_timer_tests_set-timer-lat \
+  kselftest_timer_tests_set-tz \
+  kselftest_timer_tests_skew_consistency \
+  kselftest_timer_tests_threadtest \
+  kselftest_timer_tests_valid-adjtimex \
+  kselftest_vm_tests_compaction_test \
+  kselftest_vm_tests_hugepage-mmap \
+  kselftest_vm_tests_hugepage-shm \
+  kselftest_vm_tests_map_hugetlb \
+  kselftest_vm_tests_mlock2-tests \
+  kselftest_vm_tests_on-fault-limit \
+  kselftest_vm_tests_transhuge-stress \
+  kselftest_x86_ptrace_syscall \
+  kselftest_x86_tests_check_initial_reg_state \
+  kselftest_x86_tests_ldt_gdt \
+  kselftest_x86_tests_single_step_syscall \
+  kselftest_x86_tests_syscall_arg_fault \
+  kselftest_x86_tests_syscall_nt \
+  kselftest_x86_tests_sysret_ss_attrs \
+  kselftest_x86_tests_test_FCMOV \
+  kselftest_x86_tests_test_FCOMI \
+  kselftest_x86_tests_test_FISTTP \
+  kselftest_x86_tests_test_mremap_vdso \
+  kselftest_x86_tests_unwind_vdso \
+  kselftest_x86_tests_vdso_restorer \
+  kselftest_x86_test_syscall_vdso \