//
// Copyright (C) 2011 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "art_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["art_license"],
}

cc_defaults {
    name: "libdexfile_defaults",
    defaults: ["art_defaults"],
    host_supported: true,
    srcs: [
        "dex/art_dex_file_loader.cc",
        "dex/compact_dex_file.cc",
        "dex/compact_offset_table.cc",
        "dex/descriptors_names.cc",
        "dex/dex_file.cc",
        "dex/dex_file_exception_helpers.cc",
        "dex/dex_file_layout.cc",
        "dex/dex_file_loader.cc",
        "dex/dex_file_tracking_registrar.cc",
        "dex/dex_file_verifier.cc",
        "dex/dex_instruction.cc",
        "dex/modifiers.cc",
        "dex/primitive.cc",
        "dex/signature.cc",
        "dex/standard_dex_file.cc",
        "dex/type_lookup_table.cc",
        "dex/utf.cc",
    ],
    header_libs: [
        "jni_headers",
        "libdexfile_external_headers",
    ],
    export_header_lib_headers: [
        "jni_headers",
        "libdexfile_external_headers",
    ],
    target: {
        android: {
            srcs: [
                "external/dex_file_ext.cc",
            ],
            static_libs: [
                "libziparchive",
            ],
            shared_libs: [
                // libz provides a stub from platform, shouldn't be statically linked
                "libz",
                // For MemMap.
                "libartpalette",
                "liblog",
                // For common macros.
                "libbase",
            ],
            export_shared_lib_headers: [
                "libbase",
            ],
        },
        not_windows: {
            srcs: [
                "external/dex_file_ext.cc",
            ],
            shared_libs: [
                "libziparchive",
                "libz",
                // For MemMap.
                "libartpalette",
                "liblog",
                // For common macros.
                "libbase",
            ],
            export_shared_lib_headers: [
                "libbase",
            ],
        },
        windows: {
            static_libs: [
                "libziparchive",
                "libz",
                // For MemMap.
                "libartpalette",
                "liblog",
                // For common macros.
                "libbase",
            ],
            export_static_lib_headers: [
                "libbase",
            ],
            cflags: ["-Wno-thread-safety"],
        },
        darwin: {
            enabled: true,
        },
    },
    generated_sources: ["dexfile_operator_srcs"],
    export_include_dirs: ["."],
}

cc_defaults {
    name: "libdexfile_static_base_defaults",
    whole_static_libs: [
        "libbase",
        "liblog",
        "libz",
        "libziparchive",
    ],
}

cc_defaults {
    name: "libdexfile_static_defaults",
    defaults: [
        "libartbase_static_defaults",
        "libdexfile_static_base_defaults",
    ],
    defaults_visibility: [
        "//art:__subpackages__",
    ],
    whole_static_libs: ["libdexfile"],
}

cc_defaults {
    name: "libdexfiled_static_defaults",
    defaults: [
        "libartbased_static_defaults",
        "libdexfile_static_base_defaults",
    ],
    whole_static_libs: ["libdexfiled"],
}

gensrcs {
    name: "dexfile_operator_srcs",
    cmd: "$(location generate_operator_out) art/libdexfile $(in) > $(out)",
    tools: ["generate_operator_out"],
    srcs: [
        "dex/dex_file.h",
        "dex/dex_file_layout.h",
        "dex/dex_instruction.h",
        "dex/dex_instruction_utils.h",
        "dex/invoke_type.h",
    ],
    output_extension: "operator_out.cc",
}

art_cc_library {
    name: "libdexfile",
    visibility: [
        // Allow libunwindstack to list this as a runtime library.
        "//system/unwinding/libunwindstack",
    ],
    defaults: [
        "libdexfile_defaults",
        "libart_nativeunwind_defaults",
    ],
    target: {
        android: {
            shared_libs: [
                "libartbase",
            ],
            export_shared_lib_headers: [
                "libartbase",
            ],
        },
        not_windows: {
            shared_libs: [
                "libartbase",
            ],
            export_shared_lib_headers: [
                "libartbase",
            ],
        },
        windows: {
            enabled: true,
            shared: {
                enabled: false,
            },
            static_libs: [
                "libartbase",
            ],
            export_static_lib_headers: [
                "libartbase",
            ],
        },
    },
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    stubs: {
        symbol_file: "libdexfile.map.txt",
        versions: ["1"],
    },
}

