# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/arm.gni")
import("//testing/test.gni")

# If fixed point implementation shall be used (otherwise float).
use_opus_fixed_point = current_cpu == "arm" || current_cpu == "arm64"

# If ARM optimizations shall be used to accelerate performance.
# TODO(scottmg): Disabled on Fuchsia for now, see https://crbug.com/775272.
use_opus_arm_optimization =
    current_cpu == "arm" || (current_cpu == "arm64" && is_ios)

# NaCl, unlike Chrome, doesn't target SSE2 minimum, so skip optimizations for
# the sake of simplicity.
use_opus_x86_optimization =
    !is_nacl && (current_cpu == "x86" || current_cpu == "x64")

# If OPUS Run Time CPU Detections (RTCD) shall be used.
# Based on the conditions in celt/arm/armcpu.c:
# defined(_MSC_VER) || defined(__linux__).
use_opus_arm_rtcd = current_cpu == "arm" && (is_win || is_android || is_linux)

config("opus_config") {
  include_dirs = [ "src/include" ]

  if (use_opus_fixed_point) {
    defines = [ "OPUS_FIXED_POINT" ]
  }
}

config("opus_private_config") {
  defines = [
    "OPUS_BUILD",
    "OPUS_EXPORT=",

    # Prefer alloca() over variable length arrays which are often inefficient;
    # the opus code will automatically handle this correctly per-platform.
    "USE_ALLOCA",
    "HAVE_ALLOCA_H",
  ]

  include_dirs = [
    "src",
    "src/celt",
    "src/silk",
  ]

  cflags = []

  if (is_win) {
    defines += [ "inline=__inline" ]

    cflags += [
      "/wd4305",  # Disable truncation warning in celt/pitch.c .
      "/wd4334",  # Disable 32-bit shift warning in src/opus_encoder.c .
    ]
  } else {
    defines += [
      "HAVE_LRINT",
      "HAVE_LRINTF",
    ]
  }

  if (is_debug) {
    # Turn off a warning in opus_decoder.c when compiling without optimization.
    defines += [ "OPUS_WILL_BE_SLOW" ]
  }

  if (use_opus_x86_optimization) {
    defines += [
      # Run Time CPU Detections (RTCD) is always enabled for x86.
      "OPUS_HAVE_RTCD",
      "CPU_INFO_BY_ASM",

      # Chrome always targets SSE2+.
      "OPUS_X86_MAY_HAVE_SSE",
      "OPUS_X86_MAY_HAVE_SSE2",
      "OPUS_X86_PRESUME_SSE",
      "OPUS_X86_PRESUME_SSE2",

      # Some systems may have SSE4.1+ support.
      "OPUS_X86_MAY_HAVE_SSE4_1",

      # At present libopus has no AVX functions so no sources are add for this,
      # if you see linker errors on AVX code the this flag is why.
      "OPUS_X86_MAY_HAVE_AVX",
    ]
  }

  if (use_opus_fixed_point) {
    defines += [ "FIXED_POINT" ]
    include_dirs += [ "src/silk/fixed" ]
  } else {
    include_dirs += [ "src/silk/float" ]
  }

  if (use_opus_arm_optimization) {
    if (current_cpu == "arm") {
      defines += [
        "OPUS_ARM_ASM",
        "OPUS_ARM_INLINE_ASM",
        "OPUS_ARM_INLINE_EDSP",
      ]
    }

    if (use_opus_arm_rtcd) {
      defines += [
        "OPUS_ARM_MAY_HAVE_EDSP",
        "OPUS_ARM_MAY_HAVE_MEDIA",
        "OPUS_HAVE_RTCD",
      ]
    }

    if (arm_use_neon) {
      defines += [
        "OPUS_ARM_MAY_HAVE_NEON",
        "OPUS_ARM_MAY_HAVE_NEON_INTR",
      ]
    }

    if (is_ios && current_cpu == "arm64") {
      # Runtime detection of CPU features not available on iOS.
      defines += [
        "OPUS_ARM_PRESUME_NEON_INTR",
        "OPUS_ARM_PRESUME_AARCH64_NEON_INTR",
      ]
    }
  }
}

