// Copyright (C) 2021 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.

soong_namespace {
    imports: [
        "device/generic/goldfish",
    ],
}

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

prebuilt_etc {
    name: "com.google.cf.wifi_hwsim.rc",
    src: "com.google.cf.wifi_hwsim.rc",
    installable: false,
}

cc_binary {
    name: "android.hardware.wifi@1.0-service_cf",
    defaults: ["android.hardware.wifi@1.0-service_default"],
    shared_libs: ["libwifi-hal_cf"],
    static_libs: ["android.hardware.wifi@1.0-service-lib_cf"],
}

cc_library_static {
    name: "android.hardware.wifi@1.0-service-lib_cf",
    defaults: ["android.hardware.wifi@1.0-service-lib_defaults"],
    shared_libs: ["libwifi-hal_cf"],
}

cc_library_shared {
    name: "libwifi-hal_cf",
    defaults: ["libwifi-hal_defaults"],
    whole_static_libs: ["libwifi-hal-emu"],
}

apex {
    name: "com.google.cf.wifi_hwsim",
    // Name expected by wpa_supplicant when it looks for config files.
    apex_name: "com.android.wifi.hal",
    manifest: "apex_manifest.json",
    key: "com.google.cf.apex.key",
    certificate: ":com.google.cf.apex.certificate",
    file_contexts: "file_contexts",
    use_vndk_as_stable: true,
    updatable: false,
    // Install the apex in /vendor/apex
    soc_specific: true,
    binaries: [
        "mac80211_create_radios",
        "rename_netiface",
        "wpa_supplicant_cf",
        "hostapd_cf",
        "android.hardware.wifi@1.0-service_cf",
    ],
    sh_binaries: ["init.wifi.sh_apex"],
    prebuilts: [
        "android.hardware.wifi.direct.prebuilt.xml",
        "android.hardware.wifi.passpoint.prebuilt.xml",
        "android.hardware.wifi.prebuilt.xml",
        "com.google.cf.wifi_hwsim.rc",
        "p2p_supplicant.conf.cf",
        "wpa_supplicant.conf.cf",
        "wpa_supplicant_overlay.conf.cf",
    ],
    // TODO(b/202992812): Use the vintf_fragment from the wpa_supplicant project.
    vintf_fragments: ["com.google.cf.wifi_hwsim.xml"],
}