art_cc_library {
    name: "libdexfiled",
    defaults: [
        "art_debug_defaults",
        "libdexfile_defaults",
    ],
    target: {
        android: {
            shared_libs: [
                "libartbased",
            ],
            export_shared_lib_headers: [
                "libartbased",
            ],
        },
        not_windows: {
            shared_libs: [
                "libartbased",
            ],
            export_shared_lib_headers: [
                "libartbased",
            ],
        },
        windows: {
            enabled: true,
            shared: {
                enabled: false,
            },
            static_libs: [
                "libartbased",
            ],
            export_static_lib_headers: [
                "libartbased",
            ],
        },
    },
    apex_available: [
        "com.android.art.debug",
        // TODO(b/183882457): This lib doesn't go into com.android.art, but
        // apex_available lists need to be the same for internal libs to avoid
        // stubs, and libartd depends on this.
        "com.android.art",
    ],
}

art_cc_defaults {
    name: "art_libdexfile_tests_defaults",
    srcs: [
        "dex/art_dex_file_loader_test.cc",
        "dex/class_accessor_test.cc",
        "dex/code_item_accessors_test.cc",
        "dex/compact_dex_file_test.cc",
        "dex/compact_offset_table_test.cc",
        "dex/descriptors_names_test.cc",
        "dex/test_dex_file_builder_test.cc",
        "dex/dex_file_loader_test.cc",
        "dex/dex_file_verifier_test.cc",
        "dex/dex_instruction_test.cc",
        "dex/primitive_test.cc",
        "dex/string_reference_test.cc",
        "dex/type_lookup_table_test.cc",
        "dex/utf_test.cc",
    ],
    data: [
        ":art-gtest-jars-GetMethodSignature",
        ":art-gtest-jars-Lookup",
        ":art-gtest-jars-Main",
        ":art-gtest-jars-MultiDex",
        ":art-gtest-jars-Nested",
    ],
    header_libs: ["jni_headers"],
    shared_libs: [
        "libbacktrace",
        "libziparchive",
    ],
}

// Version of ART gtest `art_libdexfile_tests` bundled with the ART APEX on target.
// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
art_cc_test {
    name: "art_libdexfile_tests",
    defaults: [
        "art_gtest_defaults",
        "art_libdexfile_tests_defaults",
    ],
}

// Standalone version of ART gtest `art_libdexfile_tests`, not bundled with the ART APEX on target.
art_cc_test {
    name: "art_standalone_libdexfile_tests",
    defaults: [
        "art_standalone_gtest_defaults",
        "art_libdexfile_tests_defaults",
    ],
    test_config: "art_standalone_libdexfile_tests.xml",
}

cc_library_headers {
    name: "libdexfile_external_headers",
    visibility: ["//visibility:public"],
    host_supported: true,
    header_libs: ["libbase_headers"],
    export_header_lib_headers: ["libbase_headers"],
    export_include_dirs: ["external/include"],

    target: {
        windows: {
            enabled: true,
        },
    },

    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.media",
        "com.android.runtime",
    ],
    min_sdk_version: "S",
}

// Make dex_instruction_list.h available for tools/jvmti-agents/titrace
cc_library_headers {
    name: "libdexfile_all_headers",
    visibility: ["//art:__subpackages__"],
    host_supported: true,
    export_include_dirs: ["."],

    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    min_sdk_version: "S",
}

art_cc_test {
    name: "art_libdexfile_external_tests",
    defaults: [
        "art_module_source_build_defaults",
        "art_test_defaults",
    ],
    test_suites: ["general-tests"],
    srcs: [
        "external/dex_file_ext_c_test.c",
        "external/dex_file_ext_test.cc",
    ],
    shared_libs: [
        "libartbase",
        "libdexfile",
    ],
    header_libs: [
        "jni_headers",
        "libdexfile_external_headers",
    ],
}

// Support library with a C++ API for accessing the libdexfile API for external
// (non-ART) users.
//
// This library dlopens libdexfile(d).so on first use, so there is no build time
// dependency on dex file logic. It is therefore safe to use from binaries
// compiled without dex file support, given they won't encounter any dex file
// stack frames.
art_cc_library_static {
    name: "libdexfile_support",
    visibility: ["//visibility:public"],
    host_supported: true,
    srcs: [
        "external/dex_file_supp.cc",
    ],
    runtime_libs: ["libdexfile"],
    shared_libs: [
        "liblog",
        "libbase",
    ],
    header_libs: ["libdexfile_external_headers"],
    export_header_lib_headers: ["libdexfile_external_headers"],

    apex_available: [
        "//apex_available:platform",
        "com.android.art",
        "com.android.art.debug",
        "com.android.media",
        "com.android.media.swcodec",
        "com.android.runtime",
    ],
    min_sdk_version: "S",
}

