# Copyright (c) 2018 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_source_set("spl_sqrt_floor") {
  visibility = [ "../..:common_audio_c" ]
  sources = [
    "spl_sqrt_floor.h",
  ]
  deps = []
  if (current_cpu == "arm") {
    sources += [ "spl_sqrt_floor_arm.S" ]

    deps += [ "../../../rtc_base/system:asm_defines" ]
  } else if (current_cpu == "mipsel") {
    sources += [ "spl_sqrt_floor_mips.c" ]
  } else {
    sources += [ "spl_sqrt_floor.c" ]
  }
}
