/*
 * Copyright (C) 2019 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: "linkerconfig_defaults",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
    ],
    defaults: ["libapexutil-deps"],
    static_libs: [
        "libapexutil",
        "libbase",
        "liblog",
    ],
    host_supported: true,
}

cc_defaults {
    name: "linkerconfig_test_defaults",
    defaults: ["linkerconfig_defaults"],
    cflags: [
        "-g",
        "-Wunused",
    ],
    test_suites: ["general-tests"],
}

cc_library_static {
    name: "linkerconfig_modules",
    defaults: [ "linkerconfig_defaults" ],
    export_include_dirs: [ "modules/include" ],
    srcs: [
        "modules/*.cc",
    ],
}

cc_library_static {
    name: "linkerconfig_contents",
    defaults: [ "linkerconfig_defaults" ],
    export_include_dirs: [ "contents/include" ],
    static_libs: [
        "linkerconfig_modules",
    ],
    srcs: [
        "contents/namespace/*.cc",
        "contents/section/*.cc",
        "contents/configuration/*.cc",
        "contents/context/*.cc",
        "contents/common/*.cc",
    ],
}

cc_library_static {
    name: "linkerconfig_generator",
    defaults : [ "linkerconfig_defaults" ],
    export_include_dirs: [ "generator/include" ],
    static_libs: [
        "linkerconfig_modules",
        "linkerconfig_contents",
        "libc++fs",
    ],
    srcs: [
        "generator/*.cc",
    ],
}

cc_binary {
    name: "linkerconfig",
    defaults: [ "linkerconfig_defaults" ],
    static_libs: [
        "linkerconfig_modules",
        "linkerconfig_contents",
        "linkerconfig_generator",
    ],
    srcs: [
        "main.cc",
    ],
    static_executable: true,
    required: [
        // files from /system/etc
        "sanitizer.libraries.txt",
        "vndkcorevariant.libraries.txt",
        // Note that even thought linkerconfig requires at least one version of VNDK APEXes,
        // we can't list it here because the exact version is unknown at build-time. It is decided
        // at runtime according to ro.vndk.version (or ro.product.vndk.version)
    ],
}

cc_test {
    name: "linkerconfig_modules_unittest",
    defaults: [ "linkerconfig_test_defaults" ],
    srcs: [
        "modules/tests/*_test.cc",
    ],
    static_libs: [
        "libgmock",
        "linkerconfig_modules",
    ],
}

cc_test {
    name: "linkerconfig_backward_compatibility_test",
    defaults: [ "linkerconfig_test_defaults" ],
    srcs: [
        "contents/tests/backward_compatibility/*_test.cc",
    ],
    static_libs: [
        "linkerconfig_modules",
        "linkerconfig_contents",
    ],
}

cc_test {
    name: "linkerconfig_generator_unittest",
    defaults: [ "linkerconfig_test_defaults" ],
    srcs: [
        "generator/tests/*_test.cc",
    ],
    static_libs: [
        "linkerconfig_modules",
        "linkerconfig_contents",
        "linkerconfig_generator",
    ],
    data: [
        "generator/tests/data/*.txt",
    ],
}

cc_test {
    name: "linkerconfig_contents_fulltest",
    defaults: [ "linkerconfig_test_defaults" ],
    local_include_dirs: [
        "contents/tests/configuration/include",
    ],
    srcs: [
        "contents/tests/configuration/*_test.cc",
    ],
    static_libs: [
        "linkerconfig_modules",
        "linkerconfig_contents",
    ],
}

prebuilt_etc {
    name: "ld.config.recovery.txt",
    recovery: true,
    filename: "ld.config.txt",
    src: ":generate_recovery_linker_config",
}

genrule {
    name: "generate_recovery_linker_config",
    recovery: true,
    out: ["ld.config.txt"],
    tools: ["linkerconfig"],
    cmd: "$(location linkerconfig) --recovery --target $(genDir)",
}
