diff --git a/Android.bp b/Android.bp
index 7d36b86..9ef7e5a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1086,79 +1086,3 @@
         default: [],
     }),
 }
-
-phony {
-    name: "selinux_policy_system",
-    required: [
-        "29.0.compat.cil",
-        "30.0.compat.cil",
-        "31.0.compat.cil",
-        "32.0.compat.cil",
-        "33.0.compat.cil",
-        "34.0.compat.cil",
-        "build_sepolicy",
-        "fuzzer_bindings_test",
-        "plat_29.0.cil",
-        "plat_30.0.cil",
-        "plat_31.0.cil",
-        "plat_32.0.cil",
-        "plat_33.0.cil",
-        "plat_34.0.cil",
-        "plat_bug_map",
-        "plat_file_contexts",
-        "plat_file_contexts_data_test",
-        "plat_file_contexts_test",
-        "plat_hwservice_contexts",
-        "plat_hwservice_contexts_test",
-        "plat_keystore2_key_contexts",
-        "plat_mac_permissions.xml",
-        "plat_mapping_file",
-        "plat_property_contexts",
-        "plat_property_contexts_test",
-        "plat_seapp_contexts",
-        "plat_sepolicy.cil",
-        "plat_service_contexts",
-        "plat_service_contexts_test",
-        "searchpolicy",
-        "secilc",
-    ] + select(soong_config_variable("ANDROID", "PLATFORM_SEPOLICY_VERSION"), {
-        "202404": [],
-        default: [
-            "202404.compat.cil",
-            "plat_202404.cil",
-        ],
-    }) + select(soong_config_variable("ANDROID", "PRODUCT_PRECOMPILED_SEPOLICY"), {
-        true: ["plat_sepolicy_and_mapping.sha256"],
-        default: [],
-    }) + select((
-        soong_config_variable("ANDROID", "ASAN_ENABLED"),
-        product_variable("selinux_ignore_neverallows"),
-    ), {
-        (true, true): [
-        ],
-        (default, default): [
-            "sepolicy_compat_test",
-            "sepolicy_test",
-            "sepolicy_dev_type_test",
-            "treble_sepolicy_tests_29.0",
-            "treble_sepolicy_tests_30.0",
-            "treble_sepolicy_tests_31.0",
-            "treble_sepolicy_tests_32.0",
-            "treble_sepolicy_tests_33.0",
-            "treble_sepolicy_tests_34.0",
-        ],
-    }) + select((
-        soong_config_variable("ANDROID", "PLATFORM_SEPOLICY_VERSION"),
-        soong_config_variable("ANDROID", "ASAN_ENABLED"),
-        product_variable("selinux_ignore_neverallows"),
-    ), {
-        ("202404", true, true): [],
-        (default, true, true): [],
-        (default, default, default): [
-            "treble_sepolicy_tests_202404",
-        ],
-    }) + select(soong_config_variable("ANDROID", "RELEASE_BOARD_API_LEVEL_FROZEN"), {
-        true: ["se_freeze_test"],
-        default: [],
-    }),
-}
diff --git a/Android.mk b/Android.mk
index 9dfc531..6655919 100644
--- a/Android.mk
+++ b/Android.mk
@@ -201,6 +201,66 @@
 # By setting as droidcore's dependency, tests will run on normal builds.
 droidcore: selinux_policy
 