art_cc_defaults {
    name: "art_libdexfile_support_tests_defaults",
    defaults: [
        "art_module_source_build_defaults",
    ],
    test_suites: ["general-tests"],
    srcs: [
        "external/dex_file_supp_test.cc",
    ],
    shared_libs: [
        "libartbase",
        "libbase",
        "libdexfile",
        "liblog",
    ],
    static_libs: [
        "libdexfile_support",
    ],
}

// Version of ART gtest `art_libdexfile_support_tests` bundled with the ART APEX on target.
// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
art_cc_test {
    name: "art_libdexfile_support_tests",
    host_supported: true,
    defaults: [
        "art_test_defaults",
        "art_libdexfile_support_tests_defaults",
    ],
}

// Standalone version of ART gtest `art_libdexfile_support_tests`, not bundled with the ART APEX on
// target.
art_cc_test {
    name: "art_standalone_libdexfile_support_tests",
    defaults: [
        "art_standalone_test_defaults",
        "art_libdexfile_support_tests_defaults",
    ],

    // Support multilib variants (using different suffix per sub-architecture), which is needed on
    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
    // all test artifacts into a single `testcases` directory.
    compile_multilib: "both",
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },

    test_suites: [
        "mts-art",
    ],
}

cc_library_static {
    name: "libdexfile_support_static",
    host_supported: true,
    srcs: [
        "external/dex_file_supp.cc",
    ],
    cflags: ["-DSTATIC_LIB"],
    header_libs: ["libdexfile_external_headers"],
    export_header_lib_headers: ["libdexfile_external_headers"],
}

cc_defaults {
    name: "libdexfile_support_static_defaults",
    defaults: [
        "libdexfile_static_defaults",
    ],
    whole_static_libs: [
        "libdexfile",
        "libdexfile_support_static",
    ],
}

cc_defaults {
    name: "libdexfiled_support_static_defaults",
    defaults: [
        "libdexfiled_static_defaults",
    ],
    whole_static_libs: [
        "libdexfiled",
        "libdexfile_support_static",
    ],
}

art_cc_test {
    name: "art_libdexfile_support_static_tests",
    test_suites: ["general-tests"],
    defaults: [
        "art_module_source_build_defaults",
        "art_test_defaults",
        "libdexfile_support_static_defaults",
    ],
    srcs: [
        "external/dex_file_supp_test.cc",
    ],
}

// For use by external packages allowed to link in static libdexfile_support.
// This is not allowed in any module that may end up in an APEX or platform
// image, so visibility is restrictive.
cc_library_static {
    name: "libdexfile_static",
    host_supported: true,
    visibility: [
        // Required for simpleperf, libsimpleperf_record, and libsimpleperf_report
        // in the NDK.
        "//system/extras/simpleperf",
        "//cts/tests/tests/simpleperf",
    ],
    // Using libdexfile_support_static_defaults will link in external libs like
    // libbase and libz statically as well, which are likely to cause duplicate
    // copies in the depending module.
    // TODO(b/169885605): Avoid exposing symbols from those libs.
    defaults: [
        "art_defaults",
        "libdexfile_support_static_defaults",
    ],
}

art_cc_test {
    name: "art_libdexfile_static_tests",
    defaults: ["art_test_defaults"],
    test_suites: ["general-tests"],
    srcs: [
        "external/dex_file_supp_test.cc",
    ],
    static_libs: [
        "libdexfile_static",
    ],
    enabled: false,
    target: {
        linux: {
            enabled: true,
        },
    },
    // TODO(b/181740144): Enable a ubsan check to create a dependency on
    // ubsan_minimal. It's needed to be able to link with the prebuilt
    // libdexfile_static.a, which contains libziparchive.a, which is
    // built with some ubsan checks
    // (https://cs.android.com/android/platform/superproject/+/master:system/libziparchive/Android.bp;l=47-59;drc=c7b498fdf2002194709e40ea58ce39f43684fc14)
    // that the SDK snapshots currently don't propagate properly for static
    // libs.
    sanitize: {
        misc_undefined: ["shift"],
    },
}

filegroup {
    name: "art_libdexfile_dex_instruction_list_header",
    srcs: ["dex/dex_instruction_list.h"],
}
