# 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.

config("flac_config") {
  defines = [
    "FLAC__NO_DLL",
  ]
}
source_set("flac") {
  sources = [
    "include/FLAC/all.h",
    "include/FLAC/assert.h",
    "include/FLAC/callback.h",
    "include/FLAC/export.h",
    "include/FLAC/format.h",
    "include/FLAC/metadata.h",
    "include/FLAC/ordinals.h",
    "include/FLAC/stream_decoder.h",
    "include/FLAC/stream_encoder.h",
    "include/share/alloc.h",
    "src/libFLAC/alloc.c",
    "src/libFLAC/bitmath.c",
    "src/libFLAC/bitreader.c",
    "src/libFLAC/bitwriter.c",
    "src/libFLAC/cpu.c",
    "src/libFLAC/crc.c",
    "src/libFLAC/fixed.c",
    "src/libFLAC/float.c",
    "src/libFLAC/format.c",
    "src/libFLAC/lpc.c",
    "src/libFLAC/md5.c",
    "src/libFLAC/memory.c",
    "src/libFLAC/stream_decoder.c",
    "src/libFLAC/stream_encoder.c",
    "src/libFLAC/stream_encoder_framing.c",
    "src/libFLAC/window.c",
    "src/libFLAC/include/private/all.h",
    "src/libFLAC/include/private/bitmath.h",
    "src/libFLAC/include/private/bitreader.h",
    "src/libFLAC/include/private/bitwriter.h",
    "src/libFLAC/include/private/cpu.h",
    "src/libFLAC/include/private/crc.h",
    "src/libFLAC/include/private/fixed.h",
    "src/libFLAC/include/private/float.h",
    "src/libFLAC/include/private/format.h",
    "src/libFLAC/include/private/lpc.h",
    "src/libFLAC/include/private/md5.h",
    "src/libFLAC/include/private/memory.h",
    "src/libFLAC/include/private/metadata.h",
    "src/libFLAC/include/private/stream_encoder_framing.h",
    "src/libFLAC/include/private/window.h",
    "src/libFLAC/include/protected/all.h",
    "src/libFLAC/include/protected/stream_decoder.h",
    "src/libFLAC/include/protected/stream_encoder.h",
  ]

  if (is_starboard) {
    deps = [
      "//starboard:starboard_headers_only",
      "//starboard/common",
    ]
  }

  if (is_starboard) {
    public_configs = [ ":flac_config" ]
  } else {
    configs -= [ "//build/config/compiler:chromium_code" ]
    direct_dependent_configs = [ ":flac_config" ]
  }

  configs += [
    ":flac_config",
    "//build/config/compiler:no_chromium_code",
  ]

  include_dirs = [
    "include",
    "src/libFLAC/include",
  ]

  defines = [
    "FLAC__OVERFLOW_DETECT",
    "VERSION=\"1.2.1\"",
  ]

  if (is_clang) {
    # libflac converts between FLAC__StreamDecoderState and
    # FLAC__StreamDecoderInitStatus a lot in stream_decoder.c.
    cflags = [
      "-Wno-conversion",
    ]
  }
}

