# Copyright 2017 Google Inc. All Rights Reserved.
#
# 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.

libvpx_source = "//third_party/libvpx"

static_library("libvpx") {
  # This list was generated by running configure and then
  # make libvpx_srcs.txt
  sources = [
    "platforms/linux-x64/vp9_rtcd.h",
    "platforms/linux-x64/vpx_config.c",
    "platforms/linux-x64/vpx_config.h",
    "platforms/linux-x64/vpx_dsp_rtcd.h",
    "platforms/linux-x64/vpx_scale_rtcd.h",
    "platforms/linux-x64/vpx_version.h",
    "vp9/common/vp9_alloccommon.c",
    "vp9/common/vp9_alloccommon.h",
    "vp9/common/vp9_blockd.c",
    "vp9/common/vp9_blockd.h",
    "vp9/common/vp9_common.h",
    "vp9/common/vp9_common_data.c",
    "vp9/common/vp9_common_data.h",
    "vp9/common/vp9_debugmodes.c",
    "vp9/common/vp9_entropy.c",
    "vp9/common/vp9_entropy.h",
    "vp9/common/vp9_entropymode.c",
    "vp9/common/vp9_entropymode.h",
    "vp9/common/vp9_entropymv.c",
    "vp9/common/vp9_entropymv.h",
    "vp9/common/vp9_enums.h",
    "vp9/common/vp9_filter.c",
    "vp9/common/vp9_filter.h",
    "vp9/common/vp9_frame_buffers.c",
    "vp9/common/vp9_frame_buffers.h",
    "vp9/common/vp9_idct.c",
    "vp9/common/vp9_idct.h",
    "vp9/common/vp9_loopfilter.c",
    "vp9/common/vp9_loopfilter.h",
    "vp9/common/vp9_mv.h",
    "vp9/common/vp9_mvref_common.c",
    "vp9/common/vp9_mvref_common.h",
    "vp9/common/vp9_onyxc_int.h",
    "vp9/common/vp9_ppflags.h",
    "vp9/common/vp9_pred_common.c",
    "vp9/common/vp9_pred_common.h",
    "vp9/common/vp9_quant_common.c",
    "vp9/common/vp9_quant_common.h",
    "vp9/common/vp9_reconinter.c",
    "vp9/common/vp9_reconinter.h",
    "vp9/common/vp9_reconintra.c",
    "vp9/common/vp9_reconintra.h",
    "vp9/common/vp9_rtcd.c",
    "vp9/common/vp9_scale.c",
    "vp9/common/vp9_scale.h",
    "vp9/common/vp9_scan.c",
    "vp9/common/vp9_scan.h",
    "vp9/common/vp9_seg_common.c",
    "vp9/common/vp9_seg_common.h",
    "vp9/common/vp9_textblit.h",
    "vp9/common/vp9_thread_common.c",
    "vp9/common/vp9_thread_common.h",
    "vp9/common/vp9_tile_common.c",
    "vp9/common/vp9_tile_common.h",
    "vp9/common/x86/vp9_idct_intrin_sse2.c",
    "vp9/decoder/vp9_decodeframe.c",
    "vp9/decoder/vp9_decodeframe.h",
    "vp9/decoder/vp9_decodemv.c",
    "vp9/decoder/vp9_decodemv.h",
    "vp9/decoder/vp9_decoder.c",
    "vp9/decoder/vp9_decoder.h",
    "vp9/decoder/vp9_detokenize.c",
    "vp9/decoder/vp9_detokenize.h",
    "vp9/decoder/vp9_dsubexp.c",
    "vp9/decoder/vp9_dsubexp.h",
    "vp9/decoder/vp9_dthread.c",
    "vp9/decoder/vp9_dthread.h",
    "vp9/vp9_dx_iface.c",
    "vp9/vp9_dx_iface.h",
    "vp9/vp9_iface_common.h",
    "vpx/internal/vpx_codec_internal.h",
    "vpx/internal/vpx_psnr.h",
    "vpx/src/vpx_codec.c",
    "vpx/src/vpx_decoder.c",
    "vpx/src/vpx_encoder.c",
    "vpx/src/vpx_image.c",
    "vpx/src/vpx_psnr.c",
    "vpx/vp8.h",
    "vpx/vp8dx.h",
    "vpx/vpx_codec.h",
    "vpx/vpx_decoder.h",
    "vpx/vpx_encoder.h",
    "vpx/vpx_frame_buffer.h",
    "vpx/vpx_image.h",
    "vpx/vpx_integer.h",
    "vpx_dsp/add_noise.c",
    "vpx_dsp/bitreader.c",
    "vpx_dsp/bitreader.h",
    "vpx_dsp/bitreader_buffer.c",
    "vpx_dsp/bitreader_buffer.h",
    "vpx_dsp/intrapred.c",
    "vpx_dsp/inv_txfm.c",
    "vpx_dsp/inv_txfm.h",
    "vpx_dsp/loopfilter.c",
    "vpx_dsp/prob.c",
    "vpx_dsp/prob.h",
    "vpx_dsp/txfm_common.h",
    "vpx_dsp/variance.c",
    "vpx_dsp/variance.h",
    "vpx_dsp/vpx_convolve.c",
    "vpx_dsp/vpx_convolve.h",
    "vpx_dsp/vpx_dsp_common.h",
    "vpx_dsp/vpx_dsp_rtcd.c",
    "vpx_dsp/vpx_filter.h",
    "vpx_dsp/x86/convolve.h",
    "vpx_dsp/x86/loopfilter_sse2.c",
    "vpx_dsp/x86/vpx_asm_stubs.c",
    "vpx_mem/include/vpx_mem_intrnl.h",
    "vpx_mem/vpx_mem.c",
    "vpx_mem/vpx_mem.h",
    "vpx_ports/bitops.h",
    "vpx_ports/emmintrin_compat.h",
    "vpx_ports/mem.h",
    "vpx_ports/mem_ops.h",
    "vpx_ports/mem_ops_aligned.h",
    "vpx_ports/msvc.h",
    "vpx_ports/system_state.h",
    "vpx_ports/vpx_once.h",
    "vpx_ports/vpx_timer.h",
    "vpx_ports/x86.h",
    "vpx_scale/generic/gen_scalers.c",
    "vpx_scale/generic/vpx_scale.c",
    "vpx_scale/generic/yv12config.c",
    "vpx_scale/generic/yv12extend.c",
    "vpx_scale/vpx_scale.h",
    "vpx_scale/vpx_scale_rtcd.c",
    "vpx_scale/yv12config.h",
    "vpx_util/endian_inl.h",
    "vpx_util/vpx_thread.c",
    "vpx_util/vpx_thread.h",
  ]

  include_dirs = [
    "$libvpx_source",
    "$libvpx_source/platforms/linux-x64",
    "$libvpx_source/vpx_mem/memory_manager/include/",
  ]

  # Always optimize libvpx at max optimization.
  # Debug performance is too slow.
  configs -= [ "//starboard/build/config:default_optimizations" ]
  configs += [ "//starboard/build/config:full_optimizations" ]
}
