//
// 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: "libartbase_defaults",
    defaults: ["art_defaults"],
    host_supported: true,
    srcs: [
        "arch/instruction_set.cc",
        "base/allocator.cc",
        "base/arena_allocator.cc",
        "base/arena_bit_vector.cc",
        "base/bit_vector.cc",
        "base/compiler_filter.cc",
        "base/enums.cc",
        "base/file_magic.cc",
        "base/file_utils.cc",
        "base/flags.cc",
        "base/hex_dump.cc",
        "base/logging.cc",
        "base/malloc_arena_pool.cc",
        "base/membarrier.cc",
        "base/memfd.cc",
        "base/memory_region.cc",
        "base/mem_map.cc",
        // "base/mem_map_fuchsia.cc", put in target when fuchsia supported by soong
        "base/metrics/metrics_common.cc",
        "base/os_linux.cc",
        "base/runtime_debug.cc",
        "base/scoped_arena_allocator.cc",
        "base/scoped_flock.cc",
        "base/socket_peer_is_trusted.cc",
        "base/time_utils.cc",
        "base/unix_file/fd_file.cc",
        "base/unix_file/random_access_file_utils.cc",
        "base/utils.cc",
        "base/zip_archive.cc",
    ],
    target: {
        android: {
            srcs: [
                "base/globals_unix.cc",
                "base/mem_map_unix.cc",
            ],
            static: {
                cflags: ["-DART_STATIC_LIBARTBASE"],
            },
            static_libs: [
                "libcap",
                "libmodules-utils-build",
                // ZipArchive support, the order matters here to get all symbols.
                "libziparchive",
            ],
            whole_static_libs: ["libtinyxml2"],
            shared_libs: [
                "libz",
                "liblog",
                // For ashmem.
                "libartpalette",
                // For common macros.
                "libbase",
            ],
            export_shared_lib_headers: ["libbase"], // ART's macros.h depends on libbase's macros.h.
            export_static_lib_headers: [
                "libcap",
            ],
        },
        not_windows: {
            srcs: [
                "base/globals_unix.cc",
                "base/mem_map_unix.cc",
            ],
            static: {
                cflags: ["-DART_STATIC_LIBARTBASE"],
            },
            whole_static_libs: ["libtinyxml2"],
            shared_libs: [
                "libziparchive",
                "libz",
                "liblog",
                // For ashmem.
                "libartpalette",
                // For common macros.
                "libbase",
            ],
            export_shared_lib_headers: ["libbase"], // ART's macros.h depends on libbase's macros.h.
        },
        linux_glibc: {
            static_libs: [
                "libcap",
            ],
            export_static_lib_headers: [
                "libcap",
            ],
        },
        windows: {
            srcs: [
                "base/mem_map_windows.cc",
            ],
            static_libs: [
                "libziparchive",
                "libz",
                "liblog",
                // For ashmem.
                "libartpalette",
                // For common macros.
                "libbase",
            ],
            whole_static_libs: ["libtinyxml2"],
            export_static_lib_headers: ["libbase"], // ART's macros.h depends on libbase's macros.h.

            cflags: ["-Wno-thread-safety"],
        },
        darwin: {
            enabled: true, // for libdexfile.
        },
    },
    generated_sources: ["art_libartbase_operator_srcs"],

    export_include_dirs: ["."],
}

cc_defaults {
    name: "libartbase_static_base_defaults",
    whole_static_libs: [
        "libbase",
        "libartpalette",
        "liblog",
        "libz",
        "libziparchive",
    ],
    target: {
        android: {
            whole_static_libs: [
                "libcap",
            ],
        },
        linux_glibc: {
            whole_static_libs: [
                "libcap",
            ],
        },
    },
}

cc_defaults {
    name: "libartbase_static_defaults",
    defaults: ["libartbase_static_base_defaults"],
    whole_static_libs: ["libartbase"],
}

cc_defaults {
    name: "libartbased_static_defaults",
    defaults: ["libartbase_static_base_defaults"],
    whole_static_libs: ["libartbased"],
}

gensrcs {
    name: "art_libartbase_operator_srcs",
    cmd: "$(location generate_operator_out) art/libartbase $(in) > $(out)",
    tools: ["generate_operator_out"],
    srcs: [
        "arch/instruction_set.h",
        "base/allocator.h",
        "base/unix_file/fd_file.h",
    ],
    output_extension: "operator_out.cc",
}