+include $(CLEAR_VARS)
+LOCAL_MODULE := selinux_policy_system
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_unencumbered
+LOCAL_LICENSE_CONDITIONS := notice unencumbered
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
+# These build targets are not used on non-Treble devices. However, we build these to avoid
+# divergence between Treble and non-Treble devices.
+LOCAL_REQUIRED_MODULES += \
+    plat_mapping_file \
+    $(addprefix plat_,$(addsuffix .cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS))) \
+    $(addsuffix .compat.cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
+    plat_sepolicy.cil \
+    secilc \
+
+ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
+LOCAL_REQUIRED_MODULES += plat_sepolicy_and_mapping.sha256
+endif
+
+LOCAL_REQUIRED_MODULES += \
+    build_sepolicy \
+    plat_file_contexts \
+    plat_file_contexts_test \
+    plat_file_contexts_data_test \
+    plat_keystore2_key_contexts \
+    plat_mac_permissions.xml \
+    plat_property_contexts \
+    plat_property_contexts_test \
+    plat_seapp_contexts \
+    plat_service_contexts \
+    plat_service_contexts_test \
+    plat_hwservice_contexts \
+    plat_hwservice_contexts_test \
+    fuzzer_bindings_test \
+    plat_bug_map \
+    searchpolicy \
+
+ifneq ($(with_asan),true)
+ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
+LOCAL_REQUIRED_MODULES += \
+    sepolicy_compat_test \
+
+# HACK: sepolicy_test is implemented as genrule
+# genrule modules aren't installable, so LOCAL_REQUIRED_MODULES doesn't work.
+# Instead, use LOCAL_ADDITIONAL_DEPENDENCIES with intermediate output
+LOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,ETC,sepolicy_test)/sepolicy_test
+LOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,ETC,sepolicy_dev_type_test)/sepolicy_dev_type_test
+
+LOCAL_REQUIRED_MODULES += \
+    $(addprefix treble_sepolicy_tests_,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
+
+endif  # SELINUX_IGNORE_NEVERALLOWS
+endif  # with_asan
+
+ifeq ($(RELEASE_BOARD_API_LEVEL_FROZEN),true)
+LOCAL_REQUIRED_MODULES += \
+    se_freeze_test
+endif
+
+include $(BUILD_PHONY_PACKAGE)
+
 ##################################
 # Policy files are now built with Android.bp. Grab them from intermediate.
 # See Android.bp for details of policy files.
@@ -305,6 +365,30 @@
 file_contexts.device.tmp :=
 file_contexts.local.tmp :=
 
+##################################
+# Tests for Treble compatibility of current platform policy and vendor policy of
+# given release version.
+
+ver := $(PLATFORM_SEPOLICY_VERSION)
+ifneq ($(wildcard $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)),)
+# If PLATFORM_SEPOLICY_VERSION is already frozen, use prebuilts for compat test
+base_plat_pub_policy.cil    := $(call intermediates-dir-for,ETC,$(ver)_plat_pub_policy.cil)/$(ver)_plat_pub_policy.cil
+base_product_pub_policy.cil := $(call intermediates-dir-for,ETC,$(ver)_product_pub_policy.cil)/$(ver)_product_pub_policy.cil
+else
+# If not, use ToT for compat test
+base_plat_pub_policy.cil    := $(call intermediates-dir-for,ETC,base_plat_pub_policy.cil)/base_plat_pub_policy.cil
+base_product_pub_policy.cil := $(call intermediates-dir-for,ETC,base_product_pub_policy.cil)/base_product_pub_policy.cil
+endif
+ver :=
+
+$(foreach v,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS), \
+  $(eval version_under_treble_tests := $(v)) \
+  $(eval include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk) \
+)
+
+base_plat_pub_policy.cil :=
+base_product_pub_policy.cil :=
+
 #################################
 
 