config("opus_test_config") {
  include_dirs = [
    "src/celt",
    "src/silk",
  ]

  if (is_win) {
    defines = [ "inline=__inline" ]
  }
  if (is_android) {
    libs = [ "log" ]
  }
  if (is_clang) {
    cflags = [ "-Wno-absolute-value" ]
  }
}

if (use_opus_arm_rtcd) {
  action("convert_rtcd_assembler") {
    script = "convert_rtcd_assembler.py"
    outputs = [
      "$target_gen_dir/celt_pitch_xcorr_arm_gnu.S",
    ]
    args = [
      rebase_path("//third_party/opus/src/celt/arm/arm2gnu.pl", root_build_dir),
      rebase_path("//third_party/opus/src/celt/arm/celt_pitch_xcorr_arm.s",
                  root_build_dir),
      rebase_path("$target_gen_dir/celt_pitch_xcorr_arm_gnu.S", root_build_dir),
    ]
  }
}

if (use_opus_x86_optimization) {
  source_set("opus_sse41") {
    sources = [
      "src/celt/x86/pitch_sse4_1.c",
      "src/silk/x86/NSQ_del_dec_sse.c",
      "src/silk/x86/NSQ_sse.c",
      "src/silk/x86/VAD_sse.c",
    ]

    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs += [
      ":opus_private_config",
      ":opus_config",
    ]

    if (!is_win || is_clang) {
      cflags = [ "-msse4.1" ]
    }
  }
  # TODO(dalecurtis): If libopus ever adds AVX support, add an opus_avx block.
}

