//
// 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"],
}

art_cc_defaults {
    name: "libart-dex2oat-defaults",
    defaults: ["art_defaults"],
    host_supported: true,
    srcs: [
        "dex/quick_compiler_callbacks.cc",
        "driver/compiler_driver.cc",
        "linker/code_info_table_deduper.cc",
        "linker/elf_writer.cc",
        "linker/elf_writer_quick.cc",
        "linker/image_writer.cc",
        "linker/multi_oat_relative_patcher.cc",
        "linker/oat_writer.cc",
        "linker/relative_patcher.cc",
    ],

    codegen: {
        arm: {
            srcs: [
                "linker/arm/relative_patcher_arm_base.cc",
                "linker/arm/relative_patcher_thumb2.cc",
            ],
        },
        arm64: {
            srcs: [
                "linker/arm64/relative_patcher_arm64.cc",
            ],
        },
        x86: {
            srcs: [
                "linker/x86/relative_patcher_x86.cc",
                "linker/x86/relative_patcher_x86_base.cc",
            ],
        },
        x86_64: {
            srcs: [
                "linker/x86_64/relative_patcher_x86_64.cc",
            ],
        },
    },

    generated_sources: ["art_dex2oat_operator_srcs"],
    shared_libs: [
        "libbase",
        "libcrypto", // For SHA-1 checksumming of build ID
        "liblog",
        "liblz4",
        "libz",
    ],
    export_include_dirs: ["."],
}

cc_defaults {
    name: "libart-dex2oat_static_base_defaults",
    whole_static_libs: [
        "libbase",
        "libcrypto",
        "liblog",
        "liblz4",
        "libz",
    ],
}

gensrcs {
    name: "art_dex2oat_operator_srcs",
    cmd: "$(location generate_operator_out) art/dex2oat $(in) > $(out)",
    tools: ["generate_operator_out"],
    srcs: [
        "linker/image_writer.h",
    ],
    output_extension: "operator_out.cc",
}

art_cc_library_static {
    name: "libart-dex2oat",
    defaults: ["libart-dex2oat-defaults"],
    shared_libs: [
        "libart-compiler",
        "libart-dexlayout",
        "libart",
        "libartpalette",
        "libprofile",
    ],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
}

cc_defaults {
    name: "libart-dex2oat_static_defaults",
    defaults: [
        "libart-dex2oat_static_base_defaults",
        "libart_static_defaults",
        "libprofile_static_defaults",
    ],
    whole_static_libs: [
        "libart-compiler",
        "libart-dexlayout",
        "libart-dex2oat",
    ],
}

// Collect all the static defaults and build a host-only static library, which
// is then used for the (mostly) static host dex2oat binary.
art_cc_library_static {
    name: "libdex2oat_static",
    device_supported: false,
    host_supported: true,
    defaults: [
        "art_defaults",
        "libart-compiler_static_defaults",
        "libart-dex2oat_static_defaults",
        "libart-dexlayout_static_defaults",
        "libart_static_defaults",
        "libartbase_static_defaults",
        "libdexfile_static_defaults",
        "libprofile_static_defaults",
    ],
}

art_cc_library_static {
    name: "libartd-dex2oat",
    defaults: [
        "art_debug_defaults",
        "libart-dex2oat-defaults",
    ],
    shared_libs: [
        "libartd-compiler",
        "libartd-dexlayout",
        "libartd",
        "libartpalette",
        "libprofiled",
    ],
    apex_available: [
        "com.android.art.debug",
    ],
}

cc_defaults {
    name: "libartd-dex2oat_static_defaults",
    defaults: [
        "libart-dex2oat_static_base_defaults",
        "libartd_static_defaults",
        "libprofiled_static_defaults",
    ],
    whole_static_libs: [
        "libartd-compiler",
        "libartd-dexlayout",
        "libartd-dex2oat",
    ],
}

