# Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the ../../../LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

rtc_library("fft_size_128") {
  sources = [
    "fft_size_128/ooura_fft.cc",
    "fft_size_128/ooura_fft.h",
    "fft_size_128/ooura_fft_tables_common.h",
  ]
  deps = [
    "../../../rtc_base/system:arch",
    "../../../system_wrappers:cpu_features_api",
  ]
  cflags = []

  if (current_cpu == "x86" || current_cpu == "x64") {
    sources += [
      "fft_size_128/ooura_fft_sse2.cc",
      "fft_size_128/ooura_fft_tables_neon_sse2.h",
    ]
    if (is_posix || is_fuchsia) {
      cflags += [ "-msse2" ]
    }
  }

  if (rtc_build_with_neon) {
    sources += [
      "fft_size_128/ooura_fft_neon.cc",
      "fft_size_128/ooura_fft_tables_neon_sse2.h",
    ]

    deps += [ "../../../common_audio" ]

    if (current_cpu != "arm64") {
      # Enable compilation for the NEON instruction set.
      suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
      cflags += [ "-mfpu=neon" ]
    }
  }

  if (current_cpu == "mipsel" && mips_float_abi == "hard") {
    sources += [ "fft_size_128/ooura_fft_mips.cc" ]
  }
}

rtc_library("fft_size_256") {
  sources = [
    "fft_size_256/fft4g.cc",
    "fft_size_256/fft4g.h",
  ]
}