# Note: Do not add any defines or include_dirs to this target, those should all
# go in the opus_private_config so they can be shared with intrinsic targets.
static_library("opus") {
  sources = [
    "src/celt/_kiss_fft_guts.h",
    "src/celt/arch.h",
    "src/celt/bands.c",
    "src/celt/bands.h",
    "src/celt/celt.c",
    "src/celt/celt.h",
    "src/celt/celt_decoder.c",
    "src/celt/celt_encoder.c",
    "src/celt/celt_lpc.c",
    "src/celt/celt_lpc.h",
    "src/celt/cpu_support.h",
    "src/celt/cwrs.c",
    "src/celt/cwrs.h",
    "src/celt/ecintrin.h",
    "src/celt/entcode.c",
    "src/celt/entcode.h",
    "src/celt/entdec.c",
    "src/celt/entdec.h",
    "src/celt/entenc.c",
    "src/celt/entenc.h",
    "src/celt/fixed_debug.h",
    "src/celt/fixed_generic.h",
    "src/celt/float_cast.h",
    "src/celt/kiss_fft.c",
    "src/celt/kiss_fft.h",
    "src/celt/laplace.c",
    "src/celt/laplace.h",
    "src/celt/mathops.c",
    "src/celt/mathops.h",
    "src/celt/mdct.c",
    "src/celt/mdct.h",
    "src/celt/mfrngcod.h",
    "src/celt/modes.c",
    "src/celt/modes.h",
    "src/celt/os_support.h",
    "src/celt/pitch.c",
    "src/celt/pitch.h",
    "src/celt/quant_bands.c",
    "src/celt/quant_bands.h",
    "src/celt/rate.c",
    "src/celt/rate.h",
    "src/celt/stack_alloc.h",
    "src/celt/static_modes_fixed.h",
    "src/celt/static_modes_float.h",
    "src/celt/vq.c",
    "src/celt/vq.h",
    "src/include/opus.h",
    "src/include/opus_custom.h",
    "src/include/opus_defines.h",
    "src/include/opus_multistream.h",
    "src/include/opus_types.h",
    "src/silk/A2NLSF.c",
    "src/silk/API.h",
    "src/silk/CNG.c",
    "src/silk/HP_variable_cutoff.c",
    "src/silk/Inlines.h",
    "src/silk/LPC_analysis_filter.c",
    "src/silk/LPC_fit.c",
    "src/silk/LPC_inv_pred_gain.c",
    "src/silk/LP_variable_cutoff.c",
    "src/silk/MacroCount.h",
    "src/silk/MacroDebug.h",
    "src/silk/NLSF2A.c",
    "src/silk/NLSF_VQ.c",
    "src/silk/NLSF_VQ_weights_laroia.c",
    "src/silk/NLSF_decode.c",
    "src/silk/NLSF_del_dec_quant.c",
    "src/silk/NLSF_encode.c",
    "src/silk/NLSF_stabilize.c",
    "src/silk/NLSF_unpack.c",
    "src/silk/NSQ.c",
    "src/silk/NSQ.h",
    "src/silk/NSQ_del_dec.c",
    "src/silk/PLC.c",
    "src/silk/PLC.h",
    "src/silk/SigProc_FIX.h",
    "src/silk/VAD.c",
    "src/silk/VQ_WMat_EC.c",
    "src/silk/ana_filt_bank_1.c",
    "src/silk/biquad_alt.c",
    "src/silk/bwexpander.c",
    "src/silk/bwexpander_32.c",
    "src/silk/check_control_input.c",
    "src/silk/code_signs.c",
    "src/silk/control.h",
    "src/silk/control_SNR.c",
    "src/silk/control_audio_bandwidth.c",
    "src/silk/control_codec.c",
    "src/silk/debug.c",
    "src/silk/debug.h",
    "src/silk/dec_API.c",
    "src/silk/decode_core.c",
    "src/silk/decode_frame.c",
    "src/silk/decode_indices.c",
    "src/silk/decode_parameters.c",
    "src/silk/decode_pitch.c",
    "src/silk/decode_pulses.c",
    "src/silk/decoder_set_fs.c",
    "src/silk/define.h",
    "src/silk/enc_API.c",
    "src/silk/encode_indices.c",
    "src/silk/encode_pulses.c",
    "src/silk/errors.h",
    "src/silk/gain_quant.c",
    "src/silk/init_decoder.c",
    "src/silk/init_encoder.c",
    "src/silk/inner_prod_aligned.c",
    "src/silk/interpolate.c",
    "src/silk/lin2log.c",
    "src/silk/log2lin.c",
    "src/silk/macros.h",
    "src/silk/main.h",
    "src/silk/pitch_est_defines.h",
    "src/silk/pitch_est_tables.c",
    "src/silk/process_NLSFs.c",
    "src/silk/quant_LTP_gains.c",
    "src/silk/resampler.c",
    "src/silk/resampler_down2.c",
    "src/silk/resampler_down2_3.c",
    "src/silk/resampler_private.h",
    "src/silk/resampler_private_AR2.c",
    "src/silk/resampler_private_IIR_FIR.c",
    "src/silk/resampler_private_down_FIR.c",
    "src/silk/resampler_private_up2_HQ.c",
    "src/silk/resampler_rom.c",
    "src/silk/resampler_rom.h",
    "src/silk/resampler_structs.h",
    "src/silk/shell_coder.c",
    "src/silk/sigm_Q15.c",
    "src/silk/sort.c",
    "src/silk/stereo_LR_to_MS.c",
    "src/silk/stereo_MS_to_LR.c",
    "src/silk/stereo_decode_pred.c",
    "src/silk/stereo_encode_pred.c",
    "src/silk/stereo_find_predictor.c",
    "src/silk/stereo_quant_pred.c",
    "src/silk/structs.h",
    "src/silk/sum_sqr_shift.c",
    "src/silk/table_LSF_cos.c",
    "src/silk/tables.h",
    "src/silk/tables_LTP.c",
    "src/silk/tables_NLSF_CB_NB_MB.c",
    "src/silk/tables_NLSF_CB_WB.c",
    "src/silk/tables_gain.c",
    "src/silk/tables_other.c",
    "src/silk/tables_pitch_lag.c",
    "src/silk/tables_pulses_per_block.c",
    "src/silk/tuning_parameters.h",
    "src/silk/typedef.h",
    "src/src/analysis.c",
    "src/src/analysis.h",
    "src/src/mlp.c",
    "src/src/mlp.h",
    "src/src/mlp_data.c",
    "src/src/opus.c",
    "src/src/opus_decoder.c",
    "src/src/opus_encoder.c",
    "src/src/opus_multistream.c",
    "src/src/opus_multistream_decoder.c",
    "src/src/opus_multistream_encoder.c",
    "src/src/repacketizer.c",
    "src/src/tansig_table.h",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_private_config",
  ]
  public_configs = [ ":opus_config" ]

  if (!is_debug && (current_cpu == "arm" || current_cpu == "arm64")) {
    configs -= [ "//build/config/compiler:default_optimization" ]

    # TODO(crbug.com/621335) Rework this so that we don't have the confusion
    # between "optimize_speed" and "optimize_max".
    configs += [ "//build/config/compiler:optimize_speed" ]
  }

  deps = []

  if (use_opus_x86_optimization) {
    sources += [
      "src/celt/x86/celt_lpc_sse.h",
      "src/celt/x86/pitch_sse.c",
      "src/celt/x86/pitch_sse.h",
      "src/celt/x86/pitch_sse2.c",
      "src/celt/x86/vq_sse.h",
      "src/celt/x86/vq_sse2.c",
      "src/celt/x86/x86_celt_map.c",
      "src/celt/x86/x86cpu.c",
      "src/celt/x86/x86cpu.h",
      "src/silk/x86/SigProc_FIX_sse.h",
      "src/silk/x86/main_sse.h",
      "src/silk/x86/x86_silk_map.c",
    ]
    deps += [ ":opus_sse41" ]
  }

  if (use_opus_fixed_point) {
    sources += [
      "src/silk/fixed/LTP_analysis_filter_FIX.c",
      "src/silk/fixed/LTP_scale_ctrl_FIX.c",
      "src/silk/fixed/apply_sine_window_FIX.c",
      "src/silk/fixed/autocorr_FIX.c",
      "src/silk/fixed/burg_modified_FIX.c",
      "src/silk/fixed/corrMatrix_FIX.c",
      "src/silk/fixed/encode_frame_FIX.c",
      "src/silk/fixed/find_LPC_FIX.c",
      "src/silk/fixed/find_LTP_FIX.c",
      "src/silk/fixed/find_pitch_lags_FIX.c",
      "src/silk/fixed/find_pred_coefs_FIX.c",
      "src/silk/fixed/k2a_FIX.c",
      "src/silk/fixed/k2a_Q16_FIX.c",
      "src/silk/fixed/main_FIX.h",
      "src/silk/fixed/noise_shape_analysis_FIX.c",
      "src/silk/fixed/pitch_analysis_core_FIX.c",
      "src/silk/fixed/process_gains_FIX.c",
      "src/silk/fixed/regularize_correlations_FIX.c",
      "src/silk/fixed/residual_energy16_FIX.c",
      "src/silk/fixed/residual_energy_FIX.c",
      "src/silk/fixed/schur64_FIX.c",
      "src/silk/fixed/schur_FIX.c",
      "src/silk/fixed/structs_FIX.h",
      "src/silk/fixed/vector_ops_FIX.c",
      "src/silk/fixed/warped_autocorrelation_FIX.c",
    ]
  } else {
    sources += [
      "src/silk/float/LPC_analysis_filter_FLP.c",
      "src/silk/float/LPC_inv_pred_gain_FLP.c",
      "src/silk/float/LTP_analysis_filter_FLP.c",
      "src/silk/float/LTP_scale_ctrl_FLP.c",
      "src/silk/float/SigProc_FLP.h",
      "src/silk/float/apply_sine_window_FLP.c",
      "src/silk/float/autocorrelation_FLP.c",
      "src/silk/float/burg_modified_FLP.c",
      "src/silk/float/bwexpander_FLP.c",
      "src/silk/float/corrMatrix_FLP.c",
      "src/silk/float/encode_frame_FLP.c",
      "src/silk/float/energy_FLP.c",
      "src/silk/float/find_LPC_FLP.c",
      "src/silk/float/find_LTP_FLP.c",
      "src/silk/float/find_pitch_lags_FLP.c",
      "src/silk/float/find_pred_coefs_FLP.c",
      "src/silk/float/inner_product_FLP.c",
      "src/silk/float/k2a_FLP.c",
      "src/silk/float/main_FLP.h",
      "src/silk/float/noise_shape_analysis_FLP.c",
      "src/silk/float/pitch_analysis_core_FLP.c",
      "src/silk/float/process_gains_FLP.c",
      "src/silk/float/regularize_correlations_FLP.c",
      "src/silk/float/residual_energy_FLP.c",
      "src/silk/float/scale_copy_vector_FLP.c",
      "src/silk/float/scale_vector_FLP.c",
      "src/silk/float/schur_FLP.c",
      "src/silk/float/sort_FLP.c",
      "src/silk/float/structs_FLP.h",
      "src/silk/float/warped_autocorrelation_FLP.c",
      "src/silk/float/wrappers_FLP.c",
    ]
  }

  if (use_opus_arm_optimization) {
    sources += [
      "src/celt/arm/fixed_arm64.h",
      "src/celt/arm/fixed_armv4.h",
      "src/celt/arm/fixed_armv5e.h",
      "src/celt/arm/kiss_fft_armv4.h",
      "src/celt/arm/kiss_fft_armv5e.h",
      "src/celt/arm/pitch_arm.h",
      "src/silk/arm/SigProc_FIX_armv4.h",
      "src/silk/arm/SigProc_FIX_armv5e.h",
      "src/silk/arm/macros_arm64.h",
      "src/silk/arm/macros_armv4.h",
      "src/silk/arm/macros_armv5e.h",
    ]

    if (use_opus_arm_rtcd) {
      sources += [
        "$target_gen_dir/celt_pitch_xcorr_arm_gnu.S",
        "src/celt/arm/arm_celt_map.c",
        "src/celt/arm/armcpu.c",
        "src/celt/arm/armcpu.h",
        "src/celt/arm/fft_arm.h",
        "src/celt/arm/mdct_arm.h",
        "src/celt/arm/pitch_arm.h",
        "src/silk/arm/arm_silk_map.c",
      ]
      deps += [ ":convert_rtcd_assembler" ]
    }

    if (arm_use_neon) {
      sources += [
        "src/celt/arm/celt_neon_intr.c",
        "src/celt/arm/pitch_neon_intr.c",
        "src/silk/arm/LPC_inv_pred_gain_arm.h",
        "src/silk/arm/LPC_inv_pred_gain_neon_intr.c",
        "src/silk/arm/NSQ_del_dec_arm.h",
        "src/silk/arm/NSQ_del_dec_neon_intr.c",
        "src/silk/arm/NSQ_neon.c",
        "src/silk/arm/NSQ_neon.h",
        "src/silk/arm/biquad_alt_arm.h",
        "src/silk/arm/biquad_alt_neon_intr.c",
        "src/silk/fixed/arm/warped_autocorrelation_FIX_arm.h",
        "src/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c",
      ]
    }
  }
}