art_cc_library_static {
    name: "libdex2oatd_static",
    device_supported: false,
    host_supported: true,
    defaults: [
        "art_debug_defaults",
        "libartbased_static_defaults",
        "libartd-compiler_static_defaults",
        "libartd-dex2oat_static_defaults",
        "libartd-dexlayout_static_defaults",
        "libartd_static_defaults",
        "libdexfiled_static_defaults",
        "libprofiled_static_defaults",
    ],
}

cc_defaults {
    name: "dex2oat-defaults",
    host_supported: true,
    defaults: ["art_defaults"],

    srcs: [
        "dex2oat_options.cc",
        "dex2oat.cc",
    ],
    header_libs: [
        "art_cmdlineparser_headers",
    ],

    target: {
        android: {
            compile_multilib: "both",
            shared_libs: [
                "libartpalette",
                "libbase",
                "libcrypto",
                "liblz4", // libart(d)-dex2oat dependency; must be repeated here since it's a static lib.
                "liblog",
                "libsigchain",
                "libz",
            ],
        },
    },
}

cc_defaults {
    name: "dex2oat-pgo-defaults",
    defaults_visibility: [
        "//art:__subpackages__",
        "//external/vixl",
    ],
    pgo: {
        instrumentation: true,
        benchmarks: ["dex2oat"],
    },
    target: {
        android_arm64: {
            pgo: {
                profile_file: "art/dex2oat_arm_arm64.profdata",
            },
        },
        android_arm: {
            pgo: {
                profile_file: "art/dex2oat_arm_arm64.profdata",
            },
        },
        android_x86_64: {
            pgo: {
                profile_file: "art/dex2oat_x86_x86_64.profdata",
            },
        },
        android_x86: {
            pgo: {
                profile_file: "art/dex2oat_x86_x86_64.profdata",
            },
        },
    },
}