art_cc_library {
    name: "libartbase",
    defaults: [
        "libartbase_defaults",
        "libart_nativeunwind_defaults",
    ],
    visibility: [
        // TODO(b/183483755): Please visibility checks when the prebuilt
        // libartbase is present but not preferred, and the prebuilt libdexfile
        // hence depends on the source instead.
        // TODO(b/172480617): Alternatively, clean up when we no longer need to
        // support both prebuilts and sources present simultaneously.
        "//prebuilts/module_sdk/art/current/host-exports",
        // TODO(b/133140750): Clean this up.
        "//packages/modules/NetworkStack/tests:__subpackages__",
    ],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],

    target: {
        windows: {
            // Control the enabled property here rather than in
            // libartbase_defaults, to ensure it overrides properties inherited
            // from other defaults.
            enabled: true,
            shared: {
                enabled: false,
            },
        },
    },
    afdo: true,
}

art_cc_library {
    name: "libartbased",
    defaults: [
        "art_debug_defaults",
        "libartbase_defaults",
    ],
    apex_available: [
        "com.android.art.debug",
    ],

    target: {
        windows: {
            // Control the enabled property here rather than in
            // libartbase_defaults, to ensure it overrides properties inherited
            // from other defaults, in particular any inherited via
            // art_debug_defaults.
            enabled: true,
            shared: {
                enabled: false,
            },
        },
    },
}

art_cc_defaults {
    name: "libartbase-art-gtest-defaults",
    srcs: [
        "base/common_art_test.cc",
    ],
    header_libs: [
        "libnativehelper_header_only",
        // Required for "base/mutex.h" in common_art_test.cc
        "libart_headers",
    ],
    static: {
        whole_static_libs: [
            "libc++fs",
            "libcap",
        ],
    },
    shared: {
        static_libs: [
            "libc++fs",
            "libcap",
        ],
    },
}

art_cc_library_static {
    name: "libartbase-art-gtest",
    defaults: [
        "libart-gtest-defaults",
        "libartbase-art-gtest-defaults",
        "libartbase_static_defaults",
        "libdexfile_static_defaults",
    ],
}

art_cc_library_static {
    name: "libartbased-art-gtest",
    defaults: [
        "art_debug_defaults",
        "libart-gtest-defaults",
        "libartbase-art-gtest-defaults",
        "libartbased_static_defaults",
        "libdexfiled_static_defaults",
    ],
}

art_cc_library_static {
    name: "libartbase-testing",
    defaults: [
        "art_defaults",
    ],
    host_supported: true,
    srcs: [
        "base/testing.cc",
    ],
    header_libs: [
        "libbase_headers",
        "art_libartbase_headers",
    ],
}

art_cc_defaults {
    name: "art_libartbase_tests_defaults",
    tidy_timeout_srcs: [
        "base/bit_utils_test.cc",
        "base/intrusive_forward_list_test.cc",
    ],
    srcs: [
        "arch/instruction_set_test.cc",
        "base/arena_allocator_test.cc",
        "base/bit_field_test.cc",
        "base/bit_memory_region_test.cc",
        "base/bit_string_test.cc",
        "base/bit_struct_test.cc",
        "base/bit_table_test.cc",
        "base/bit_utils_test.cc",
        "base/bit_vector_test.cc",
        "base/compiler_filter_test.cc",
        "base/file_utils_test.cc",
        "base/flags_test.cc",
        "base/hash_map_test.cc",
        "base/hash_set_test.cc",
        "base/hex_dump_test.cc",
        "base/histogram_test.cc",
        "base/indenter_test.cc",
        "base/intrusive_forward_list_test.cc",
        "base/leb128_test.cc",
        "base/logging_test.cc",
        "base/memfd_test.cc",
        "base/membarrier_test.cc",
        "base/memory_region_test.cc",
        "base/mem_map_test.cc",
        "base/metrics/metrics_test.cc",
        "base/scoped_flock_test.cc",
        "base/time_utils_test.cc",
        "base/transform_array_ref_test.cc",
        "base/transform_iterator_test.cc",
        "base/unix_file/fd_file_test.cc",
        "base/utils_test.cc",
        "base/variant_map_test.cc",
        "base/zip_archive_test.cc",
    ],
    static_libs: [
        "libgmock",
    ],
}

// Version of ART gtest `art_libartbase_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_libartbase_tests",
    defaults: [
        "art_gtest_defaults",
        "art_libartbase_tests_defaults",
    ],
}

// Standalone version of ART gtest `art_libartbase_tests`, not bundled with the ART APEX on target.
art_cc_test {
    name: "art_standalone_libartbase_tests",
    defaults: [
        "art_standalone_gtest_defaults",
        "art_libartbase_tests_defaults",
    ],
    data: [":generate-boot-image"],
    test_config_template: ":art-gtests-target-standalone-with-boot-image-template",
}

cc_library_headers {
    name: "art_libartbase_headers",
    defaults: ["art_defaults"],
    host_supported: true,
    export_include_dirs: ["."],
    shared_libs: ["libbase"],
    export_shared_lib_headers: ["libbase"],

    whole_static_libs: ["libtinyxml2"],

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