diff --git a/treble_sepolicy_tests_for_release.mk b/treble_sepolicy_tests_for_release.mk
new file mode 100644
index 0000000..2e9d68f
--- /dev/null
+++ b/treble_sepolicy_tests_for_release.mk
@@ -0,0 +1,81 @@
+version := $(version_under_treble_tests)
+
+include $(CLEAR_VARS)
+# For Treble builds run tests verifying that processes are properly labeled and
+# permissions granted do not violate the treble model.  Also ensure that treble
+# compatibility guarantees are upheld between SELinux version bumps.
+LOCAL_MODULE := treble_sepolicy_tests_$(version)
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 legacy_unencumbered
+LOCAL_LICENSE_CONDITIONS := notice unencumbered
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
+LOCAL_MODULE_CLASS := FAKE
+LOCAL_MODULE_TAGS := optional
+
+IS_TREBLE_TEST_ENABLED_PARTNER := false
+ifeq ($(filter 26.0 27.0 28.0 29.0,$(version)),)
+ifneq (,$(BOARD_SYSTEM_EXT_PREBUILT_DIR)$(BOARD_PRODUCT_PREBUILT_DIR))
+IS_TREBLE_TEST_ENABLED_PARTNER := true
+endif # (,$(BOARD_SYSTEM_EXT_PREBUILT_DIR)$(BOARD_PRODUCT_PREBUILT_DIR))
+endif # ($(filter 26.0 27.0 28.0 29.0,$(version)),)
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+# $(version)_plat - the platform policy shipped as part of the $(version) release.  This is
+# built to enable us to determine the diff between the current policy and the
+# $(version) policy, which will be used in tests to make sure that compatibility has
+# been maintained by our mapping files.
+built_$(version)_plat_sepolicy_cil := $(call intermediates-dir-for,ETC,$(version)_plat_policy.cil)/$(version)_plat_policy.cil
+
+$(version)_mapping.cil := $(call intermediates-dir-for,ETC,plat_$(version).cil)/plat_$(version).cil
+$(version)_mapping.ignore.cil := \
+    $(call intermediates-dir-for,ETC,$(version).ignore.cil)/$(version).ignore.cil
+ifeq ($(IS_TREBLE_TEST_ENABLED_PARTNER),true)
+ifneq (,$(BOARD_SYSTEM_EXT_PREBUILT_DIR))
+$(version)_mapping.cil += \
+    $(call intermediates-dir-for,ETC,system_ext_$(version).cil)/system_ext_$(version).cil
+$(version)_mapping.ignore.cil += \
+    $(call intermediates-dir-for,ETC,system_ext_$(version).ignore.cil)/system_ext_$(version).ignore.cil
+endif # (,$(BOARD_SYSTEM_EXT_PREBUILT_DIR))
+ifneq (,$(BOARD_PRODUCT_PREBUILT_DIR))
+$(version)_mapping.cil += \
+    $(call intermediates-dir-for,ETC,product_$(version).cil)/product_$(version).cil
+$(version)_mapping.ignore.cil += \
+    $(call intermediates-dir-for,ETC,product_$(version).ignore.cil)/product_$(version).ignore.cil
+endif # (,$(BOARD_PRODUCT_PREBUILT_DIR))
+endif #($(IS_TREBLE_TEST_ENABLED_PARTNER),true)
+
+# $(version)_mapping.combined.cil - a combination of the mapping file used when
+# combining the current platform policy with nonplatform policy based on the
+# $(version) policy release and also a special ignored file that exists purely for
+# these tests.
+intermediates := $(TARGET_OUT_INTERMEDIATES)/ETC/$(LOCAL_MODULE)_intermediates
+$(version)_mapping.combined.cil := $(intermediates)/$(version)_mapping.combined.cil
+$($(version)_mapping.combined.cil): $($(version)_mapping.cil) $($(version)_mapping.ignore.cil)
+	mkdir -p $(dir $@)
+	cat $^ > $@
+
+ifeq ($(IS_TREBLE_TEST_ENABLED_PARTNER),true)
+public_cil_files := $(base_product_pub_policy.cil)
+else
+public_cil_files := $(base_plat_pub_policy.cil)
+endif # ($(IS_TREBLE_TEST_ENABLED_PARTNER),true)
+$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_OLD := $(built_$(version)_plat_sepolicy_cil)
+$(LOCAL_BUILT_MODULE): PRIVATE_COMBINED_MAPPING := $($(version)_mapping.combined.cil)
+$(LOCAL_BUILT_MODULE): PRIVATE_PLAT_PUB_SEPOLICY := $(public_cil_files)
+$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/treble_sepolicy_tests \
+  $(public_cil_files) \
+  $(built_$(version)_plat_sepolicy_cil) $($(version)_mapping.combined.cil)
+	@mkdir -p $(dir $@)
+	$(hide) $(HOST_OUT_EXECUTABLES)/treble_sepolicy_tests \
+                -b $(PRIVATE_PLAT_PUB_SEPOLICY) -m $(PRIVATE_COMBINED_MAPPING) \
+                -o $(PRIVATE_SEPOLICY_OLD)
+	$(hide) touch $@
+
+built_sepolicy_files :=
+public_cil_files :=
+$(version)_mapping.cil :=
+$(version)_mapping.combined.cil :=
+$(version)_mapping.ignore.cil :=
+built_$(version)_plat_sepolicy :=
+version :=
+version_under_treble_tests :=
diff --git a/treble_sepolicy_tests_for_release/Android.bp b/treble_sepolicy_tests_for_release/Android.bp
deleted file mode 100644
index d087da6..0000000
--- a/treble_sepolicy_tests_for_release/Android.bp
+++ /dev/null
@@ -1,438 +0,0 @@
-// Copyright (C) 2024 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.
-
-package {
-    default_applicable_licenses: [
-        "Android-Apache-2.0",
-        "system_sepolicy_license",
-    ],
-}
-
-//////////////////////////////////
-// Tests for Treble compatibility of current platform policy and vendor policy of
-// given release version.
-//////////////////////////////////
-genrule {
-    name: "29.0_mapping.combined.cil",
-    srcs: [
-        ":plat_29.0.cil",
-        ":29.0.ignore.cil",
-    ],
-    out: ["29.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_29.0.cil) $(location :29.0.ignore.cil) > $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_29.0",
-    srcs: [
-        ":29.0_plat_policy.cil",
-        ":29.0_mapping.combined.cil",
-        ":29.0_plat_pub_policy.cil",
-    ],
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_29.0"],
-    cmd: "$(location treble_sepolicy_tests) " +
-        "-b $(location :29.0_plat_pub_policy.cil) " +
-        "-m $(location :29.0_mapping.combined.cil) " +
-        "-o $(location :29.0_plat_policy.cil) && " +
-        "touch $(out)",
-}
-
-genrule {
-    name: "30.0_mapping.combined.cil",
-    srcs: [
-        ":plat_30.0.cil",
-        ":30.0.ignore.cil",
-    ] + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_30.0.cil",
-            ":system_ext_30.0.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_30.0.cil",
-            ":product_30.0.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["30.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_30.0.cil) " +
-        "$(location :30.0.ignore.cil) " +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-            true: "$(location :system_ext_30.0.cil) " +
-                "$(location :system_ext_30.0.ignore.cil) ",
-            default: "",
-        }) +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-            true: "$(location :product_30.0.cil) " +
-                "$(location :product_30.0.ignore.cil) ",
-            default: "",
-        }) +
-        "> $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_30.0",
-    srcs: [
-        ":30.0_plat_policy.cil",
-        ":30.0_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":30.0_plat_pub_policy.cil"],
-        (default, default): [":30.0_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_30.0"],
-    cmd: select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :30.0_plat_pub_policy.cil) " +
-            "-m $(location :30.0_mapping.combined.cil) " +
-            "-o $(location :30.0_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :30.0_product_pub_policy.cil) " +
-            "-m $(location :30.0_mapping.combined.cil) " +
-            "-o $(location :30.0_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
-
-genrule {
-    name: "31.0_mapping.combined.cil",
-    srcs: [
-        ":plat_31.0.cil",
-        ":31.0.ignore.cil",
-    ] + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_31.0.cil",
-            ":system_ext_31.0.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_31.0.cil",
-            ":product_31.0.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["31.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_31.0.cil) " +
-        "$(location :31.0.ignore.cil) " +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-            true: "$(location :system_ext_31.0.cil) " +
-                "$(location :system_ext_31.0.ignore.cil) ",
-            default: "",
-        }) +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-            true: "$(location :product_31.0.cil) " +
-                "$(location :product_31.0.ignore.cil) ",
-            default: "",
-        }) +
-        "> $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_31.0",
-    srcs: [
-        ":31.0_plat_policy.cil",
-        ":31.0_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":31.0_plat_pub_policy.cil"],
-        (default, default): [":31.0_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_31.0"],
-    cmd: select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :31.0_plat_pub_policy.cil) " +
-            "-m $(location :31.0_mapping.combined.cil) " +
-            "-o $(location :31.0_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :31.0_product_pub_policy.cil) " +
-            "-m $(location :31.0_mapping.combined.cil) " +
-            "-o $(location :31.0_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
-
-genrule {
-    name: "32.0_mapping.combined.cil",
-    srcs: [
-        ":plat_32.0.cil",
-        ":32.0.ignore.cil",
-    ] + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_32.0.cil",
-            ":system_ext_32.0.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_32.0.cil",
-            ":product_32.0.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["32.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_32.0.cil) " +
-        "$(location :32.0.ignore.cil) " +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-            true: "$(location :system_ext_32.0.cil) " +
-                "$(location :system_ext_32.0.ignore.cil) ",
-            default: "",
-        }) +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-            true: "$(location :product_32.0.cil) " +
-                "$(location :product_32.0.ignore.cil) ",
-            default: "",
-        }) +
-        "> $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_32.0",
-    srcs: [
-        ":32.0_plat_policy.cil",
-        ":32.0_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":32.0_plat_pub_policy.cil"],
-        (default, default): [":32.0_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_32.0"],
-    cmd: select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :32.0_plat_pub_policy.cil) " +
-            "-m $(location :32.0_mapping.combined.cil) " +
-            "-o $(location :32.0_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :32.0_product_pub_policy.cil) " +
-            "-m $(location :32.0_mapping.combined.cil) " +
-            "-o $(location :32.0_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
-
-genrule {
-    name: "33.0_mapping.combined.cil",
-    srcs: [
-        ":plat_33.0.cil",
-        ":33.0.ignore.cil",
-    ] + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_33.0.cil",
-            ":system_ext_33.0.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_33.0.cil",
-            ":product_33.0.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["33.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_33.0.cil) " +
-        "$(location :33.0.ignore.cil) " +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-            true: "$(location :system_ext_33.0.cil) " +
-                "$(location :system_ext_33.0.ignore.cil) ",
-            default: "",
-        }) +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-            true: "$(location :product_33.0.cil) " +
-                "$(location :product_33.0.ignore.cil) ",
-            default: "",
-        }) +
-        "> $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_33.0",
-    srcs: [
-        ":33.0_plat_policy.cil",
-        ":33.0_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":33.0_plat_pub_policy.cil"],
-        (default, default): [":33.0_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_33.0"],
-    cmd: select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :33.0_plat_pub_policy.cil) " +
-            "-m $(location :33.0_mapping.combined.cil) " +
-            "-o $(location :33.0_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :33.0_product_pub_policy.cil) " +
-            "-m $(location :33.0_mapping.combined.cil) " +
-            "-o $(location :33.0_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
-
-genrule {
-    name: "34.0_mapping.combined.cil",
-    srcs: [
-        ":plat_34.0.cil",
-        ":34.0.ignore.cil",
-    ] + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_34.0.cil",
-            ":system_ext_34.0.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_34.0.cil",
-            ":product_34.0.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["34.0_mapping.combined.cil"],
-    cmd: "cat $(location :plat_34.0.cil) " +
-        "$(location :34.0.ignore.cil) " +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-            true: "$(location :system_ext_34.0.cil) " +
-                "$(location :system_ext_34.0.ignore.cil) ",
-            default: "",
-        }) +
-        select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-            true: "$(location :product_34.0.cil) " +
-                "$(location :product_34.0.ignore.cil) ",
-            default: "",
-        }) +
-        "> $(out)",
-}
-
-genrule {
-    name: "treble_sepolicy_tests_34.0",
-    srcs: [
-        ":34.0_plat_policy.cil",
-        ":34.0_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":34.0_plat_pub_policy.cil"],
-        (default, default): [":34.0_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_34.0"],
-    cmd: select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :34.0_plat_pub_policy.cil) " +
-            "-m $(location :34.0_mapping.combined.cil) " +
-            "-o $(location :34.0_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :34.0_product_pub_policy.cil) " +
-            "-m $(location :34.0_mapping.combined.cil) " +
-            "-o $(location :34.0_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
-
-genrule {
-    name: "202404_mapping.combined.cil",
-    srcs: select(soong_config_variable("ANDROID", "PLATFORM_SEPOLICY_VERSION"), {
-        "202404": [
-        ],
-        default: [
-            ":plat_202404.cil",
-            ":202404.ignore.cil",
-        ],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"), {
-        true: [
-            ":system_ext_202404.cil",
-            ":system_ext_202404.ignore.cil",
-        ],
-        default: [],
-    }) + select(soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"), {
-        true: [
-            ":product_202404.cil",
-            ":product_202404.ignore.cil",
-        ],
-        default: [],
-    }),
-    out: ["202404_mapping.combined.cil"],
-    cmd: select(soong_config_variable("ANDROID", "PLATFORM_SEPOLICY_VERSION"), {
-        "202404": "touch $(out)",
-        default: "cat $(in) > $(out)",
-    }),
-}
-
-genrule {
-    name: "treble_sepolicy_tests_202404",
-    srcs: [
-        ":202404_plat_policy.cil",
-        ":202404_mapping.combined.cil",
-    ] + select((
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        (false, false): [":202404_plat_pub_policy.cil"],
-        (default, default): [":202404_product_pub_policy.cil"],
-    }),
-    tools: ["treble_sepolicy_tests"],
-    out: ["treble_sepolicy_tests_202404"],
-    cmd: select((
-        soong_config_variable("ANDROID", "PLATFORM_SEPOLICY_VERSION"),
-        soong_config_variable("ANDROID", "HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR"),
-        soong_config_variable("ANDROID", "HAS_BOARD_PRODUCT_PREBUILT_DIR"),
-    ), {
-        ("202404", false, false): "touch $(out)",
-        ("202404", default, default): "touch $(out)",
-        (default, false, false): "$(location treble_sepolicy_tests) " +
-            "-b $(location :202404_plat_pub_policy.cil) " +
-            "-m $(location :202404_mapping.combined.cil) " +
-            "-o $(location :202404_plat_policy.cil) && " +
-            "touch $(out)",
-        (default, default, default): "$(location treble_sepolicy_tests) " +
-            "-b $(location :202404_product_pub_policy.cil) " +
-            "-m $(location :202404_mapping.combined.cil) " +
-            "-o $(location :202404_plat_policy.cil) && " +
-            "touch $(out)",
-    }),
-}
