/*
 * Copyright (C) 2018 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 {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_defaults {
    name: "sysprop-defaults",
    srcs: ["sysprop.proto", "Common.cpp", "CodeWriter.cpp"],
    shared_libs: ["libbase", "liblog"],
    static_libs: ["libc++fs", "libpropertyinfoserializer"],
    proto: {
        type: "full",
    },
    local_include_dirs: ["include"],
}

cc_binary_host {
    name: "sysprop_cpp",
    defaults: ["sysprop-defaults"],
    srcs: ["CppGen.cpp", "CppMain.cpp"],
}

cc_binary_host {
    name: "sysprop_java",
    defaults: ["sysprop-defaults"],
    srcs: ["JavaGen.cpp", "JavaMain.cpp"],
}

cc_binary_host {
    name: "sysprop_api_checker",
    defaults: ["sysprop-defaults"],
    srcs: ["ApiChecker.cpp", "ApiCheckerMain.cpp"],
}

cc_binary_host {
    name: "sysprop_api_dump",
    defaults: ["sysprop-defaults"],
    srcs: ["ApiDumpMain.cpp"],
}

cc_binary_host {
    name: "sysprop_type_checker",
    defaults: ["sysprop-defaults"],
    srcs: ["TypeChecker.cpp", "TypeCheckerMain.cpp"],
}

cc_test_host {
    name: "sysprop_test",
    defaults: ["sysprop-defaults"],
    srcs: ["ApiChecker.cpp",
           "CppGen.cpp",
           "JavaGen.cpp",
           "TypeChecker.cpp",
           "tests/*.cpp"],
    whole_static_libs: ["com.android.sysprop.tests"],
    test_options: {
        unit_test: true,
    },
}

java_defaults {
    name: "sysprop-library-stub-defaults",
    srcs: [
        "stub/**/*.java",
    ],
    installable: false,
    sdk_version: "core_current",
}

java_library {
    name: "sysprop-library-stub-platform",
    defaults: ["sysprop-library-stub-defaults"],
}

java_library {
    name: "sysprop-library-stub-vendor",
    defaults: ["sysprop-library-stub-defaults"],
    soc_specific: true,
}

java_library {
    name: "sysprop-library-stub-product",
    defaults: ["sysprop-library-stub-defaults"],
    product_specific: true,
}
