/*
 * 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",
    ],
    static_libs: [
        "libbase",
        "liblog",
        "libprotobuf-cpp-lite",
        "lib_apex_manifest_proto_lite",
    ],
    host_supported: true,
    recovery_available: true,
}

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

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,
}

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",
    ],
    host_supported: true,
}