executable("opus_compare") {
  sources = [
    "src/src/opus_compare.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
  ]

  deps = [
    ":opus",
    "//build/win:default_exe_manifest",
  ]
}

executable("opus_demo") {
  sources = [
    "src/src/opus_demo.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
  ]

  deps = [
    ":opus",
    "//build/win:default_exe_manifest",
  ]
}

test("test_opus_api") {
  sources = [
    "src/tests/test_opus_api.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
  ]

  deps = [
    ":opus",
  ]
}

test("test_opus_encode") {
  sources = [
    "src/tests/opus_encode_regressions.c",
    "src/tests/test_opus_encode.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
  ]

  deps = [
    ":opus",
  ]
}

# GN orders flags on a target before flags from configs. The default config
# adds -Wall, and this flag have to be after -Wall -- so they need to
# come from a config and can't be on the target directly.
config("test_opus_decode_config") {
  # test_opus_decode passes a null pointer to opus_decode() for an argument
  # marked as requiring a non-null value by the nonnull function attribute,
  # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid
  # a compilation error if -Werror is specified.
  if (is_clang) {
    cflags = [ "-Wno-nonnull" ]
  }
}

test("test_opus_decode") {
  sources = [
    "src/tests/test_opus_decode.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
    ":test_opus_decode_config",
  ]

  deps = [
    ":opus",
  ]
}

test("test_opus_padding") {
  sources = [
    "src/tests/test_opus_padding.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":opus_test_config",
  ]

  deps = [
    ":opus",
  ]
}