art_cc_binary {
    name: "dex2oat",
    defaults: [
        "dex2oat-defaults",
        "dex2oat-pgo-defaults",
    ],
    // Modules that do dexpreopting, e.g. android_app, depend implicitly on
    // either dex2oat or dex2oatd in ART source builds.
    visibility: ["//visibility:public"],

    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
    symlink_preferred_arch: true,

    pgo: {
        // Additional cflags just for dex2oat during PGO instrumentation
        cflags: [
            // Ignore frame-size increase resulting from instrumentation.
            "-Wno-frame-larger-than=",
            "-DART_PGO_INSTRUMENTATION",
        ],
    },

    target: {
        android: {
            shared_libs: [
                "libart",
                "libart-compiler",
                "libart-dexlayout",
                "libartbase",
                "libdexfile",
                "libprofile",
            ],
            static_libs: [
                "libart-dex2oat",
            ],
            lto: {
                thin: true,
            },
        },
        host: {
            // Make the host binary static, except for system libraries. This
            // avoids having to bundle host dynamic libs in prebuilts.
            static_libs: ["libdex2oat_static"],
            stl: "c++_static",
            // Override the prefer32 added by art_cc_binary when
            // HOST_PREFER_32_BIT is in use. Necessary because the logic in
            // Soong for setting ctx.Config().BuildOSTarget (used in
            // dexpreopt.RegisterToolDeps) doesn't take host prefer32 into
            // account. Note that this override cannot be in cc_defaults because
            // it'd get overridden by the load hook even when it uses
            // PrependProperties.
            compile_multilib: "64",
        },
    },

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

art_cc_binary {
    name: "dex2oatd",
    defaults: [
        "art_debug_defaults",
        "dex2oat-defaults",
    ],
    // Modules that do dexpreopting, e.g. android_app, depend implicitly on
    // either dex2oat or dex2oatd in ART source builds.
    visibility: ["//visibility:public"],

    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
    symlink_preferred_arch: true,

    target: {
        android: {
            shared_libs: [
                "libartbased",
                "libartd",
                "libartd-compiler",
                "libartd-dexlayout",
                "libdexfiled",
                "libprofiled",
            ],
            static_libs: [
                "libartd-dex2oat",
            ],
        },
        host: {
            // Make the host binary static, except for system libraries. This
            // avoids having to bundle host dynamic libs in prebuilts.
            static_libs: ["libdex2oatd_static"],
            stl: "c++_static",
            // Override the prefer32 added by art_cc_binary when
            // HOST_PREFER_32_BIT is in use. Necessary because the logic in
            // Soong for setting ctx.Config().BuildOSTarget (used in
            // dexpreopt.RegisterToolDeps) doesn't take host prefer32 into
            // account. Note that this override cannot be in cc_defaults because
            // it'd get overridden by the load hook even when it uses
            // PrependProperties.
            compile_multilib: "64",
        },
    },

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

cc_defaults {
    name: "dex2oats-defaults",
    device_supported: false,
    static_executable: true,
    defaults: [
        "dex2oat-defaults",
    ],
    target: {
        darwin: {
            enabled: false,
        },
    },
    ldflags: [
        // We need this because GC stress mode makes use of
        // _Unwind_GetIP and _Unwind_Backtrace and the symbols are also
        // defined in libgcc_eh.a(unwind-dw2.o)
        // TODO: Having this is not ideal as it might obscure errors.
        // Try to get rid of it.
        "-z muldefs",
    ],
}

art_cc_binary {
    name: "dex2oats",
    defaults: ["dex2oats-defaults"],
    static_libs: ["libdex2oat_static"],
}

art_cc_binary {
    name: "dex2oatds",
    defaults: [
        "art_debug_defaults",
        "dex2oats-defaults",
    ],
    static_libs: ["libdex2oatd_static"],
}

art_cc_library_static {
    name: "libart-dex2oat-gtest",
    defaults: ["libart-gtest-defaults"],
    srcs: [
        "common_compiler_driver_test.cc",
    ],
    shared_libs: [
        "libart-compiler-gtest",
        "libart-runtime-gtest",
        "libart-compiler",
        "libart-disassembler",
        "libbase",
        "liblz4", // libart-dex2oat dependency; must be repeated here since it's a static lib.
        "liblog",
    ],
    static_libs: [
        "libart-dex2oat",
    ],
}

art_cc_library_static {
    name: "libartd-dex2oat-gtest",
    defaults: ["libartd-gtest-defaults"],
    srcs: [
        "common_compiler_driver_test.cc",
    ],
    shared_libs: [
        "libartd-compiler-gtest",
        "libartd-runtime-gtest",
        "libartd-compiler",
        "libartd-disassembler",
        "libbase",
        "liblz4", // libartd-dex2oat dependency; must be repeated here since it's a static lib.
        "liblog",
    ],
    static_libs: [
        "libartd-dex2oat",
    ],
}

art_cc_defaults {
    name: "art_dex2oat_tests_defaults",
    data: [
        ":art-gtest-jars-AbstractMethod",
        ":art-gtest-jars-DefaultMethods",
        ":art-gtest-jars-Dex2oatVdexPublicSdkDex",
        ":art-gtest-jars-Dex2oatVdexTestDex",
        ":art-gtest-jars-ImageLayoutA",
        ":art-gtest-jars-ImageLayoutB",
        ":art-gtest-jars-LinkageTest",
        ":art-gtest-jars-Main",
        ":art-gtest-jars-MainEmptyUncompressed",
        ":art-gtest-jars-MainEmptyUncompressedAligned",
        ":art-gtest-jars-MainStripped",
        ":art-gtest-jars-MainUncompressedAligned",
        ":art-gtest-jars-ManyMethods",
        ":art-gtest-jars-MultiDex",
        ":art-gtest-jars-MultiDexModifiedSecondary",
        ":art-gtest-jars-MyClassNatives",
        ":art-gtest-jars-Nested",
        ":art-gtest-jars-ProfileTestMultiDex",
        ":art-gtest-jars-StaticLeafMethods",
        ":art-gtest-jars-Statics",
        ":art-gtest-jars-StringLiterals",
        ":art-gtest-jars-VerifierDeps",
        ":art-gtest-jars-VerifierDepsMulti",
        ":art-gtest-jars-VerifySoftFailDuringClinit",
    ],
    tidy_timeout_srcs: [
        "dex2oat_test.cc",
        "verifier_deps_test.cc",
        "linker/arm/relative_patcher_thumb2_test.cc",
        "linker/arm64/relative_patcher_arm64_test.cc",
    ],
    srcs: [
        "dex2oat_test.cc",
        "dex2oat_vdex_test.cc",
        "dex2oat_image_test.cc",
        "driver/compiler_driver_test.cc",
        "linker/code_info_table_deduper_test.cc",
        "linker/elf_writer_test.cc",
        "linker/image_test.cc",
        "linker/image_write_read_test.cc",
        "linker/index_bss_mapping_encoder_test.cc",
        "linker/multi_oat_relative_patcher_test.cc",
        "linker/oat_writer_test.cc",
        "verifier_deps_test.cc",
    ],
    target: {
        host: {
            required: ["dex2oatd"],
        },
    },

    codegen: {
        arm: {
            srcs: [
                "linker/arm/relative_patcher_thumb2_test.cc",
            ],
        },
        arm64: {
            srcs: [
                "linker/arm64/relative_patcher_arm64_test.cc",
            ],
        },
        x86: {
            srcs: [
                "linker/x86/relative_patcher_x86_test.cc",
            ],
        },
        x86_64: {
            srcs: [
                "linker/x86_64/relative_patcher_x86_64_test.cc",
            ],
        },
    },

    shared_libs: [
        "libartpalette",
        "libbase",
        "libcrypto",
        "liblz4", // libart(d)-dex2oat dependency; must be repeated here since it's a static lib.
        "liblog",
        "libsigchain",
        "libziparchive",
    ],
}

// Version of ART gtest `art_dex2oat_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_dex2oat_tests",
    defaults: [
        "art_gtest_defaults",
        "art_dex2oat_tests_defaults",
    ],
    shared_libs: [
        "libartbased",
        "libartd-compiler",
        "libartd-dexlayout",
        "libprofiled",
    ],
    static_libs: [
        "libartd-dex2oat-gtest",
        "libartd-dex2oat",
        "libvixld",
    ],
}

// Standalone version of ART gtest `art_dex2oat_tests`, not bundled with the ART APEX on target.
art_cc_test {
    name: "art_standalone_dex2oat_tests",
    defaults: [
        "art_standalone_gtest_defaults",
        "art_dex2oat_tests_defaults",
    ],
    data: [":generate-boot-image"],
    shared_libs: [
        "libartbase",
        "libart-compiler",
        "libart-dexlayout",
        "libprofile",
    ],
    static_libs: [
        "libart-dex2oat-gtest",
        "libart-dex2oat",
        "libvixl",
    ],
    test_config: "art_standalone_dex2oat_tests.xml",
}

// Counterpart to art_standalone_dex2oat_tests for tests that go into CTS.
art_cc_test {
    name: "art_standalone_dex2oat_cts_tests",
    defaults: ["art_standalone_gtest_defaults"],
    srcs: ["dex2oat_cts_test.cc"],
    data: [
        ":art-gtest-jars-Main",
        ":art-gtest-jars-MainStripped",
        ":art-gtest-jars-MultiDex",
        ":art-gtest-jars-MultiDexModifiedSecondary",
        ":art-gtest-jars-Nested",
        ":generate-boot-image",
    ],
    test_config: "art_standalone_dex2oat_cts_tests.xml",
    test_suites: ["cts"],
}
