# Build file for Fuchsia OS
#
# Copyright (c) 2016 The Fuchsia Authors.
#
# This software may be distributed under the terms of the BSD license.
# See README for more details.

executable("wpa_supplicant") {

  configs += [ ":wpa_supplicant_private" ]
  configs -= [ "//build/config:default_warnings" ]

  deps = [
    ":wpa_supplicant_original",
    ":wpa_supplicant_fuchsia",
  ]

}

config("wpa_supplicant_private") {
  visibility = [ ":*" ]

  include_dirs = [
    "../src",
    "../src/utils",
  ]

  cflags = [
    "-Wno-unused-function",
    "-Wno-unused-parameter",
  ]

  defines = [
    "CONFIG_BACKEND_FILE",
    "CONFIG_CRYPTO_INTERNAL",
    "CONFIG_DRIVER_MOCK",
    "CONFIG_NO_PBKDF2",
    "CONFIG_NO_CONFIG_BLOBS",
    "CONFIG_NO_SCAN_PROCESSING",
    "CONFIG_NO_WPA",
    "CONFIG_NO_ROAMING",
    "CONFIG_SHA256",
  ]
}

source_set("wpa_supplicant_original") {
  sources = [
    "../src/common/ieee802_11_common.c",
    "../src/common/hw_features_common.c",
    "../src/crypto/random.c",
    "../src/crypto/crypto_internal.c",
    "../src/crypto/md5.c",
    "../src/crypto/md5-internal.c",
    "../src/crypto/sha1.c",
    "../src/crypto/sha1-internal.c",
    "../src/crypto/sha256.c",
    "../src/crypto/sha256-internal.c",
    "../src/crypto/sha256-prf.c",
    "../src/crypto/sha256-tlsprf.c",
    "../src/crypto/tls_none.c",
    "../src/drivers/driver_common.c",
    "../src/drivers/driver_mock.c",
    "../src/drivers/drivers.c",
    "../src/l2_packet/l2_packet_none.c",
    "../src/utils/common.c",
    "../src/utils/wpa_debug.c",
    "../src/utils/wpabuf.c",
    "config.c",
    "notify.c",
    "bss.c",
    "eap_register.c",
    "wmm_ac.c",
    "config_file.c",
    "wpa_supplicant.c",
    "events.c",
    "blacklist.c",
    "wpas_glue.c",
    "scan.c",
  ]

  configs += [ ":wpa_supplicant_private" ]
}

source_set("wpa_supplicant_fuchsia") {
  sources = [
    "../src/utils/eloop_fuchsia.cc",
    "../src/utils/os_fuchsia.c",
    "main_fuchsia.c",
  ]

  configs += [ ":wpa_supplicant_private" ]

  deps = [
    "//lib/ftl",
    "//lib/mtl",
  ]
}
